Opecode CMP - HobbyOSs/opennask GitHub Wiki

0x3C ib		CMP AL, imm8		imm8をALと比較します
0x3D iw		CMP AX, imm16		imm16をAXと比較します
0x3D id		CMP EAX, imm32		imm32をEAXと比較します
0x80 /7 ib	CMP r/m8, imm8		imm8をr/m8と比較します
0x81 /7 iw	CMP r/m16, imm16	imm16をr/m16と比較します
0x80 /7 id	CMP r/m32, imm32	imm32をr/m32と比較します
0x83 /7 ib	CMP r/m16, imm8		imm8をr/m16と比較します
0x83 /7 ib	CMP r/m32, imm8		imm8をr/m32と比較します
0x38 /r		CMP r/m8, r8		r8をr/m8と比較します
0x39 /r		CMP r/m16, r16		r16をr/m16と比較します
0x39 /r		CMP r/m32, r32		r32をr/m32と比較します
0x3A /r		CMP r8, r/m8		r/m8をr8と比較します
0x3B /r		CMP r16, r/m16		r/m16をr16と比較します
0x3B /r		CMP r32, r/m32		r/m32をr32と比較します
  • 例1
        CMP     AL,0      ; 3c00      ; 0x3C ib   | CMP AL, imm8 | imm8をALと比較します

例の場合、EFLAGSレジスタのフラグのうち、ZFが結果に従って設定される。

  • 例2
// SI == 16bit
CMP     SI,5            ; 83fe05 ; imm8をr/m16と比較

// CL == 8bit           ; Reg,Imm8: 1000001woo111mmm
//------------------------------------------------
CMP     CL,18           ; 80f912 ; imm8をr/m8と比較