附    录
附录A  常用80x86指令速查表
指令按助记符字母顺序排列,缩写、符号约定如下:
(1) 指令中,dst, src表示目的操作数和源操作数。仅一个操作数时,个别处也表示为opr
(2)  imm表示立即数,8/16/32位立即数记作:imm8/imm16/imm32。
(3)  reg表示通用寄存器,8/16/32位通用寄存器记作:reg8/reg16/reg32。
(4)  mem表示内存操作数,8/16/32等内存操作数记作:mem8/mem16/mem32等。
(5)  seg表示段寄存器,CS, DS, SS, ES, FS, GS。
(6)  acc表示累加器,8/16/32累加器对应AL/AX/EAX。
(7)  OF, SF, ZF, AF, PF, CF分别表示为O, S, Z, A, P, C,相应位置为:字母,根据结果状态设
置;?,状态不确定;-,状态不变;1,置1;0,清0;例如:0 S Z ? P -表示:OF清0,AF不确定,CF不变,其它根据结果设置。若该栏空白,则表示无关。
(8)  寄存器符号诸如(E)CX, (E)SI, (E)DI, (E)SP, (E)BP和(E)IP等,表示在16地址模式下使用16位寄存器(如CX),或在32地址模式下使用32位寄存器(如ECX)。
(9)  周期数表示指令执行所需的CPU时钟周期个数,即执行时间为:周期数/主频(秒)。
(10)  诸如(386+)是表示该指令只能用于80386及以后微处理器上。
指    令
功    能
指 令 形 式
周期数
影响标志位
AAA
非压缩BCD加法调整,AH+进位
AAA
3
?S Z ? P C
AAD
AH×10+AL AL,之后AH清0
AAD
10
O S Z A P C
AAM
AL÷10的商 AH,余数 AL
AAM
18
O S Z A P C
AAS
非压缩BCD减法调整,AH-借位
AAS
3
? S Z ? P C
ADC dst, src
带进位加法:dst+src+CF dst
ADC reg, reg
1
O S Z A P C
ADC reg, mem
2
ADC reg, imm
1
ADC acc, imm
1
ADC mem, reg
3
ADC mem, imm
3
ADD dst, src
加法:dst+src dst
ADD reg, reg
1
O S Z A P C
ADD reg, mem
2
ADD reg, imm
1
ADD acc, imm
1
ADD mem, reg
3
ADD mem, imm
3
续表
指    令
功    能
指 令 形 式
周期数
影响标志位
AND dst, src
逻辑与:dst src dst
AND reg, reg
1
0 S Z ? P 0
AND reg, mem
2
AND reg, imm
1
AND acc, imm
1
AND mem, reg
3
AND mem, imm
3
ARPL dst, src
调整选择器的RPL域
ARPL reg/mem16, reg16
7
- - Z - - -
BOUND reg, mem
越界检查:(80188+)
reg值超出mem,则产生INT 5
BOUND reg16, mem32
INT+32
BOUND reg32, mem64
BSF reg, src
从低到高扫描src,16/32位 (386+)
src=0,ZF清0,否则置1,位置 reg汇编语言结束指令
BSF reg, reg
6~35
? ? Z ? ? ?
BSF reg, mem
6~43
BSR reg, src
从高到低扫描src, 16/32位 (386+)
src=0,ZF清0,否则置1,位置 reg
BSR reg, reg
6~35
? ? Z ? ? ?
BSR reg, mem
6~43
BSWAP reg32
反转reg32字节顺序 (486+)
BSWAP reg32
1
BT dst, src
位测试 (386+)
dst指定的位 CF (16/32位)
BT reg, reg
4
? ? ? ? ? C
BT reg, imm
4
BT mem, reg
9
BT mem, imm
4
BTC dst, src
位测试并变反 (386+)
dst的指定位 CF, 然后该位变反,
(16/32位)
BTC reg, reg
7
? ? ? ? ? C
BTC reg, imm
7
BTC mem, reg
13
BTC mem, imm
8
BTR dst, src
位测试并清0 (386+)
dst的指定位 CF, 然后该位清0,
(16/32位)
BTR reg, reg
7
? ? ? ? ? C
BTR reg, imm
7
BTR mem, reg
13
BTR mem, imm
8
BTS dst, src
位测试并置1 (386+)
dst的指定位 CF, 然后该位置1,
(16/32位)
BTS reg, reg
7
? ? ? ? ? C
BTS reg, imm
7
BTS mem, reg
13
BTS mem, imm
8
CALL dst
子程序调用
近调用:返回的偏移地址进栈,
然后转至dst处执行;
远调用:返回的段和偏移地址进栈,
然后转至dst处执行
CALL label    (near)
1
CALL reg    (near)
2
CALL mem    (near)
2
CALL label    (far)
4
CALL mem    (far)
5
CBW
AL符号扩展成AX
CBW
3
CDQ
EAX符号扩展成EDX:EAX
CDQ
2
CLC
CF清0
CLC
2
- - - - - 0
CLD
DF清0
CLD
2
CLI
IF清0,即关中断
CLI
7
CLTS
清除CR0中任务切换标志 (386+)
CLTS
10
CMC
CF取反,即 CF CF
CMC
2
- - - - - C
CMOVcc reg, src
条件成立src reg, 16/32位 (586+)
cc: 参见Jcc指令。
CMOVcc reg, reg
4~9
CMOVcc reg, mem
续表
指    令
功    能
指 令 形 式
周期数
影响标志位
CMP dst, src
比较:dst-src,据此设置标志位
CMP reg, reg
1
O S Z A P C
CMP reg, mem
2
CMP reg, imm
1
CMP acc, imm
1
CMP mem, reg
2
CMP mem, imm
2
CMPSx
串比较:[(E)SI]-ES:[(E)DI],
然后(E)SI, (E)DI增或减Δ(1/2/4)
x: B, W, D对应字节(1)字(2)双字(4)。DF=0增,否则减
CMPSB
5
O S Z A P C
CMPSW
CMPSD
CMPXCHG dst, reg
acc-dst, 等reg dst,否则
dst acc  (486+)
CMPXCHG reg/mem,reg
5,6
O S Z A P C
CMPXCHG8B dst
EDX:EAX-dst,等ECX:EBX dst,否则EDX:EAX dst (486+)
CMPXCHG8B mem64
10
- - Z - - -
CPUID
CPU标识 EAX,EBX,ECX,EDX
CPUID
14
CWD
AX符号扩展成DX:AX
CWD
2
CWDE
AX符号扩展成EAX
CWDE
3
DAA
加法后的十进制调整AL
DAA
3
? S Z A P C
DAS
减法后的十进制调整AL
DAS
3
? S Z A P C
DEC opr
opr自减1,即opr-1 opr
DEC reg
1
O S Z A P -
DEC mem
3
DIV src
无符号除法
8位:AX÷src,商 AL, 余数 AH
16位:DX:AX÷src,商 AX, 余数 DX
32位:EDX:EAX÷src,商 EAX,余数 EDX
DIV reg
1741
? ? ? ? ? ?
DIV mem
ENTER m, n
m字节局部空间,n级的栈帧 (286+)
ENTER imm16, imm8
11+
HLT
暂停CPU,直到I/O中断发生
HLT
IDIV src
有符号除
8位:AX÷src,商 AL, 余数 AH
16位:DX:AX÷src,商 AX, 余数 DX
32位:EDX:EAX÷src,商 EAX,余数 EDX
IDIV reg
2246
? ? ? ? ? ?
IDIV mem
IMUL src
有符号乘法
8位:AL×src AX
16位:AX×src DX:AX
32位:EAX×src EDX:EAX
IMUL reg
1011
O ? ? ? ? C
IMUL mem
IMUL reg, src
有符号乘法 reg×src reg (286+)
IMUL reg, reg/mem
10
O ? ? ? ? C
IMUL reg, src,imm
有符号乘法 src×imm reg (286+)
IMUL reg, reg/mem,imm
10
O ? ? ? ? C
IN acc, src
端口数据 acc
IN acc, imm8
7
IN acc, DX
7
INC opr
opr自加1,即opr+1 opr
INC reg
1
O S Z A P -
INC mem
3
续表
指    令
功    能
指 令 形 式
周期数
影响标志位
INSx
端口DX数据 ES:[(E)DI],
然后(E)DI增或减Δ(1/2/4)
x: B,W, D对应字节(1)字(2)双字(4);若DF=0增,否则减
INSB
9
INSW
INSD
INT n
FLAGS进栈,IF,TF置0,从[4n]双字单元取
段和偏移地址,并转去执行  (实地址模式)
INT 3
INT+5
INT imm8
INT+6
INTO
若OF=1,则执行INT 4
INTO
4,INT+5
INVD
使Cache无效
INVD
15
INVLPG
使TLB入口无效
INVLPG
29
IRET
中断返回:从堆栈弹出返回的偏移
和段地址,再弹出标志寄存器内容
IRET
7
Jcc opr
条件满足,则转移至opr
Jcc label
1
JA/JNBE    opr
高于(CF=0 ZF=0)
JA/JNBE    label
JAE/JNB/JNC    opr
高于等于(CF=0)
JAE/JNB/JNC    label
JB/JC/JNAE    opr
低于(CF=1)
JB/JC/JNAE    label
JBE/JNA    opr
低于等于(CF=1 ZF=1)
JBE/JNA    label
JE/JZ    opr
等于(ZF=1)
JE/JZ    label
JG/JNLE    opr
大于(ZF=0 SF=OF)
JG/JNLE    label
JGE/JNL    opr
大于等于(SF=OF)
JGE/JNL    label
JL/JNGE    opr
小于(SFOF)
JL/JNGE    label
JLE/JNG    opr
小于等于(ZF=1 SFOF)
JLE/JNG    label
JNE/JNZ    opr
不等于(ZF=0)
JNE/JNZ    label
JNO    opr
无溢出(OF=0)
JNO    label
JNS    opr
非负数(SF=0)
JNS    label
JO    opr
溢出(OF=1)
JO    label
JP/JPE    opr
有偶数个1(PF=1)
JP/JPE    label
JPO/JNP    opr
有奇数个1(PF=0)
JPO/JNP    label
JS    opr
负数(SF=1)
JS    label

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。