(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.