.


:




:

































 

 

 

 


CWD




(convert word to double word)

CWD DX , 16- 32-. ( ) 16- .

CWDE
CWDE EAX , 16- 32-.

CDQ

(convert double to quadric)
CDQ EDX E, 32- 64-. ( ) 32- .

 

23 :

TEST ,
( Ȼ) , .
TEST ECX,EDX

SE ZF PF , OF CF , AF .
TEST, CMP .

TEST , .

CMP ,
. - , .
CF, OF, SF, ZF, AF PF. .

() < (BX), SF=1.
() > (BX), SF=0
() = (BX), ZF=1.

 

24 :


JMP

, . ( ), , . .

JMP ADDRESS


:

.
, , , , .

.
- A - B ; - G - L .
!! (>128)


JB/JNAE

; CF = 1


JAE/JNB

; CF = 0


JBE/JNA

; CF=1 ZF = 1

 

JA/JNBE

; CF=0 ZF=0


JL/JNGE

; S<>0


JGE/JNL

; C = 0


JLE/JNG

; Z=1

Z<>0


JG/JNLE

; Z=0 S=0

 


JE/JZ
ZF = 1


JNE/JNZ ZF = 0


JP JPE;

PF = 1


JNP
JPO PF = 0
JS SF = 1

JNS SF = 0
JC F = 1
JNC CF = 0
JO OF = 1
JNO

CX ()
JCXZ

, =0
JECXZ

, =0

 

25 :

ecx cx jecxz/jcxz. , ecx/cx 4 294 967 295 65 536 ;

.
LOOP

1. CX () 1 CX()
2. CX() 0, , , LOOP .
3. CX() 0, , , LOOP

, ECX (CX) .

 

ZF.
LOOP:
LOOPE ,
LOOPZ ,
LOOPNE ,
LOOPNZ ,

ZF:
1. CX () 1 CX
2. CX() =0, LOOP .
3. CX() 0, , , LOOP.

4. ZF=0, LOOPE LOOPZ , LOOPNE LOOPNZ .
5. ZF=1, LOOPE LOOPZ , LOOPNE LOOPNZ .
, ZF ,

 

26 :

.
MOV ,
MOV , mov , b ~ = b

 

.

( PentiumPro Pentium II).
CMOVcc ,
, , FLAGS
- , - .

 


MOVSX ,

( ) (16- 32- ) CBW/CWDE


MOVZX ,

. ( ) (16- 32- ) .

 

 

 

27 :

- and, - or,

- xor;
NOT .
, ;
;
()

(PSW).

( ). .

( ) . , .

 

 

of=1, cf ;
of=0, cf

 

of

, , .

rcl(rcr) , () cf.

 

( ) , . , , .
C ( Carry) CLC () SEC STC ().

SAHF

LAHF

sahf 7, 6, 4, 2 0 , SF, ZF, AF, PF CF . .
sahf ( lahf) , SF, ZF, AF PF, . , sahf , OF

/* ( ) . ( ) 64 - ( ASCII) : 8 ; 16 ; 32 . - . , , , . , , , . , - ES, - DS. - EDI/DI, - ESI/SI. y , . . => LEA ,

, ES , .. , DS.

DF 0, ESI/EI EDI/DI . DF 1, . DF : CLD , , STD , 1.*/

 

1.

, . REP. , , 8088 . - . . . , : ecx/cx zf.

rep (REPeat).
, - , movs stos, (ins outs). rep , ecx/cx 0. , , ecx/cx .

rep:
1. cx:
cx<>0, , 2;
cx=0, , ( rep);
2. cx=cx1 1;

repe repz

(REPeat while Equal or Zero)

, ecx/cx ZF 1. cmps scas .

repe repz:
1. cx zf:
cx<>0 zf<>0, , , 2;
cx=0 zf=0, , ( rep);
2. cx=cx-1 1;

repne repnz

(REPeat while Not Equal or Zero)

repne/repnz , ecx/cx zf .

cmps scas, .

repne repnz:
1. cx zf:
cx<>0 zf=0, , 2;
cx=0 zf<>0, , ( rep);
2. cx=cx1 1.

 

MOVS . MOVS _, _
_ , _ .

MOVS - SI - DI. DF 0, SI DI . DF 1, SI DI .

MOVSB
MOVSW

MOVSD

:
_ ds:esi/si;
_ es:edi/di.

 





:


: 2016-07-29; !; : 793 |


:

:

, , .
==> ...

1699 - | 1394 -


© 2015-2024 lektsii.org - -

: 0.06 .