증가, 감소 명령
INC (increment)
![](https://velog.velcdn.com/images/hseop/post/b09b6979-80bd-43dd-91c3-65c8ed364fcb/image.png)
DEC (decrement)
![](https://velog.velcdn.com/images/hseop/post/9bc8141c-2c07-4788-a337-6a9fea2445cb/image.png)
키 입력 방법
echo 있는 입력
![](https://velog.velcdn.com/images/hseop/post/f44ecb43-fa1a-4e64-9dd4-aae862fe13f8/image.png)
echo 없는 입력
![](https://velog.velcdn.com/images/hseop/post/14c41f3a-e1c5-4778-ae5e-706f7cb1b107/image.png)
비교 명령어
CMP (Compare)
- 비교 결과에 따라 flag에 영향이 간다. 그 flag로 action을 취한다.
![](https://velog.velcdn.com/images/hseop/post/531a5971-12fd-4929-aa89-b1c91b054777/image.png)
TEST
- 두 개의 operand를 AND 취함
![](https://velog.velcdn.com/images/hseop/post/6a2aa192-fb4f-4fe0-8675-ca66b34c8d2b/image.png)
분기 명령어의 비교
![](https://velog.velcdn.com/images/hseop/post/387189ed-9335-4079-a5c6-16a78eebcf5f/image.png)
JMP label
CODE SEGMENT
ASSUME CS : CODE
NEXT : MOV AH, 1 ; 1문자 입력
INT 21H
MOV DL, AL
INC DL
MOV AH, 2 ; 1문자 출력
INT 21H
JMP NEXT ; 무조건 분기하여 다시 입력 받음
MOV AH, 4CH
INT 21H
CODE ENDS
END
분기 명령어
![](https://velog.velcdn.com/images/hseop/post/69ab30e4-aab2-4050-8e2d-e72d6bef2f0a/image.png)
- JA : A > B
- JNB, JAE : A >= B
- JE : A == B
- JBE : A <= B
- JB : A < B
- JNE : A != B
반복 명령어
![](https://velog.velcdn.com/images/hseop/post/4ebb3591-33fa-4ccf-89de-3e0058810cf9/image.png)
- LOOP label은 CX를 사용하여 반복한다.
![](https://velog.velcdn.com/images/hseop/post/0b3b1112-3437-4890-8204-2d29e0eca200/image.png)
Stack
- PUSH, POP은 2 Bytes씩 증가, 감소
![](https://velog.velcdn.com/images/hseop/post/f7b65f69-326b-4e69-bee7-1c65fea84276/image.png)
![](https://velog.velcdn.com/images/hseop/post/bbac32e5-83b8-4442-954e-7c8062339a78/image.png)
example
CODE SEGMENT
ASSUME CS : CODE
MOV AX, 1234H
MOV BX, 5678H ; SP = 0
PUSH AX ; SP = FFFEH
PUSH BX ; SP = FFFCH
PUSHF ; SP = FFFAH
MOV AX, 2468H
MOV BX, 2468H
SUB AX, BX
POPF ; SP = FFFCH
POP BX ; SP = FFFEH
POP AX ; SP = 0
MOV AH, 4CH
INT 21h
CODE ENDS
END
Subroutine
![](https://velog.velcdn.com/images/hseop/post/2cdf3b6b-51bb-4c97-8ebd-5f58a70ed0d8/image.png)
example 1
; Subroutine 사용법
; ex) 0~9 숫자를 문자로 바꾸어 출력
CODE SEGMENT
ASSUME CS: CODE
MOV CL, 0
NEXT : CALL PUTNUM ; subroutine 호출 (되돌아올 주소 0005H를 Stack에 PUSH)
INC CL ; CL += 1
CMP CL, 10
JB NEXT ; if CL < 10 ? NEXT
MOV AH, 4CH ; if CL >= 10 ? exit
INT 21H
PUTNUM : MOV DL, CL
ADD DL, '0' ; 0 -> '0'
MOV AH, 2
INT 21h
RET ; Stack에서 POP하여 0005H를 IP값으로
CODE ENDS
END
example 2
- 16진수(8 bit register값)을 화면에 표시
![](https://velog.velcdn.com/images/hseop/post/c1ab6473-191d-435a-89ad-83fbfeed4d21/image.png)