− CALL
− CALL (call a procedure - ) :
SS:SP IP ( ), CS, IP ( SS:SP, SS:SP-2) () ;
IP , , CS, IP , ( ). CALL :
CALL ,
.
16- , CALL IP.
INT
INT , n. INT. , , . 8086 - . INT (interrupt - ) :
INT _,
_ , 256 , ( - ). , 256 , IP CS . INT :
1. .
2. CS.
3. IP.
4. TF IF .
5. , _ 4.
6. CS .
7. 2 IP .
8. IF TF.
, INT CS IP, TF IF 0, CS:IP .
256 . 4 , 1 , .. 0 3FFH.
, INT 21 8086 54 (4 × 21). 54 56, , IP CS, . 256 Intel 5 ( 0 4) . Al, AH, DX, . IBM PC - (BIOS), DOS.
|
|
RET
RET (return from procedure - ) , , "" , CALL.
: RET
RET , . ( , RET , ).
RET . NEAR (.. , CALL), RET IP. FAR (.. ), RET : IP, CS.
.
MY_PROC NEAR ( ):
04F0 CALL MY PROC; .
04F3 2: Mov AX,BX; .
04F5...;
...;
...; .
proc MY PROC; .
0602 Mov CL,6;
...;
...
0622 Ret; ( 04F5h).
0624 My proc Endp; .
CALL 2 (04F3H), MY_PROC (0500H) IP. PROC , MY_PROC NEAR. IP , , , . MOV CL, 6.
RET, IP. , 2.
JMP
JMP (jump unconditionally − ) - . () JMP. :
JMP
, CALL. , NEAR FAR, .
JMP , NEAR, , FAR. 128 127 JMP, JMP , , SHORT (short ).
, JMP SHORT 4 . JMP , .
|
|
, , , , CF. , , .
(CF, AF, ZF, SF, PF, OF).
: , , .
18 . :
( − , );
( − , );
zf, sf, cf, of, pf.
: Jxx,
;
_ .
_ . . - 128 +127 , Near, 32768 32767 .
.
, .
, . :
− Equal() ;
N − Not () ;
G Greater () ;
L − Less () ;
A Above () ;
B Below () .
4.1 .
1, 2 .
4.1 −
JE | o1 = o2 | ZF=1 |
JNE | 1≠ o2 | ZF=0 |
JL | 1 < o2 | SF≠ OF |
JLE | 1 ≤ o2 | ZF=1 SF≠ OF |
JG | 1 > o2 | SF = OF ZF = 0 |
JB | 1 < o2 | F = 1 |
JA | 1 > o2 | = 0 ZF = 0 |
JAE | 1 ≥ o2 | =0 |
, . , , N, . 4.2 .
4.2
JZ | ZF = 1 | JNZ | ZF = 0 |
JS | SF = 1 | JNS | SF = 0 |
JC | F= 1 | JNC | F= 0 |
JO | OF = 1 | JNO | OF = 0 |
JP | PF = 1 | JNP | PF = 0 |
, . :
JCXZ ; = 0, .
, , .
1. ADD AL,BL; (F=1),
JC TOOBIG; TOOBIG.
2. SUB AL,BL; AL (ZF=1),
JZ ZERO; ZERO.
3. AL,BL; AL BL (ZF=1),
JE ZERO; ZERO.
|
|
JZ, JE (jump if equal , ) .
, , . , BXMORE, , .
, :
,; .
JA ME; , (CF=0).
, JA ME JG ME.
, .
- LOOP
.
8086 . 1, " " .
LOOP (loop until Count complete ). : LOOP MP,
MP .
1, 0 128+127 , 0. , 65536 ( = 0). :
CX:= CX 1, if CX ≠ 0 then go to < >
Loop :
1. Dec CX; 1 (CX: = CX -1).
2. Cmp CX,0; 0.
3. Jne MP; CX ≠ 0, .
, :
MOV ,100; 3 .
START: MOV AX, TAB+[SI];
INC ;
...;
...; .
LOOP START; 0, START.
...; .
LOOP , 0.