http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=1133 []
ʿѰ.
--------------------------------------------------------------------------------
ӿ ƾ ۼϱؼ ʿ ƴ϶.
ũ ǻ ý ߾˱ Ͽ ʿѰ̴.
ͳ I/O ⸦ ϴµ, Ҽ
Ҽִ ̴.
CPU Ҽִ ġ ۿ Ҽ ϴ.
ǻ Ȯ ũξ:
δ Ҷ Ǵ Դϴ.
: 1 1 ϴ
: ҽ α ۼִ
.
MASM ⺰ ϹǷ Ʈ ȿϰ Ȱ Ҽִ.
MASM ߹ : ƽŰ ڿν ϴ Ͷ
̵ Ҽִ.
Ŀ :
ȭ ļ ϳ α Ŀ Ȱ̰ Ŀ
Է Ǵ ȭ ߰ ȭ Ʈ ȭ Դϴ.
̺귯 :
⺰ ߵ Ʈȭ ȭ ļ ϳ ̺귯 ȭ ̶
ۼ صӴϴ. ũÿ ̺귯 ϴ ε ߿ ʿ
Ʈ ȭϸ ڵ ϴ մϴ.
CPU ϳ
--------------------------------------------------------------------------------
Ϸ : ۾ Ѳ ļ ڿ
:ݾ ϸ鼭
1 ̳ 0 1 Ʈ(bit)
8Ʈ 1Ʈ(byte)
16 Ʈ CPU ? :
CPU Ͱ 16Ʈ ũ,ֺġ ȯ ϴ
16ִ. (16 Ʈ = 2 Ʈ = 1 )
CPU 2 Ʈ ϳ ϰ ־ (= 2Ʈ)
ϴ ȿ ǵ Ǿ Ƿ ȿ
α ۼ Ҷ ̰ غ ʿ䰡 ִ.
Ư , Ҷ 0 1 2 3 ̷ ¦ Ȧ
Ͽ ϸ , ѹ ιƮ б Ⱑ ϹǷ
ó ȿ ˴ϴ.
8068
--------------------------------------------------------------------------------
+---------------+
AX:| AH AL | Accumulator Register ---------+ General-purpose
BX:| BH BL | Base Register | Register
CX:| CH CL | Counter Register |
DX:| DH DL | Data Register |
| SP | Stack Pointer |
| BP | Base Pointer |
| SI | Source Index |
| DI | Destination Index ( ε) -+
| |
| IP | Instruction Pointer
|FLAGS H,FLAGS L| Flag Register
| CS | Code Segment Register ----------+ Segment Register
| DS | Data Segment Register |
| SS | Stack Segment Register |
| ES | Extra Segment Register -------+
+---------------+
*.
CS:ڵ弼Ʈ-CPU ؾ Ǿ ִ Ʈ Ÿ
SI:ҽε - , Ư Ʈɿ ־
ͷ ϱ
DI:Ƽ̼ ε - , Ư Ʈɿ ־
ͷ ϱ
Ҷ
Ʈ
--------------------------------------------------------------------------------
8086 1M Ʈ Ҽ ϴ.
1MƮ 2 20 ̹Ƿ ͷμ 20Ʈ ʿϰ Ǵ°Դϴ.
8086ʹ 16Ʈ ũ ۿ Ƿ 2 ս 20Ʈ
Ÿ Ѵ.
:
2000 H --->Ʈ
+ 3456H ---> IP BX, SI ( а )
------
23456H ̶ : κ () Ÿ.
BX,SI,IP Ϳ Ÿ° ܿ
ġ ɼ ϴ.
0H +--------+
Ʈ ---->20000H--->+--------+
| |
----> 3456H --+--------+-->23456H
| |
° ϸ ڵ Ʈ Ͽ ȴ.
Ʈ ѹ س ,Ʈ ̽κ 64KB
Ѵ ǥҼִ.
Ʈ 뵵
--------------------------------------------------------------------------------
CPU о:
CS:IP , .
ϴ°:
DS: OFFSET () Ͱ Ǿִ
Ҷ:
SS:SP κ õ ϴ
Ʈ Ȥ Ϻΰ ߺǾ Ƿ ʿ ϴٸ
Ʈ ġ Ҽ ϴ.
ؼ
--------------------------------------------------------------------------------
: MOV
Ģ : ADD: , ADC:, SUB:, SBB:
MUL: , IMUL:ȣ ,
DIV: , IDIV:ȣ
CBW: Ʈ ȣȮ
CWD: 忡 ȣȮ
INC: ϳ
DEC: ϳ
.Ʈ:AND: , OR: ,
XOR: Ÿ , NOT: ,NEG: ȣ
SHL: S shift ,H 0 ΰ , L left
ROR: R Rotate,
б : CMP, JMP б,
Above(ũ),Below(۴.) ,Greater( ȣ ؼ ũ.)
Less(ȣ ؼ ۴) ,Equal( ), Not()
LOOP: ݺ
LOOPE: loop if equal ----+ Ǻ ݺ
LOOPNE: loop if not equal ---+
CALL: ƾ б
RET: ƾ ƾ ƿ
Ʈ : LODS: Ϳ ε
STOS: ϴ
LODS, STOS SI Ȥ DI
Ͽ ̸ SI,DI
Ʈ ξ Ѵ.
LODSB,STOSW,MOVSB,MOVSW:
ܵ 1Ʈ,1
RET(repeat) ɰ ս ϸ cx Ͱ
ϴ Ƚŭ ݺϿ մϴ.
̶ ڵ ŵǾǷ ӵ
Ҽ ϴ.
Ʈ ɿ ۿ ʰ Ϳ
ϴ SCAS(scan string),
ϴ CMPS(compare string)
̵ REPE(repeat until equal)
REPNE(repeat until not equal)ɰ ν ġϴ
Ͱ ,Ȥ ġ ʴ Ͱ
, ŽҼ ϴ.
SCASB
REPE SCASW
REPNE CMPSB
REPE CMPSW
I/O : LSI ٵ ´ٵ ϱ I/O
I/O Ʈ OUT
I/O Ʈ IN
Ʈ ȣ ġ Ȥ DX Ͽ
ʹ AX Ȥ AL ̿Ͽ
ͷƮ : INT (interrrupt) ȣ
ͷƮ ó ƾ ƾ
IRET(interrupt return)
CPU : ַ 8086 cpu ġ μ 8087 ̿ Ÿ
Ѵٵ ֺġ READY ȣ ö
ϰ ٸٵ ϱ Դϴ.
WAIT,ESC,LOCK,HLT : ܺ ֱ
MOT: ƹ൵
: Ȥ ÿ ͽŰ
PUSH ,POP ,
÷ ϴ PUSHF,POPF
ΰ Ȥ ȯϴ XCHG
Ʈ N XLAT
÷ ϴ :
STC(set carry flag),CLC(clear carry flag),
CMC(complement carry flag),
STD(set direction flag) ,CLD(clear direction flag),
STI(set interrupt-enable flag)
CLI(clear interrupt-enable flag)
LAHF(load AH from flags ),SAHF(store AH to flags) :
÷ 8Ʈ AH
AAA(ASCII adjust for addition ),
DAA(decimal adjust for addition),
AAS(ASCII adjust for subtract),
DAS(decimal adjust for subtract),
AAM(ASCII adjust for multiply ),
AAD(ASCII adjust for division) :
÷ 8Ʈ AH
(̻ ۷带 )
LEA(load effective address):ȿ ε
LDS(load data segment register),
LES(load extra segment register ):
Ʈ ϴ ȿ ε
--------------------------------------------------------------------------------
L1: MOV AX,BX ;comment
+-----+ +----------+ +-------------+ +-------------+ +----------+
| | |۵ ڵ | | 1 ۷| | 2 ۷| | |
+-----+ +----------+ +------+------+ +-------+-----+ +----------+
^----------------+
ɿ ؼ
2۷ 1 ۷ ̷ ϴ.
L1: ڵ ʰ ,бɵ
ɶ. 꿡 ˴ϴ.
̿ ǻ ̶ ϰ , α ۼϴµ
ȵǴ Դϴ.
ǻ̶ ΰ.?
--------------------------------------------------------------------------------
ҽ(source) α ڵ ȯҶ ʿ ø
ϴ° Դϴ.
() ϴ
L1: MOV AX,BX
............
............
JMP L1 ------> L1 ٶ
̸ Ѵ.
MOV AX,DATA1----> DATA1 ִ 1234H AX ϴ
.......
.......
DATA1 DW 1234H
|
+--------->define word ǻ
PTR - Ÿ Ÿ. BYTE PTR
SEGMENT - Ʈ ̸ MAIN SEGMENT PARA PUBLIC 'CODE'
PUBLIC - ܺ Ÿ. PUBLIC PROC1
IF - Ǿ IF IBMPC EQ TRUE
.........
ENDIF
ǻɿ ʿѰͰ ִ.
ý ȣ̶ ΰ ?
--------------------------------------------------------------------------------
ý ȣ(system call):
ýۿ غǾ ִ ⺻ ƾ ϱ
ͷƮ ý ȣ ϴ.
MS-DOS ַ ͷƮ 21H ,߿ Ŀ( subcommand)
Ѵ.
ýȣ ϸ α ȿ Ҽ ִ.
. ϴ.
1)ٸ OS ̽ Ҷ ״ ݹ ̽Ҽ
2)¿ ƾ 1) ۼϵ 2)ROM ƾ ̿
α߿ ð ɸ.
ǰ Ÿ ȣȯ ٴ ϴ.
̺κ α ߿ ־ ū Դϴ.
(Ǽ ð ũ ϴ Ҽִ.)
̷ ǵǴ Ʈ ߿ BASIC ROM ƾ ϰ
ִ°̳ Ư ͷƮ ó ϰִ°͵ ־ MS-DOS
IBM-PC ̿ ʴ°͵ ִ.
ߴް 뼺 Ȯ ΰ Ǵ ִ.
--------------------------------------------------------------------------------
Ʈ ȭ ̶ : µǴ ߰ȭ
ҽ (source listing): ҽ ȭ µ Ų
Ʈ ȭ
ũν ۷(cross reference): ̳ ̸ ⼭ Ǿ
ǰ ִ° Ʈϴ ȭ Դϴ.
ũ
--------------------------------------------------------------------------------
Ŀ Ȱ Ʈ ȭ ļ ϳ α Ѵٵ,
̺귯 ʿ ƾ α ϴ Ϳ ϴ.
Ʈ (object module) - µǴ Ʈ ȭ
ٸ - + ȣ
ȭ (run file ) - Ŀ ۼ డ ȭ
Ʈ ȭ - డ ȭ ߿ Ʈ νõ ̸ Ÿ
ũ ũ ϴ.
Warning: no STACK segment
There was 1 error detected
üƮ ʾƵ OS ڵ ִ ǾǷ
״ Ҽ ϴ. ( ٸ Ҽ ϴ.)
COM ȭ EXE ȭ ȯ Ͽ ϴ.
EXE2BIN ̿ Ȯڰ .BIN , Ȯڸ BIN ϸ˴ϴ
EXE COM ȭ COM ȭ ȴ.
Ʈ Ǿ ִ EXE ȭ ȯҼ .
COM EXE Ʈ ʱ ̰ ִ
--------------------------------------------------------------------------------
״ α ݾ Ű鼭 ͳ
μ, α ϰ ִ° DZ TOOL Դϴ.
˰ ߸ ãƳ κ
˼ ϴ.
EXE COM
--------------------------------------------------------------------------------
EXE ū α COM α ȴ
MS-DOS డ α ε Ǿ α
PSP(Program Segment Prefix) θ κ ǰ, α ü
ϴ. PSP 100H Ʈ ־ α ʿ
ֽϴ.
EXE
DS ES PSP
CS α Ÿ Ʈ˴ϴ.
SS Ư CS ˴ϴ.
α
CS IP Ÿ ۵˴ϴ.
۹ Ư 0
ҷ (ҽ α END Ѵ.)
()
DS ES PSP κ ϰ Ƿ α ߿ DS ES
Ҷ ݵ ڱⰡ ٽ ȵȴ.
*.EXE Ʈ ʱġ
| |
+-------------+---->DS,ES
| PSP100Ʈ|
+-------------+----->CS,(SS)
| α |----->CS:IP(۹)
+-------------+
| |
COM
COM ȭ ε Ͽ CS,DS,ES,SS 4 ġϿ
PSP ϵ Ʈ˴ϴ.
α ü 100H Ʈ PSP Ŀ η ,
IP ʱġ 100H Ʈ ˴ϴ.
ҽα ۼҶ ORG Ͽ ۹ 100H ͼ
ÿ α ۿ ٿ END ؼ ۹
ʵ˴ϴ.
COM ȭ Ʈ ϸ ȵ˴ϴ.
*.COM Ʈ ʱġ
| |
+------------+--->CS,DS,ES,SS
|PSP100Ʈ|
+------------+--->CS:IP(=100H)
| α | ۹
+------------+
| |
--------------------------------------------------------------------------------
A>DEBUG SAMPLE.EXE
_ ------------> Ʈ
ǥϴ R ĿƮ
U ĿƮ
ϴ G ĿƮ
Ŀ(GO) ۹ = _ G=0,F
Ÿ Q
ѹ Ϸ ϸ .
Program terminated normally
ϴ Ÿ ģ ٽ ó ؾ Ѵ.
α
--------------------------------------------------------------------------------
Ÿ ⵿ ȭ ε ϴ : N Ŀ
ȭ εϴ : L Ŀ
_NSAMPLE.EXE
_L
1ܾ ϴ : T Ŀ
_T=100,20 20 20
T Ŀ ƾ̳ ͷƮ ó ƾ α
ͷƮ ó ƾ̳ ƾ
װ dz ʿ䰡 ϴ.
ƾ dz ٷ : G Ŀ
_G12F
1 : A Ŀ
_A8
2242:0008 CMP DL,5F
2242:000B
ٲ ġ(substitute): S Ŀ
྿ ٲ㾴 յ Ʈ ȭǸ ı˴ϴ.
ȭ Ͽ (WRITE): W Ŀ
డ ȭ EXE COM ȭ ٲپ ϴ.
̰ Ű ȭ ε Ҷ Ư ó Ͽ
· ֱ Դϴ.
ũ ̹ (image) ״ ε DZ
ٽ , ̵ȭ ũ ̹ ̹
̰ Ƿ Ұ Դϴ.
MOV ɰ
° ۸ɿ ؼ ؼ մϴ.
*.Ϳ ġ Ѵ.
*.Ϳ ̿ Ѵ.
*.Ϳ ̿ Ѵ.
ȭ鿡 " AB " ǥ ϴ α
MAIN SEGMENT ; Ʈ ˸ ǻ
ASSUME CS:MAIN ;
;
MOV DL,41H ; ƽŰڵ 41H ' A ' ̴.
MOV AH,2
INT 21H
MOV DL,'B'
MOV BL,2
MOV AH,BL
INT 21H
; ; ܼ Ե
MOV AH,4CH ; α
INT 21H
;
MAIN ENDS
END
ڱⰡ ۼ ҽα ״ Ʈ ȭ .LST
.ǻ , ۾ 帧
Ҷ ߿ ݴϴ.
⼭ MAIN ̸̵ .
ASSUME CS:MAIN
̶ ǻ Ҷ ڵ弼Ʈ(CS:) ϶
MAIN ̶ ̸ Ʈ ϶ ϴ Դϴ.
ASSUME 4 Ʈ(CS,DS,SS,ES) Ʈ ̸ Ű
ϴ.
ݵ CS:(ڵ弼Ʈ )
END . END ۹ Ҽִ.
α ⺻
AMIN SEGMENT
ASSUME CS:MAIN
..........
..........
MAIN ENDS
END
(comment, ּ) ¹
;
Դϴ. ; ڴ Դϴ.
8086 (register)
--------------------------------------------------------------------------------
AX,BX,CX,DX 8 Ʈ Ҽ ִ.
SI,DI,BP,SP 16 Ʈμ ۿ Ҽ .
Ư ǥ ʴ ġ 10μ ˴ϴ.
16 Ҷ ڿ H(Hexa decimal) ٿ ǥմϴ.
ġ ĺ Ҷ " 0 " ٿ ̸ ȥ Ѵ.
MOV DL, 41H ; DL <----- 41H 41H DL ϶.
+--- | | ----------+
| +----+ |
༱(DESTINATION), (SOURCE)
ý ȣ INT 21H <---- ͷƮ (interrupt-)
CPU ϴ Ű
MOV DL,'1' ; ڸ οȣ ʿ 쿡
ڿ ϴ ƽŰڵ尡 ֵ˴ϴ.
1 ƽŰڵ尪 31H ġ˴ϴ.
α ġ
MOV AH,4CH ; MS-DOS SYSTEM CALL 4CH ° ƾ
INT 21H ; α ġ OS ư.
δ (1)
--------------------------------------------------------------------------------
α߿ ΰ , Ϳ ϴ
̸ :
XXX DB 'X' ; DB define byte
YYY DW 3456H ; DW define word
| | ---------> ʱġ
| +---------------->
+-----------------------≯
DB ..... Ʈ
DW ..... (2Ʈ)
DD ..... (4Ʈ)
DQ ..... Ʈ (8Ʈ)
DT ..... 10 Ʈ
*. +----------+--------+-----------+
| ̸ | DB | |
+----------+--------+-----------+
Ʈ ϴ ASSUME ǻ
MAIN SEGMENT
ASSUME CS:MAIN, DS:MAIN
MAIN : Ʈ ø
CS:MAIN ڵ弼Ʈ MAIN ̶ ̸ Ʈ Ǿִٴ°
DS:MAIN ŸƮ MAIN ̶ ̸ Ʈ Ǿ ִٴ°
8086 Ÿ ŸƮ ִ μ ؼǹǷ ,ͼƮ
ִ° ؾѴ.
ɵ Ÿ Ѵ MAIN ̶ ̸ Ʈ Ƿ
ASSUME CS:MAIN, DS:MAIN
̰ ̴
Ÿ óϴ δ ʴ´
Ʈ ʱ⼳(initialize) ϱؼ
MOV AX,CS
MOV DS,AX
̿ͰϿ ,AX Ͽ DS CS ǰ Ͽ
2 Ʈ ġŰ ȵ˴ϴ.
̰ Դϴ.
⼭
MOV DS,CS
Ҽ ϴ.Ʈ (CS,DS,SS,ES) ͵ ۿ
ϴ Ǿ ʱ Դϴ.
Ʈ Ϳ ڳ Ҽ ϴ.
Ʈ
8A 16 0020 R
R .... ̶ (relative address) Ÿ ϴ.
δ (2)
--------------------------------------------------------------------------------
Ʈ δ
MAIN SEGMENT ---+
...... |
MAIN ENDS ---+
DATA SEGMENT ---+
..... |
DATA ENDS ---+ ̿ ΰ Ʈ ϰ Ѵ.
ASSUME CS:MAIN,DS:DATA
ϴ ִ 쿡 ʹ DATA ̸ Ʈ ִ
ϰ ۼ϶ Դϴ.
MOV AX,DATA
MOV DS,AX
Ʈ ʱ ϴ κԴϴ.
α Ҷ Ʈ θ ߿
Ʈ ִ° Ű澲 ʰ ,α ۼҼϴ.
(1)
--------------------------------------------------------------------------------
Ʈ ʹ Ͽ Ҽִ.
DB Ͽ ϴ 쿡 ' ABC ' Ͽ ڶ
Ҽ ϴ.
XXX DB 'ABC' ------+ ΰ.
XXX DB 'A','B','C' |
XXX DB 41H,42H,43H ---+
|
+---->DW,DD,DQ,DT ٸ ͵ Ҽ ֽϴ.
ġν ڿν ־ ѹ 2
ڿۿ ټ .
AAA DD 'AB','CD','EF'
AAA DD 'ABCD', 'EFGH' ȵȴ.
DB 쿡 Ưϰ 3 ̻ ڿ
'A','B','C' ϴ ſ 'ABC' Ҽִ.
, XXX ̸ ҿ Ǿִ
ִ°
MOV AL,XXX
ϸ XXX ҿ ڿ ó 'A'=41H AL
Ϳ ۵˴ϴ.(XXX ϴ ̸ ҿ ִ ALͿ ϶)
ڸ ִ (OFFSET ):
MOV BX,offset XXX
| ̸ ٿ ü BX Ϳ
+-----> Դϴ.
OFFSET : ̸ ٿ Ͱ ִ .
¹ : Ʈ
MOV BL,XXX ; BL XXX 8 Ʈ ̹Ƿ
MOV BX,XXX ; BX 16Ʈ , XXX 8Ʈ ̹Ƿ
[ ] :
[ ] [ ] δ.
MOV DL,[1FH] ; 1FH ִ DL ͷ ϶
BX ͳ XXX ó Ͱ DL ͷ ۵˴ϴ.
̰ ǥ մϴ.
2 ° ʹ +1 Ǿ Ƿ, ⼭ BX + 1
Ǵ Դϴ. BX+2,BX+3 .......
MOV DL,[BX+1]
[ ] Ÿ
Ǿ ִ ϰ ϴ.
̿ (indirect addressing )̶ θϴ.
MOV AX,[1234H]
μ
(direct addressing mode) ̶ θϴ
MAIN SEGMAIN ; *. Ʈ δ
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
+-----------+
| |
+-----------+
MAIN ENDS
DATA SEGMENT
XXX DB 'ABC'
DATA ENDS
END
(2)
--------------------------------------------------------------------------------
Ҽ ִ ʹ 4̴
BX,BP,SI,DI
ֱ ϴ 8086 ڰ س ̴.
[BX+DI]
[BX+SI+1]
̵鳢 մϴ
) [BX+SI+4]
BX=1000H
SI=1234H
1000H + 1234H + 4H = 2238H ȴ.
չ Ģ:
+----+ +-------+ +--------------+
| BX | | SI | | 16Ʈ |
| BP | + | DI | + | 8Ʈ |
|| | | | |
+----+ +-------+ +--------------+
[BP] ܵ Ҽ ϴ.
ܼ Դϴ ϰ ʹٸ [BP+0] մϴ.
MOV DL,[BX+SI]
; BX ۹ , SI 3 ,
DL η 4 ° Ʈ Ͱ DL Ϳ
. *.SI= 0 θ Ų.
) MOV5.ASM
ڿ" ABCDEFG" °, ټ° DE
MAIN SEGMENT
ASSDUME CS:MAIN,DS:DATA
;
MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET AAA
MOV SI,3
MOV DL,[BX+SI]
MOV AH,2
INT 21H
MOV DL,[BX+SI+1]
MOV AH,2
INT 21H
;
MAIN ENDS
;
DATA SEGMENT
AAA DB 'ABCDEFG'
;
DATA ENDS
END
*. ϴ Ϳ BP Ͱ ԵǴ 쿡 ,
ؼƮ(SS:) Ͱ ִ μ ؼȴ.
( BP ϴ° Դϴ. )
--------------------------------------------------------------------------------
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
;
MOV AX,DATA ; DS
MOV DS,AX
;
MOV BX,OFFSET AAA ; AAA BX
MOV AX,'AB' ; ϳ 8Ʈ
MOV [BX],AX ; BX Ű AAA 'AB' ִ´
MOV CX,AAA
MOV DL,CH ; DL A ִ´
MOV AH,2 ----+
INT 21H ----+ A δ.
MOV DL,CL ; DL B ִ´.
MOV AH,2 ----+ B δ.
INT 21H ----+
MOV AH,4CH
INT 21H ; ϰ OS εư.
;
CODE ENDS
;
DATA SEGMENT
AAA DW ; AAA ؼ Ȯ϶
DATA ENDS
END
AAA DW ? '? ' ڴ ƹ̶ ٶ ǹԴϴ.
̹ δ
MOV [BX+SI+5],1234H
MOV AAA,'AB'
մϴ.
MOV [BX],[SI+3]
̿ ,۷ Ҽ ϴ.
MOV BX,[0008] -----> 8 ´
ʰ ġ ϴ ̷
(direct addressing)̶ մϴ.
, MASM ̿ ӿ ϴ.
װ Ŀ (dynamic) ȰDZ ,
Ҽٰ DZ ̶ ˴ϴ.
EQU ǻ
--------------------------------------------------------------------------------
ϴ EQU ǻ
MAIN SEGMENT
ASSUME CS:MAIN
CHAR1 EQU 'A' ;'A' = 41H ˴ϴ --+
CHAR2 = 42H ; = ǰ |
DISP EQU 2 ; EQU ǰ Ұ, --+ Ҷ ġȯ
;
MOV DL,CHAR1
MOV AH,DISP
INT 21H
MOV DL,CHAR2
MOV AH,DISP
INT 21H
MOV AH,4CH
INT 21H
;
MAIN ENDS
END
EQU ǻɿ ǿ DB ǿ ̴ :
EQU ؼ - Ҷ ڷ ġȯ
DB ؼ - Ͱ Ǿ ִ μ ġȯ
)
MOV CHAR1,DL -----> Ұ
'=' ؼ ǵ ڸ ٽ Ҷ ,ٽ '=' ؼ Ѵ.
ۼ س鼭 ֱ ǵ ڸ
ڷν մϴ.
˴ϴ.
CHAR1 = 41H
MOV DL,CHAR1
CHAR1 = 56H
MOV DL,CHAR1
:
= 0041
0000 B2 41
= 0056
0002 B2 56
PTR
--------------------------------------------------------------------------------
(type):
Ʈ,(2Ʈ),(4Ʈ)
ũ ٰ ֵȴ.
)
۷忡 ũ ʿ
) , Դϴ.
MOV [BX],12H
BX 10H սô. ⼭
1) 10H Ʈ 12H Ұ,
2) 10H 11 0012H ϴ ˼ ϴ.
*.Ʈ *.嵥
| | | | | | | |
+--------+ +---------+ +---------+ +-------+
10H | 55 | 12H | 12 | 10H | 55 | 0012H | 12 |
+--------+------> +---------+ +---------+-------> +-------+
11H | 66 | | 66 | 11H | 66 | | 00 |
+--------+ +---------| +---------+ +-------+
| | | | | | | |
12H Ʈ ͷν 쿡 11H ʰ
12H ͷν 쿡 11H ϴ.
PTR
--------------------------------------------------------------------------------
Ȯϰ ϱϿ
MOV BYTE PTR [BX],12H ; PTR POINTER
MOV WORD PTR [BX],12H
̿ ۵Ǵ BYTE Ǵ WORD մϴ.
̶ PTR ̶ Ʈ (overwrite) ڿ Բ ϵ Ǿ ϴ.
Ǿ ִ DB ̵ DW ̵ BYTE , WORD ʴ Ҽ
ϴ.
MOV ɰ
---------------------------------
ADDRESING MODE:
*.ġ (immediate mode)
AAA EQU 1234H
MOV AX,AAA ; Ʈ Ʈ ̳ϰ
CS,DS,ES,SS IP,FL Ϳ ġ Ҽ ϴ.
*. ( )
ϴ
MOV DS,AX
MOV CL,BH ; ũⰡ ġϴ 8Ʈ Ȥ 16Ʈ Ѵ.
Ʈ Ͱ Ҽ . IP ,FL ʹ Ҽ ,
CS ͷ Ҽ ϴ.
*. ( )
ϴ Ǿ ִ - 2
1) BX,BP,SI,DI 4 Ϳ ڸ սŲ.
MOV AX,[BX+DI+4]
2) μ ϰ ,̸ Ͽ ϴ
MOV AX,AAA ; ڰ ִ ٿ ̸Ͽ ϴ°
Ŀ :
+- BX -+ +- SI -+ +- 8Ʈ -+
| BP | + | DI | + | 16Ʈ |
+- -+ +- -+ +- -+
ʴ չ
1) 8Ʈ ڸ ϴ ( 16Ʈ ƴϸ Ҽ )
MOV AX,[1234H] Ҽ .
Ͽ ϰ -
MOV BX,1234H
MOV AX,[BX] ; ȵ˴ϴ.
2) [BP] Ҽ .
[BP] ϰ [BP + 0 ] ϸ ȴ
Ҷ :
1) ڵ Ʈ ִٰ
2)ʹ Ʈ ִٰ ȴ.
3)BP ϴ ʹ Ʈ ִٰ ȴ.
4)α ó Ʈ ʱ⼳ ʿ
MOV AX,DATA
MOV DS,AX ; DATA Ÿ Ʈ .
MOV AX,CS
MOV DS,AX ; Ÿ Ʈ ڵ弼Ʈ .
ؼ Ʈ ̿ Ʈκ
ʹٴ Ʈ Ʈ Ƚ(segment overwrite prefix) ,
ɿ ؼ Ʈ ų,
ϴ.
)
MOV AX,ES:[BX]
MOV CS:[DI+2],CX
Ʈ Ʈ Ƚ 4 Դϴ.
CS:,DS:,SS:,ES:
MOV ۰
--------------------------------------------------------------------------------
MOV AX,CS
MOV DS,AX
· DS <---- CS ,Ʈ Ͱ
ʱ Դϴ.
,Ʈ Ϳ ڸ ϴ Ǿ ʽϴ.
IP,FL ʹ MOV ɿ Ҽ Ǿ ϴ.
CS Ϳ ʽϴ.
CS ʹ о⸸ մϴ.
Ģ
Ģ Ҽ ϴ.
κ 8ƮCPU Ҽµ Ģ Ҽ ְ
16 Ʈ CPU ū Ư¡Դϴ.
ADD :
ADD AX,1234H
AX 뿡 1234H Ͽ AX Ϳ ٽ
+- 뷹(8/16Ʈ)-++- (8/16Ʈ)-+
ADD | ( " ) || ( " ) |
+- -++- ( " )-+
θ յǴ° ϴ.
*. : ġ Ҷ BYTE Ȥ WORD ʿ
ADD [BX],12H --------> ADD BYTE PTR [BX],12H
̷ Ͽ Ʈ Ȥ 带 ȵȴ.
*. :
AAA EQU 32H AAA ̹Ƿ [ ] ̴.
BBB DW 5678H BBB ̸ ̹Ƿ Ÿ
4040H+0102H ϰ װ 4142H 41H ,42H شϴ ڸ Ѵ.
MAIN SEGMENT
ASSUME CS:MAIN
;
MOV BX,4040H
ADD BX,0102H
MOV DL,BH ---+ Ʈ
MOV AH,2 |
INT 21H ---+
MOV DL,BL ---+ Ʈ
MOV AH,2 |
INT 21H ---+
;
MOV AH,4CH ---+
INT 21H ---+
;
MAIN ENDS
END
:A>ADD1
AB
A>
ƽŰ ڵ 41H ϴ "A" 42H ϴ "B" ǥ
ڸ ڷ ϴ °ΰ ? ---
MS-DOSýȣ ڸ ϴ غǾ ϴ.
ŰԷ
--------------------------------------------------------------------------------
Ű ѹڸ Էҷ ,MS-DOS ȣ(function) 1
ϴ. AH Ϳ 1 ϰ ȣ ϸ, Űκ Է
ٸ ִٰ ,Էµ ƽŰڵ带 AL register
ϴ.
+------------------------------------------+
| MOV AH,1 &nb |
Hit : 21509 Date : 2008/12/13 11:04
|