汇编语言---算术运算指令

指令包括: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.其余指令


1.加法指令add,adc,inc

;使用格式
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

汇编语言---算术运算指令_第1张图片

汇编语言---算术运算指令_第2张图片 注意:inc指令不影响位CF标志,按定义设置其他状态标志

2.减法指令SUB,SBB,DEC

;使用格式
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标志,按定义设置其他状态标志

3.比较指令CMP

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指令相同,但结果不回送目的操作数

4.其余指令

乘法指令: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码

汇编语言---算术运算指令_第3张图片

你可能感兴趣的:(网络安全)