증가, 감소 명령
INC (increment)
DEC (decrement)
키 입력 방법
echo 있는 입력
echo 없는 입력
비교 명령어
CMP (Compare)
- 비교 결과에 따라 flag에 영향이 간다. 그 flag로 action을 취한다.
TEST
- 두 개의 operand를 AND 취함
분기 명령어의 비교
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
분기 명령어
- JA : A > B
- JNB, JAE : A >= B
- JE : A == B
- JBE : A <= B
- JB : A < B
- JNE : A != B
반복 명령어
- LOOP label은 CX를 사용하여 반복한다.
Stack
- PUSH, POP은 2 Bytes씩 증가, 감소
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
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값)을 화면에 표시