Андрей Газибаров


без тайни

Инструкциите On-line

CMPS
Сравняване на низове
Общи форми: CMPS source, dest
CMPSB
CMPSW
CMPSD
CMPSQ
Форма КОП CPUID I8086 I80386 I80286
16 32 64 Alt   I8086 I80386 I80286
CMPSB A6 A6 A6 F4 1C   19 7 6
CMPSW A7 66 F7 66 F7 F4 1D   19 7 6
CMPSD 66 F7 A7 A7 F4 1E 386+   7 6
CMPSQ     48 A7 F4 1F x86-64      
REPO CMPSB       F4 F0 1C   OF = 1
REPO CMPSW       F4 F0 1D  
REPO CMPSD       F4 F0 1E  
REPO CMPSQ       F4 F0 1F  
REPNO CMPSB       F4 F1 1C   OF = 1
REPNO CMPSW       F4 F1 1D  
REPNO CMPSD       F4 F1 1E  
REPNO CMPSQ       F4 F1 1F  
REPC CMPSB 65 A6     F4 F2 1C V20 CF = 1
REPB CMPS, REPNAE CMPS
REPC CMPSW 64 A7     F4 F2 1D V20
REPC CMPSD       F4 F2 1E  
REPC CMPSQ       F4 F2 1F  
REPNC CMPSB 64 A6     F4 F3 1C   CF = 1
REPNB CMPS, REPNA CMPS
REPNC CMPSW 64 A7     F4 F3 1D  
REPNC CMPSD       F4 F3 1E  
REPNC CMPSQ       F4 F3 1F  
REPZ CMPSB F3 A6 F3 A6 F3 A6 F4 F4 1C   ZF = 1
REPE CMPS
REPZ CMPSW F3 A7 F3 66 A7 F3 66 A7 F4 F4 1D  
REPZ CMPSD F3 66 A7 F3 A7 F3 A7 F4 F4 1E  
REPZ CMPSQ     F3 48 A7 F4 F4 1F  
REPNZ CMPSB F2 A6 F2 A6 F2 A6 F4 F5 1C   ZF = 1
REPNE CMPS
REPNZ CMPSW F2 A7 F2 66 A7 F2 66 A7 F4 F5 1D  
REPNZ CMPSD F2 66 A7 F2 A7 F2 A7 F4 F5 1E  
REPNZ CMPSQ     F2 48 A7 F4 F5 1F  
REPBE CMPSB       F4 F6 1C   CF OR ZF = 1
REPNA CMPS
REPBE CMPSW       F4 F6 1D  
REPBE CMPSD       F4 F6 1E  
REPBE CMPSQ       F4 F6 1F  
REPA CMPSB       F4 F7 1C   CF OR ZF = 1
REPNBE CMPS
REPA CMPSW       F4 F7 1D  
REPA CMPSD       F4 F7 1E  
REPA CMPSQ       F4 F7 1F  
REPS CMPSB       F4 F8 1C   SF = 1
REPS CMPSW       F4 F8 1D  
REPS CMPSD       F4 F8 1E  
REPS CMPSQ       F4 F8 1F  
REPNS CMPSB       F4 F9 1C   SF = 1
REPNS CMPSW       F4 F9 1D  
REPNS CMPSD       F4 F9 1E  
REPNS CMPSQ       F4 F9 1F  
REPP CMPSB       F4 FA 1C   PF = 1
REPPE CMPS
REPP CMPSW       F4 FA 1D  
REPP CMPSD       F4 FA 1E  
REPP CMPSQ       F4 FA 1F  
REPNP CMPSB       F4 FB 1C   PF = 1
REPPO CMPS
REPNP CMPSW       F4 FB 1D  
REPNP CMPSD       F4 FB 1E  
REPNP CMPSQ       F4 FB 1F  
REPL CMPSB       F4 FC 1C   SF XOR OF = 1
REPNGE CMPS
REPL CMPSW       F4 FC 1D  
REPL CMPSD       F4 FC 1E  
REPL CMPSQ       F4 FC 1F  
REPGE CMPSB       F4 FD 1C   SF XOR OF = 1
REPNL CMPS
REPGE CMPSW       F4 FD 1D  
REPGE CMPSD       F4 FD 1E  
REPGE CMPSQ       F4 FD 1F  
REPLE CMPSB       F4 FE 1C   SF XOR OF OR ZF = 1
REPNG CMPS
REPLE CMPSW       F4 FE 1D  
REPLE CMPSD       F4 FE 1E  
REPLE CMPSQ       F4 FE 1F  
REPG CMPSB       F4 FF 1C   SF XOR OF OR ZF = 1
REPNLE CMPS
REPG CMPSW       F4 FF 1D  
REPG CMPSD       F4 FF 1E  
REPG CMPSQ       F4 FF 1F  
Забележка Операндът в асемблерското представяне на инструкцията не се кодира. Операндът може да се използва за да се промени използваният сегментен регистър (по подразбиране DS) за source. Сегментът, използван за dest е винаги ES.
Действие [eSI] – ES:[eDI]
CASE Инструкция OF
  CMPSB: OperSize ← 1
  CMPSW: OperSize ← 2
  CMPSD: OperSize ← 4
  CMPSQ: OperSize ← F
END CASE
IF DF = 0 THEN
  eSI ← eSI + OperSize
  eDI ← eDI + OperSize
ELSE
  eSI ← eSI - OperSize
  eDI ← eDI - OperSize
ENDIF
Забележка: Сравнението се извършва в посока source — dest ([eSI] — ES:[eDI]). Това трябва да се има предвид, ако е от значение неравенство на операндите.
Флагове
PE VM NT IOPL OF DF IF TF SF ZF AF PF CF
        A T     A A A A A
CPU
8086 186 V20 286 386 486 P P-P P-II MMX SSE 3D! E64
• • • • • • • • •       •
ИзключенияОБЩИ
 
Съдържание Пълен текст
 
  PDF, 3.6M Приложение, 18К