8086/8088. 6 - , , , , , . .
8086/8088 , .
MOV | MOV , | |
PUSH | PUSH | |
POP | POP | |
XCHG | XCHG , | |
XLAT | XLAT | AL |
- | ||
IN | IN , | |
OUT | OUT , | |
LEA | LEA 16, 16 | |
LDS | LDS 16, 32 | DS:16 |
LES | LES 16, 32 | ES:16 |
LAHF | LAHF | |
SAHF | SAHF | |
PUSHF | PUSHF | |
POPF | POPF |
- V , . ( ) , . :
mov ,Table { }
mov Table,ah { }
mov ds,ax { }
mov es:[bx],ax { : }
mov ch,-17 { }
mov Table,$FF { }
MOV :
- , ,
mov Mem1,Mem2
mov ax,Mem2
mov Mem1,ax
- DS, ,
mov DS,Data_Seg
:
mov ax,Data_Seg
mov ds,ax
- , ,
mov es, ds
mov ax,ds
mov es,ax
- CS; ( ) CALL JMP; , RETF ( ).
, PUSH POP. , .. . PUSH 2 SP, SS: SP. SS: SP, SP 2. , SP , - . ( - ), , , .. . - , . , SP , . , .
|
|
LEA () . OFFSET, . :
var
X: Word;
..........
asm
mov ax, OFFSET X { X }
lea ax,X {To }
end;
, LEA , .
- LDS LES 16- -, - DS ES, .. ( ).
ADD | ADD , | |
ADC | ADC , | , |
ASCII | ||
DAA | DAA | - |
INC | INC | |
SUB | SUB , | |
SBB | SBB , | |
AAS | AAS | ASCII |
DAS | DAS | - |
DEC | DEC | |
NEG | NEG | |
, | ||
MUL | MUL | |
IMUL | IMUL | |
A | ASCII | |
DIV | DIV | |
IDIV | IDIV | |
AAD | AAD | ASCII |
CBW | CBW | |
CWD | CWD |
, , , - . . .. Byte Word, Shortlnt Integer. - 4 . 2 ( - ), - ( ). (ADD, SUB, MUL, DIV) - , .
|
|
AND | AND , | AND |
OR | OR , | OR |
XOR | XOR , | XOR |
NOT | NOT | NOT |
TEST | TEST , | |
SAL/SHL | SAL , | |
SAR/SHR | SAR , | |
ROL | ROL , | |
ROR | ROR , | |
RCL | RCL , | |
RCR | RCR , |
, , . AND, OR, XOR NOT , . TEST AND, , : CF OF, PF, ZF, SF AF ( ZF 1 , ). SHL/SHR ROLIROR , , . ,
mov al,1 { AL }
shr al,1 { , 1 }
AL 0 ( CF), SHR ROR $80=128 ( ).
, 1 , CL.
CALL | CALL | |
RET | RET [ ] | |
JUMP | JUMP | |
JA/JNBE | JA _ | , ( ) |
JAE/JNB | JAE _ | , |
JB/JBAE/JC | JB _ | , |
JBE/JNA | JBE _ | , |
JCXZ | JCXZ _ | , =0 |
JE/JZ | JE _ | , |
JG/JNLE | JG _ | , ( ) |
JGE/JNL | LGE _ | , |
JL/JNGE | JL _ | , |
JLE/JNG | JLE _ | , |
JNC | JNC _ | , |
JNE/JNZ | JNE _ | , |
JNO | JNO _ | , |
JNP/ JPO | JNP _ | , |
JO | JO _ | , |
JP/JPE | JP _ | , |
JS | JS _ | , |
LOOP | LOOP _ | |
LOOPE/LOOPZ | LOOPE _ | , |
LOOPNE/LOOPNZ | LOOPNE _ | , |
CALL, RET, JMP , - ( -128...+127 ). ( Options/Compiler/Force far calls {F+}) , , - .
|
|
CALL . CALL ( ) , IP ( CS:IP) , CALL . ( ) 16- 32- - . () , {F+} FAR , . CALL :
Procedure MyProc; Far;
.......
asm
call FAR MyProc { }
.......
end;
(.. ). CS, - .
RET 16- IP, CS, IP.
, - 128 . , , , JMP CAL, :
,0 { }
jne@NotZero {AX=0?}
jmp IsZero { - }
....... { - }
.......
/ , / - .
, , , - . - _ ( ) :
JA | JG | |
JE | JE | |
JB | JL | |
JAE | JGE | |
JBE | JLE | |
JNE | JNE |
:
m ,5 {>5?}
ja @AboveS {, - }
b,- 3 {<=-3?}
jle @LessM3 {, }
LOOP/LOOPE/LOOPNE . . LOOP , . LOOPE/LOOPNE , ( ) ZF .
, , :
var
: array [1..1000] of Byte;
.......
asm
mov ex, It)00 { }
lea bx,AOB { }
dec bx { }
{ }
@@Test: inc bx { }
cmp BYTE PTR [bx],0 { }
loopne Test { }
|
|
jnz NotZero { }
....... { }
end;
MOVSB | MOVSB | |
MOVSW | MOVSW | |
CMPSB | CMPSB | |
CMPSW | CMPSW | |
SCASB | SCASB | |
SCASW | SCASW | |
LODSB | LODSB | |
LODSW | LODSW | |
STOSB | STOSB | |
STOSW | STOSW |
. , 64 . , . REP/REPE/REPNE, , .
. -, - DS:SI, - - ES:DI. , . -, SI/DI . 1 2 , , DF , , 1.
:
var
,: array [1..250] of Integer;
.......
asm
lea si, A { - SI ()'}
push ds pop es { ES:= DS}
lea di,B { - DI ()}
mov ex,250 {- }
ld { - }
rep movsw { 500 }
end;
DS , . ES, , , (. push ds, popes).
INT | INT | |
INTO | INTO | |
IRET | IRET |
. INT (INTO) , CS IP, 4- , INT, 4 - INTO. , CALL , . , , : TF IF; TF , 1 4, IF .
INTO , OF. IRET : 3 IP, CS .
STC | STC | |
CLC | CLC | |
CMC | CMC | CF |
STD | STD | |
CLD | CLD | |
STI | STI | |
CLI | CLI | |
HLT | HLT | |
WAIT | WAIT | |
ESC | ESC , | |
LOCK | LOCK | |
NOP | NOP |
.
HAL , .
WAIT 5 : , WAIT, , . () .
|
|
ESC . . . , - .
LOCK , . , ().