CMP 16 位寄存器的数值,16 位寄存器
Numeric value of CMP 16bit register ,16bit register
我需要打开 COM 文件并从该文件中找到 "CMP AX, BX"。我被卡住了,我想我需要比较 CMP 指令的机器码。所以我需要知道 CMP 的数值。
CMP的值会根据操作数的不同而不同。
可能是,十六进制:
助记符
39 - CMP Reg, Reg
3A - CMP Regb,Memory
3B - CMP Reg,Memory
3C - CMP AL,Byte
3D - CMP (E)AX,Immediate
80 - CMP RegByte,Immediate Byte = 80
81 - CMP Memory,Reg = 81
83 - CMP Reg/Mem,Immediate (sign extended) byte
有关详细信息,请参阅此内容:
http://www.mathemainzel.info/files/x86asmref.html#cmp
使用在线汇编程序
您可以使用在线汇编程序轻松找到它,例如:https://defuse.ca/online-x86-assembler.htm
具体
在原来的 8086 上是
39 D8 CMP AX,BX
在 80386 及以上是
66 39 D8 CMP AX,BX + 16 bit operand size override.
指令解码
指令解码如下
66 -> 16 bit operand size override
39 -> CMP R16, R16
D8 -> = binary 11 011 000
|| || ++--- AX = reg0
|| ++ BX = reg3
++--ModRM code for pure register operands, no memory
参见:http://ref.x86asm.net/geek.html#x00
在它说的底部:32-bit ModR/M Byte
x86 按照以下顺序以八进制形式解码寄存器:
AX CX DX BX SP BP SI DI
0 1 2 3 4 5 6 7
000 001 010 011 100 101 110 111
ModRM 字节的前两位是:
00: [reg] : memory addressed by reg with no offset
01: [reg+8-bit offset]: memory addressed by reg with 8-bit offset
10: [reg+32-bit offset] memory addressed by reg with 32-bit offset
11: reg: just the register.
指令操作码指定后面的modrm字节是source, dest
还是dest,source
。
我需要打开 COM 文件并从该文件中找到 "CMP AX, BX"。我被卡住了,我想我需要比较 CMP 指令的机器码。所以我需要知道 CMP 的数值。
CMP的值会根据操作数的不同而不同。
可能是,十六进制:
助记符
39 - CMP Reg, Reg
3A - CMP Regb,Memory
3B - CMP Reg,Memory
3C - CMP AL,Byte
3D - CMP (E)AX,Immediate
80 - CMP RegByte,Immediate Byte = 80
81 - CMP Memory,Reg = 81
83 - CMP Reg/Mem,Immediate (sign extended) byte
有关详细信息,请参阅此内容: http://www.mathemainzel.info/files/x86asmref.html#cmp
使用在线汇编程序
您可以使用在线汇编程序轻松找到它,例如:https://defuse.ca/online-x86-assembler.htm
具体
在原来的 8086 上是
39 D8 CMP AX,BX
在 80386 及以上是
66 39 D8 CMP AX,BX + 16 bit operand size override.
指令解码
指令解码如下
66 -> 16 bit operand size override
39 -> CMP R16, R16
D8 -> = binary 11 011 000
|| || ++--- AX = reg0
|| ++ BX = reg3
++--ModRM code for pure register operands, no memory
参见:http://ref.x86asm.net/geek.html#x00
在它说的底部:32-bit ModR/M Byte
x86 按照以下顺序以八进制形式解码寄存器:
AX CX DX BX SP BP SI DI
0 1 2 3 4 5 6 7
000 001 010 011 100 101 110 111
ModRM 字节的前两位是:
00: [reg] : memory addressed by reg with no offset
01: [reg+8-bit offset]: memory addressed by reg with 8-bit offset
10: [reg+32-bit offset] memory addressed by reg with 32-bit offset
11: reg: just the register.
指令操作码指定后面的modrm字节是source, dest
还是dest,source
。