指令名称 | 指令形式 | 机器码 | 标志位(设置/测试) | 说 明 | 应用举例 |
---|
ES: | ES: | 26 | | ES段跨越前缀 | |
CS: | CS: | 2E | | CS段跨越前缀 | |
SS: | SS: | 36 | | SS段跨越前缀 | |
DS: | DS: | 3E | | DS段跨越前缀 | |
FS: | FS: | 64 | | FS段跨越前缀 | |
GS: | GS: | 65 | | GS段跨越前缀 | |
Opsize: | Opsize: | 66 | | 操作数类型跨越前缀 | |
Address: | Address: | 67 | | 地址类型跨越前缀 | |
下表中所使用符号的说明
/digit -- 0到7之间的数字,用于只使用寄存器/内存操作数的指令的 ModR/M字节,作为指令扩展码
/r -- 表明指令的ModR/M字节既包含寄存器操作数,又包含内存操作数
cb -- 相对于下一条指令的字节偏移值
cw -- 相对于下一条指令的字偏移值
cd -- 相对于下一条指令的双字偏移值
cp -- 绝对远指针
ib, iw, id -- ib:1字节立即数;iw:2字节立即数;id:4字节立即数
+rb, +rw, +rd -- 寄存器代码,从0到7,被加到操作数字节:
rb rw rd ---------------------- AL = 0 AX = 0 EAX = 0 CL = 1 CX = 1 ECX = 1 DL = 2 DX = 2 EDX = 2 BL = 3 BX = 3 EBX = 3 AH = 4 SP = 4 ESP = 4 CH = 5 BP = 5 EBP = 5 DH = 6 SI = 6 ESI = 6 BH = 7 DI = 7 EDI = 7
+i -- 用于浮点指令的数字,表示ST(i)之一
rel8 -- 8位相对地址,范围:-128 ~ 127
rel16, rel32 -- 同一段内的相对地址
ptr16:16,ptr16:32 -- 远指针,典型应用于跨段指令
r8 -- 8位通用寄存器
r16 -- 16位通用寄存器
r32 -- 32位通用寄存器
imm8 -- 8位立即数
imm16 -- 16位立即数
imm32 -- 32位立即数
r/m8 -- 8位通用寄存器或内存字节
r/m16 -- 16位通用寄存器或内存字节
r/m32 -- 32位通用寄存器或内存字节
m -- 16位或32位内存操作数
m8 -- 由DS:(E)SI或ES:(E)DI指向的内存字节
m16 -- 由DS:(E)SI或ES:(E)DI指向的内存字
m32 -- 由DS:(E)SI或ES:(E)DI指向的内存双字
m64 -- 内存四字,仅用于CMPXCHG8B指令
m16:16, m16:32 -- 包含两个数据的内存指针操作数,引号前面的是段地址,引号后面的是偏移地址
m16&32, m16&16, m32&32 -- 包含数据对的内存操作数
moffs8, moffs16, moffs32 -- 分别表示类型为字节、字、双字的内存变量
Sreg -- 段寄存器,ES=0, CS=1, SS=2, DS=3, FS=4, GS=5
m32real, m64real, m80real -- 单精度、双精度、扩展双精度内存浮点操作数
m16int, m32int, m64int -- 字型、双字型、四字型内存整数操作数
ST or ST(0) -- FPU寄存器堆栈栈顶元素
ST(i) -- 从FPU寄存器堆栈栈顶数起的第i个元素,i = 0,1,2,3,4,5,6,7
mm -- MMX寄存器,从MM0到MM7
mm/m32 -- MMX寄存器的低32位或32位内存操作数
mm/m64 -- MMX寄存器或64位内存操作数
xmm -- 128位XMM寄存器,从XMM0到XMM7
xmm/m32 -- XMM寄存器或32位内存操作数
xmm/m64 -- XMM寄存器或64位内存操作数
xmm/m128 -- XMM寄存器或128位内存操作数