x86
10
, , , .
i8086 14 , :
AH | AL | AX | CS | SP | |||
BH | BL | BX | DS | BP | |||
CH | CL | CX | ES | IP | |||
DH | DL | DX | SS | FLAGS | |||
SI | |||||||
DI |
:
AX(AH, AL), BX(BH, BL), CX(CH, CL), DX(DH, DL) . ;
SP, BP , , , , , , SP.
SI, DI .
CS, DS, ES, SS , .
IP () .
FLAGS , ( 2.1).
2.1 | ||
D | ||
I | / | |
T | ( ) | |
S | (0 , 1 ) | |
Z | (0 , 1 ) | |
A | ||
P | (0 , 1 ) | |
C |
, , () Random Access Memory (RAM). , ( ). i8086 ( 20) 220 (1). 32 4 .
|
|
, (2 ), .
, i8086, . , , , .
, , . (16+4=20), . . (4 ): <>:<>.
, 4 ( ) . 16 (). , 216(64 ).
CS:IP(<>:<>) .
DS ES, , , BX, SI, DI. SS BP.
. , . , . .
< > segment
< > ends
[
< > segment
< > ends ]
end < >
end < > , . end .
< > , .
, .
, , :
M1: | Add | AX, BX | ; |
, , 31 , . .
, .
|
|
1. :
[<>] d <> <>[,<>, <>,...]
<> - , ;
d (define) ;
<> - , :
b | , | |
w | ( ), | |
d | , | |
q | , | |
t | ; |
<> - .
:
0 9;
0 9 F f H h, 0;
0 7, Q q;
0 1, B b;
, ;
? .
,
data1 db 123, 0a2h, 75q, 110011b, 'a', '',?,?
dup (duplicate):
< > dup(<>)
< > - , ;
<> - .
,
data2 db 23 dup(1, 2, 'x')
23 3=69 1, 2, 'x', 1, 2, 'x', .
2. :
assume < >: < nothing >[, < >: < nothing >, ]
, , , , . assume . , , . nothing , . assume , , .
,
assume cs:code, ds:data1, es:nothing
code data1 , .
1. - .
- <>,
< > - , , , DX, SI, DI, BP, SP, AL, BL, L, DL, AH, BH, CH, DH.
:
mov ,SI; SI .
2. - () .
- < >.
:
mov AX, 093Ah; 093Ah .
3. - .
- < >+/-< >.
:
mov AX, WW; WW
mov BX, WW+2; WW 2 .
4. - .
- [< >],
< > - . . SI, DI.
:
mov [ BX ], CL; CL , .
5. - .
- < >[< >] [< >]< >,
< > - SI DI , - .
|
|
:
mov , WW[SI]; , SI WW.
6. - - .
- [< . >][< . >] < >[<. >][< . >] [<. >][< . >]< ,
< . > - SI DI, < . > - .
:
mov [BX+ SI+ 2], CL; CL , , SI 2.