指令系统总结
8086CPU所提供的指令分为以下几大类。
1.传送指令
如mov,push,pop,xchg,in,out等都是传送指令,这些指令实现寄存器与寄存器、寄存器与内存单元、寄存器与端口之间的数据传送。
2.算术指令
如add,sub,mul,div,adc,sbb,inc,dec,cmp等都是算术指令,这些指令实现寄存器和内存中的数据的算术运算。
3.逻辑指令
如and,or,not,xor,shl,shr等都是逻辑指令,除了not指令,它们的执行结果都影响标志寄存器的相关标志位。
4.转移指令
可以修改寄存器IP,或同时修改寄存器CS和IP的指令统称为转移指令。转移指令分为以下几类:
(1)
无条件转移指令,如jmp;
(2)
条件转移指令,如jcxz,je,jne,jb,jnb,ja,jna等;
(3)
循环指令,如loop;
(4)
过程,如call,ret,retf;
(5)
中断,如int,iret。
5.处理机控制指令
如cld,std,cli,sti,nop,clc,stc,wait,esc,lock等都是处理机控制指令,这些指令对标志寄存器或其他处理机状态进行设置。
6.串处理指令
如movsb,movsw,cmps,lods,scas等都是串处理指令,这些指令对内存中的批量数据进行处理。使用这些指令方便地进行批量数据的处理,往往需要和rep,repe,repne等前缀指令配合使用。
特别说明
1.汇编语言可以联系相应知识来认识
例如:
jmp指令(jump 跳跃)
jcxz指令
je指令(e:equal)
jne指令(ne:not equal)
标志寄存器中ZF、SF、CF等(F:flag,Z:zero,S:sign,C:carry)
cld和std指令(d:DF标志)
cli和sti指令(i:IF标志)
2.指令的执行对标志寄存器的影响
8086CPU的指令集中,add、sub、mul、div、and、or等指令的执行影响标志寄存器,它们大多是运算类指令(算术或逻辑运算);mov、push、pop、xchg等指令的执行影响标志寄存器,它们大多是传送指令。
几点忠告
- 方法比知识本身更重要!
- 会用指令手册胜过任何其他求助!
- 写相应指令时一定要注意标志寄存器的标志位是否会改变!