본문 바로가기

어셈블리어 공부용/x86 어셈블리어(ASSEMBLY)21

emu8086으로 어셈블리어 연습 [10진수를 입력받아 16진수로 저장하기.] START: ; START 라벨입니다. 저장처리가 끝나고나면 돌아와서 또 다른수를 입력하러 돌아옵니다. MOV AH, 01 ; 한 문자를 입력받는 기능번호 1번을 AH레지스터에 저장. INT 21h ; SUB AL, 30h ; 문자 하나를 입력받은뒤 30h를 빼줍니다. 이유는 아래에서 설명하겠습니다. JL ENDPROG ; 연산결과가 0보다 작다면 ENDPROG로 분기합니다. (수가 아닌 다른 문자 입력했다는 뜻.) CMP AL,9 ; 만일 9와 비교해서 수가 크다면? JG ENDPROG ; ENDPROG로 분기해줍니다.(수가 아닌 다른문자 입력했다는 뜻.) CBW ; AL레지스터값을 AX값으로 만들어 줍니다. 이유는 아래에서 설명하겠습니다. XCHG AX,BX ; AX값과 BX값을 맞바꾸어 줍니다. 최.. 2019. 8. 15.
emu8086 어셈블러로 어셈블리어 연습 [소문자는 대문자로, 대문자는 소문자로 바꾸어 출력하게 하기] .MODEL SMALL ;메모리크기 설정 .STACK .CODE ;여기 아래부터 코드시작 MOV AH,1 ;사용자로부터 문자하나를 입력받을 준비. 입력받은 문자는 AL 레지스터에 저장된다. INT 21h CMP AL,40h ;입력받은 문자가 대문자인가 소문자인가? JG ISAA ;일단 40h부터 크다면 세부 탐색으로 넘기기 (소문자인가 대문자인가) JZ DISP2 ;해당사항 없으면 그대로 출력 JL DISP2 ;해당사항 없으면 그대로 출력 ISAA: ;세부탐색구간 CMP AL, 5Bh ;5b아스키코드와 비교해보자. JG LOWER ;입력한 문자의 아스키코드값이 더 크다? 우선 소문자로 판별. JL UPPER ;작다면 대문자로 판별. UPPER: ;입력한 문자가 대문자로 결정됐을때. ADD AL,20h ;.. 2019. 8. 15.
DOS DEBUG로 어셈블리어 연습 [z에서 a까지 역순으로 알파벳 출력하기] MOV CX, 1A ; CX 레지스터에 1Ah를 수록합니다. 알파벳의 수 만큼 LOOP문을 작동시키기 위함입니다. MOV DL, 7A ; DL 레지스터에 7Ah를 수록합니다. 아스키코드표에서 'Z'에 해당됩니다. MOV AH, 02 ; AH 레지스터에 기능번호 2를 수록합니다. 한 글자 출력하는 역활을 합니다. INT 21 ; 명령 실행 DEC DL ; DL레지스터에 1을 뺍니다. 알파벳이 역순으로 갑니다. LOOP 105 ; 세 번째 코드(MOV AH,02)로 돌아갑니다. INT 20 ; 실행 종료 알파벳을 순서대로 출력할 때는 INC 명령어를 사용했었습니다. 여기서는 반대로 가야하니까 값을 1씩 줄이기 위하여 DEC 명령어를 사용했습니다. 코드 작성화면, 실행 확인. 2019. 8. 15.
DOS DEBUG로 어셈블리어 연습 [아스키코드전체를 2번만 출력하기] ※참고 아래 링크에 아스키 코드가 정리되어 있습니다. IBM Knowledge Center Please note that DISQUS operates this forum. When you sign in to comment, IBM will provide your email, first name and last name to DISQUS. That information, along with your comments, will be governed by DISQUS’ privacy policy. By commenting, you are accept www.ibm.com MOV CX, 1FE ;cx레지스터에 1FE(십진수로 510)를 수록합니다. 이 레지스터는 LOOP문의 반복횟수와 관계있음. MOV DL,0.. 2019. 8. 15.
DOS DEBUG로 어셈블리어연습 [아스키 문자들 전부 무한히 표시하기] ※참고 아래 링크에 아스키 코드가 정리되어 있습니다. IBM Knowledge Center Please note that DISQUS operates this forum. When you sign in to comment, IBM will provide your email, first name and last name to DISQUS. That information, along with your comments, will be governed by DISQUS’ privacy policy. By commenting, you are accept www.ibm.com MOV DL,0 ; DL레지스터에 아스키코드의 맨 처음을 수록합니다. MOV AH,02 ; AH레지스터에 실행명령 02를 수록합니다. INT.. 2019. 8. 15.
DOS DEBUG로 어셈블리어 연습 [JMP문을 이용해서 A 무한출력하기] MOV DL, 41 ; DL레지스터에 대문자 A(아스키코드로 41h)를 수록합니다. MOV AH, 02 ; 한 문자를 출력하는 기능번호를 AH레지스터에 수록합니다. INT 21 ; 레지스터에 넣은 명령을 실행시킵니다. JMP 100 ; 맨 처음으로 돌아갑니다. 코드작성화면 실행확인. 2019. 8. 15.