指令系统总结
我们对8086CPU的指令系统进行一下总结。若要详细了解8086指令系统中的各个指令的用法,可以查看有关的指令手册
8086CPU提供以下几大类指令:
- 数据传送指令:
mov、push、pop、pushf、popf、xchg
等都是数据传送指令,这些指令实现寄存器和内存、寄器和寄存器之间的单个数据传送 - 算术运算指令:
add、sub、adc、sbb、inc、dec、cmp、imul、idiv、aaa
等都是算术运算指令,这些指令实现存器和内存中的数据的算数运算。它们的执行结果影响标志寄存器的sf、zf、of、cf、pf、af
位 - 逻辑指令:
and、or、not、xor、test、shl、shr、sal、sar、rol、ror、rcl、rcr
等都是逻辑指令。除了not指外,它们的执行结果都影响标志寄存器的相关标志位 - 转移指令:可以修改IP,或同时修改CS和IP的指令统称为转移指令
- 转移指令分为以下几类:
- 无条件转移指令,比如:
jmp
- 条件转移指令,比如:
jcxz、je、jb、ja、jnb、jna
等 - 循环指令,比如:
loop
- 过程,比如:
call、ret、retf
- 中断,比如:
int、iret
- 无条件转移指令,比如:
- 转移指令分为以下几类:
- 处理机控制指令:对标志寄存器或其他处理机状态进行设置,
cld、std、cli、sti、nop、clc、cmc、stc、hlt、wait、esc、lock
等都是处理机控制指令 - 串处理指令:对内存中的批量数据进行处理,
movsb、movsw、cmps、scas、lods、stos
等。若要使用这些指令方便地进行批量数据的处理,则需要和rep、repe、repne
等前缀指令配合使用