CODE SEGMENT
ASSUME CS : CODE
MOV AH, 12H
MOV AL, 34H
ADD AH, AL
MOV AH, 4CH ; program 종료
INT 21H
CODE ENDS
END
CODE SEGMENT
ASSUME CS : CODE, DS : DATA
MOV AX, DATA
MOV DS, AX
MOV DL, SCR_1
MOV AH, 2
INT 21H
MOV CX, SCR_2
MOV DL, CH
MOV AH, 2
INT 21H
MOV DL, CL
MOV AH, 2
INT 21H
MOV AH, 4CH
INT 21H
CODE ENDS
DATA SEGMENT
SCR_1 DB 'A' ; 1 Byte
SCR_2 DW 4243H ; 2 Bytes
DATA ENDS
END
== Operand의 내용이나 장소를 지정하는 방식
Immediate addressing
: 원하는 register에 직접 수치 대입Direct addressing
: Register의 내용을 원하는 register에 직접 전송Memory reference addressing
: 전송하는 값이 저장되어 있는 번지를 지정; 주소 지정 방식
CODE SEGMENT
ASSUME CS : CODE , DS : CODE
CR EQU 0DH
LF EQU 00AH
MOV AX, CODE
MOV DS, AX
MOV BX, OFFSET BUFFER ; BUFFER라는 data의 OFFSET주소값을 BX에 저장
MOV SI, 2 ; SI = 2
MOV DL, [BX + SI] ; DL = BUFFER라는 data의 OFFSET주소 + 2 = 'e'의 주소 + 2 = 'a'
MOV AH, 2
INT 21H ; DL 출력 : 'a'
MOV DL, [BX + SI + 1] ; DL = BUFFER라는 data의 OFFSET주소 + 2 + 1 = 'e'의 주소 + 3 = 'm'
MOV AH, 2
INT 21H
MOV DL, CR ; Carrige Return (줄바꿈)
MOV AH, 2
INT 21H
MOV DL, LF ; Line Feed (줄바꿈)
MOV AH, 2
INT 21H
MOV DL, [BX + SI + 2] ; DL = BUFFER라는 data의 OFFSET주소 + 2 + 2 = 'e'의 주소 + 4 = 'p'
MOV AH, 2
INT 21H
MOV AH, 4CH ; program 종료
INT 21H
BUFFER DB 'example.'
CODE ENDS
END
CODE SEGMENT
ASSUME CS : CODE, DS : DATA
MOV AX, DATA
MOV DS, AX
MOV AX, 1223H
MOV BX, 8000H
MOV CX, 2000H
MOV DX, 8123H
ADD BX, DX ; Carry Flag가 1로 set
ADC AX, CX ; Carry와 함께 덧셈
MOV VAR1, AX
MOV VAR2, BX
MOV AH, 4CH
INT 21H
CODE ENDS
DATA SEGMENT
VAR1 DW ? ; 초기화 X
VAR2 DW ? ; 초기화 X
DATA ENDS
END