指令包括:add,adc,inc,sub,sbb,dec,cmp,neg,mul,imul,div,idiv,daa,das,aaa,aas,aam,aad,cbw,cwd
重点掌握:add,adc,inc,sub,sbb,dec,cmp
目录
1.加法指令add,adc,inc
示例
2.减法指令SUB,SBB,DEC
3.比较指令CMP
示例
4.其余指令
;使用格式
add reg,imm/reg/mem
add mem,imm/reg
;reg<-reg+reg/mem/imm mem<-mem+reg/imm
-----------------------
adc reg,imm/reg/mem
adc mem,imm/reg
;reg<-reg+imm/reg/mem+CF mem<-mem+imm/reg+CF
;adc指令将源与目的操作数相加,再加上CF标志,结果送到目的操作数,adc指令主要与add配合
----------------------
inc reg/mem
;reg/mem<-reg/mem+1
mov ax,0123
add ax,ax ;ax<-ax,ax
------------------
mov ax,4652h ;ax=4652h
adc ax,0f0fh ;ax=3742h,CF=1
mov dx,0234h ;dx=0234h
adc dx,0f0f0h ;dx=f325h,CF=0
-----------------
inc bx ;bx<-bx+1
;使用格式
sub reg,imm/reg/mem
sub mem,imm/reg
;reg<- reg-imm/reg/mem mem<-mem-imm/reg
---------------
sbb reg,imm/reg/mem
sbb mem,imm/reg
;reg<-(imm/reg/mem)-CF) mem<-mem-imm/reg-CF
---------------
dec reg/mem
;reg/mem<-reg/mem-1
注意:DEC指令不影响进位CF标志,按定义设置其他状态标志
CMP指令将目的操作数减去源操作数,按照定义相应设置状态标志
;使用格式
CMP reg,imm/reg/mem
CMP mem,imm/reg
;reg-imm/reg/mem mem-imm/reg
cmp al,0064H ;al-100
jz below
;al==100,跳转到below执行
sub al,0064H
;al!=100, al<-al-100
inc ah ;ah<-ah+1
below: ...
CMP指令执行的功能与SUN指令相同,但结果不回送目的操作数
乘法指令:MUL,IMUL。MUL无符号乘法(字/字节),IMUL有符号乘法(字/字节)
被乘数被隐藏在al/ax中,结果溢出的数据被保存在ah/dx中
除法指令:div,idiv.div无符号除法(字/字节),idiv有符号除法(字/字节)
除数放在8/16位reg或内存单元中,被除数默认在ax/(dx-ax)中(16位)
结果:al放商,ax放余数;或者ax放商,dx放余数
求反指令:neg。以0减去操作数;
符号拓展指令:CBW,CWD;CBW字节转化为字;CWD,字转化为双字节;
将al/ax的数据扩展为字数据(前者扩展到ah中,后者扩展到dx中)
十进制调整指令:daa,das,aaa,aas,aam,aad
daa/das将加/减之后的结果调整为压缩bcd码
aaa/aas将加/减之后的结果调整为非压缩BCD码
aam/aad将乘/除之后的结果调整为非压缩bcd码