经典定长指令_修改通用寄存器
一、PUSH/POP(0x5x系列)
0x50 PUSH EAX 0x51 PUSH ECX 0x52 PUSH EDX 0x53 PUSH EBX 0x54 PUSH ESP 0x55 PUSH EBP 0x56 PUSH ESI 0x57 PUSH EDI
0x58 PUSH EAX 0x59 PUSH ECX 0x5A PUSH EDX 0x5B PUSH EBX 0x5C PUSH ESP 0x5D PUSH EBP 0x5E PUSH ESI 0x5F PUSH EDI

顺序一一对应
二、INC/DEC(0x4x系列)
0x40 INC EAX 0x41 INC ECX 0x42 INC EDX 0x43 INC EBX 0x44 INC ESP 0x45 INC EBP 0x46 INC ESI 0x47 INC EDI
0x48 DEC EAX 0x49 DEC ECX 0x4A DEC EDX 0x4B DEC EBX 0x4C DEC ESP 0x4D DEC EBP 0x4E DEC ESI 0x4F DEC EDI

三、MOV Rb,Ib
Opcode有1byte/2byte/3byte,以上是1byte的,下面是2byte
定长:Opcode确定了,这行指令的长度就确定了叫定长
I:立即数
b:8Byte
AL:8位寄存器

B0 00 MOV AL,0 B1 00 MOV CL,0 B2 00 MOV DL,0 B3 00 MOV BL,0 B4 00 MOV AH,0 B5 00 MOV CH,0 B6 00 MOV DH,0 B7 00 MOV BH,0

以下是手册中的具体说明(可点我看上一篇文章)


四、MOV ERX,Id



I:立即数
v:依赖于是32位模式还是16位模式
32位:EAX/AX
64位:RAX,EAX,AX
r8:64为模式下才有的
B8 000000BB MOV EAX,BB000000
B9 BC00BD00 MOV ECX,0BD00BC
BA 00BF00FF MOV EDX,FF00BF00
BB 401D4C00 MOV EBX,VSCodeUs.004C1D40
BC D2556846 MOV ESP,466855D2
BD 4B0064FF MOV EBP,FF64004B
BE 648922E8 MOV ESI,E8228964
BF 9AFFFFA3 MOV EDI,A3FFFF9A

五、XCHG EAX,ERX
XCHG:交换俩个操作数的内容
91 XCHG EAX,ECX 92 XCHG EAX,EDX 93 XCHG EAX,EBX 94 XCHG EAX,ESP 95 XCHG EAX,EBP 96 XCHG EAX,ESI 97 XCHG EAX,EDI

i64:不支持64位,只支持32位模式下使用
o64:only支持64位模式下使用
d64:默认为64位模式,而且不支持32位的
f64:强制必须64位,硬编码66也无法改变


浙公网安备 33010602011771号