Skip to content

8086 指令系统总结

8086 CPU 指令按功能分为以下几类:

一、数据传送指令

指令格式说明
MOVmov dst, src数据传送(寄存器/内存/立即数)
PUSHpush src数据压栈(SP -= 2)
POPpop dst数据出栈(SP += 2)
PUSHFpushf标志寄存器压栈
POPFpopf标志寄存器出栈
XCHGxchg op1, op2两操作数互换
INin al/ax, port从端口读数据
OUTout port, al/ax向端口写数据

二、算术运算指令

指令格式说明
ADDadd dst, src加法
ADCadc dst, src带进位加法(dst = dst + src + CF)
INCinc dst自增 +1
SUBsub dst, src减法
SBBsbb dst, src带借位减法(dst = dst - src - CF)
DECdec dst自减 -1
NEGneg dst取负(求补码)
CMPcmp op1, op2比较(op1-op2,只影响标志,不保存结果)
MULmul src无符号乘法(8位:AX=ALsrc;16位:DX:AX=AXsrc)
IMULimul src有符号乘法
DIVdiv src无符号除法(8位:AL=AX/src, AH=余数;16位:AX=DX:AX/src, DX=余数)
IDIVidiv src有符号除法

三、逻辑运算指令

指令格式说明
ANDand dst, src按位与(常用于清位)
ORor dst, src按位或(常用于置位)
NOTnot dst按位取反
XORxor dst, src按位异或(常用:xor ax, ax 清零)
TESTtest op1, op2按位与,只影响标志(不保存结果)

四、移位指令

指令格式说明
SHLshl dst, 1/cl逻辑左移(高位→CF,低位补0)
SHRshr dst, 1/cl逻辑右移(低位→CF,高位补0)
SALsal dst, 1/cl算术左移(同 SHL)
SARsar dst, 1/cl算术右移(符号位填充高位)
ROLrol dst, 1/cl循环左移
RORror dst, 1/cl循环右移
RCLrcl dst, 1/cl带进位循环左移(含 CF)
RCRrcr dst, 1/cl带进位循环右移(含 CF)

五、串操作指令

指令说明
movsb字节传送:DS:SI → ES:DI,SI/DI ±1
movsw字传送:DS:SI → ES:DI,SI/DI ±2
rep movsb重复执行 CX 次 movsb
cldDF=0,正向传送(地址递增)
stdDF=1,反向传送(地址递减)

六、转移指令

无条件转移

指令说明
jmp 标号短/近跳转(依位移)
jmp far ptr 标号远跳转(段间)
jmp 寄存器近跳转(寄存器值→IP)
jmp word/dword ptr 内存内存间接跳转

条件转移(常用)

指令条件说明
je/jzZF=1等于/为零
jne/jnzZF=0不等于/不为零
jb/jnaeCF=1无符号小于
jnb/jaeCF=0无符号不小于
jaCF=0 且 ZF=0无符号大于
jna/jbeCF=1 或 ZF=1无符号不大于
jl/jngeSF≠OF有符号小于
jge/jnlSF=OF有符号不小于
jg/jnleZF=0 且 SF=OF有符号大于
jle/jngZF=1 或 SF≠OF有符号不大于
jsSF=1为负
jnsSF=0不为负
joOF=1溢出
jnoOF=0不溢出
jcxzCX=0CX 为零则跳

循环与子程序

指令说明
loop 标号CX--,若 CX≠0 则跳
call 标号/寄存器/内存调用子程序(压 IP/CS)
ret子程序近返回(pop IP)
retf子程序远返回(pop IP, pop CS)

七、中断指令

指令说明
int n软中断(触发 n 号中断)
iret中断返回(pop IP, pop CS, popf)
into若 OF=1 则触发 4 号中断
stiIF=1,开中断
cliIF=0,关中断

八、伪指令(汇编器指令,不产生机器码)

伪指令说明
assume cs:seg, ds:seg, ...告知编译器段寄存器与段的对应关系
segment / ends定义段
end [标号]程序结束,标号为入口
db / dw / dd定义字节/字/双字数据
dup重复定义:db 10 dup (0)
org 地址设置当前偏移地址
offset 标号取标号的偏移地址
seg 标号取标号的段地址
word ptr / byte ptr显式指定操作数大小
jmp short / near ptr / far ptr显式指定跳转类型

各章关键指令速查

章节核心指令/概念
02 寄存器CS:IP, DS, SS:SP, jmp
03 内存访问mov, [bx], push, pop
05 looploop, [bx], idata
07 定位方法and, or, [bx+idata], [bx+si]
08 数据处理word/byte ptr, div, mul
09 转移指令jmp (各种), jcxz, loop
10 call/retcall, ret, retf
11 标志寄存器cmp, adc, sbb, movsb, rep, cld/std, pushf/popf
12 内中断int n, iret, TF, IF
13 int 指令int 10h/21h
14 端口in, out, shl, shr
15 外中断sti, cli, int 9/16h
16 定址表数据标号, dd, offset, seg
17 BIOSint 16h, int 13h