, . , :
1) , , ;
2) , , .
.
.
JMP [] _
.
4.10.
4.10
( JMP -128 127 ) | JMP SHORT OPR | (IP) (IP) + 8- , OPR |
( 128 64 ) | JMP [NEAR] OPR | (IP) (IP) + 16- , OPR |
( , , ) | JMP OPR | (IP) (EA), EA- , OPR |
4.11.
4.11
JMP FAR PTR OPR | (CS) , OPR (IP) OPR | |
JMP OPR | (IP) (EA), EA- , OPR (CS) (EA + 2), EA- OPR |
. . . , , - . , .
() , .
, , , , .
, :
_ PROC []
|
|
, -
ret
_ ENDP -
(), . [] . : NEAR ( , ) FAR ( ). NEAR.
, , . . :
1) ( );
c_s segment
assume cs:c_s
Pr1 proc near
Ret
P1 endp
begin:;
end begin
2) ( - );
c_s segment
assume cs:c_s
begin:
mov ah, 4ch
int 21h;
P1 proc near
Ret
P1 endp
c_s ends
end begin
3) ( JMP);
c_s segment
assume cs:c_s
begin:
jmp m1
P1 proc near
Ret
P1 endp
m1:
mov ah, 4ch
int 21h;
c_s ends
end begin
4) , , . , .
, CALL RET, . CALL , , CALL. CALL _.
CALL:
CALL [] _
NEAR FAR, , .
RET IP/EIP CS IP/EIP, , CALL.
IP/EIP, : CS IP/EIP. CALL CS, IP/EIP. , , .
: . , , : , .
|
|
, , . ( AF). , , CMP, , . , , CMP (), , , ().
4.12.
4.12
( CMP) | |||
, | JE OPR | OPR1 = OPR2 | ZF = 1 |
, | JNE OPR | OPR1 <> OPR2 | ZF = 0 |
, ()/ ( ) | JB/ JNAE OPR | OPR1 < OPR2 | CF = 1 |
, ()/ ( ) | JNB/ JAE OPR | OPR1 >= OPR 2 | CF = 0 |
, / ( ) | JBE/ JNA OPR | OPR1 <= OPR2 | CF = 1 ZF = 1 |
, / () ( ) | JNBE/ JA OPR | OPR1 > OPR2 | CF = 0 ZF = 0 |
, / ( ) | JL/ JNGE OPR | OPR1 < OPR2 | SF <> OF |
, / ( ) | JNL/ JGE OPR | OPR1 => OPR2 | SF = OF |
, / ( ) | JLE/ JNG OPR | OPR1 <= OPR2 | SF <> OF ZF = 1 |
, / ( ) | JNLE/ JG OPR | OPR1 > OPR2 | SF = OF ZF=0 |
4.12 | |||
, | JZ OPR | [OPR1 = OPR2] | ZF = 1 |
, | JNZ OPR | [OPR1 <> OPR2] | ZF = 0 |
, | JS OPR | [OPR1 < OPR2] | SF = 1 |
, | JNS OPR | [OPR1 > OPR2] | SF = 0 |
, | JO OPR | - | OF = 1 |
, | JNO OPR | - | OF = 0 |
, | JP OPR | - | PF = 1 |
, | JNP OPR | - | PF = 0 |
, | JC OPR | - | CF = 1 |
, | JNC | - | CF = 0 |
, :
(IP) (IP)+ 8- .
, . . - (IP). OPR -128 127 , .
. , , , . 4.13.
LOOP , for .
4.13
LOOP OPR | (ECX/ CX) <> 0 | |
, | LOOPZ/ LOOPE OPR | (ECX/ CX) <> 0 ZF = 0 |
, | LOOPNZ/ LOOPNE OPR | (ECX/ CX) <> 0 ZF=1 |
CX | JCXZ OPR | (ECX/ CX) = 0 |
JCXZ, (ECX/ CX), (ECX/ CX)(ECX/ CX)-1, , , (EIP/ IP)(EIP/ IP)+D8 ; (IP) .
|
|
. - IP. OPR , -128 127 , .
, . . ( 4.8).
64 ( 4 ). , SS. SS . LIFO (Last Input First Output - ). .
4.2. SS, ESP/ SP EBP/ BP , . ESP/ SP , , . , EBP/ BP . , . , . , EBP/ BP ESP/ SP. ESP/ SP , EBP/ BP , , .
4.2
, ESP/ SP ( ), . , ESP/ SP SS, . ( ESP/ SP) ( ), ( ).
, 4.14.
4.14
PUSH SRC | (SP) (SP) 2 ((SP + 1):SP) (SRC) | |
POP DST | (DST) ((SP + 1):SP) (SP) (SP) + 2 |
PUSH SP 2, (SP+1):SP .
POP ( (SP+1):SP) , DST, SP 2.
- SRC - DST , CS.