(1)指令集的32位扩展
所有16位指令都可扩展到32位,例如:
MOV EAX, 1
MOVSB, MOVSW, MOVSD
JCXZ, JECXZ
可使用32位的存储器寻址方式,例如:
MOV EAX, [EDX]
(2)使用方式的扩展
条件转移:位移量可为16位/32位,可在64K/4G全程转移
IMUL: 单操作数指令 → 双操作数指令 / 三操作数指令,例如:
IMUL REG, SRC
IMUL REG, SRC, IMM
PUSH: 允许使用立即数寻址方式,例如:
PUSH 36H
移位指令:移位次数可用8位立即数(1~31)
(3)新增指令
MOVSX 带符号扩展传送
例: MOVSX BX, AL
MOVSX EAX, DX
MOVZX 带零扩展传送
例: MOVZX EAX, DX
PUSHA / PUSHAD 所有寄存器进栈
↓AX, CX, DX, BX, SP, BP, SI, DI (SP) (SP) - 16
↓EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI (ESP) (ESP) - 32
POPA / POPAD 所有寄存器出栈
↑DI, SI, BP, SP, BX, DX, CX, AX (SP) (SP) + 16
↑EDI, ESI, EBP, ESP, EBX, EDX, ECX, EAX (ESP) (ESP) + 32
LFS 指针送寄存器和FS
LGS 指针送寄存器和GS
LSS 指针送寄存器和SS
PUSHFD 标志进栈
POPFD 标志出栈
CWDE 字转换为双字 EAX
CDQ 双字转换为4字 EDX : EAX
BSWAP 32位寄存器的字节次序变反
例: BSWAP EAX
XADD 交换加
例: XADD EBX, ECX
CMPXCHG 比较并交换(486)
CMPXCHG8B 比较并交换8字节(Pentium)
BT 位测试
例: BT AX, 2
BTS 位测试并置1
BTR 位测试并置0
BTC 位测试并变反
BSF 正向位扫描
例:BSF AX, BX
BSR 反向位扫描
SHLD 双精度左移 SHLD DST, REG, CNT
SHRD 双精度右移 SHRD DST, REG, CNT
例:SHLD EBX, ECX, 16
如指令执行前:(EBX)=12345678H (ECX)=13572468H
则指令执行后:(EBX)=56781357H (ECX)=13572468H CF=0
INSB / INSW / INSD 串输入
OUTSB / OUTSW / OUTSD 串输出