汇编语言王爽第七部分(算术运算指令)

心已入冬 提交于 2020-02-13 12:16:30

算术运算指令

实现寄存器和内存的数据的算术运算。结果影响标志寄存器的内容。

add和sub

求和指令
add ax,bx ax=ax+bx
减法指令
sub ax,bx ax=ax-bx
(1)add/sub 寄存器 , 寄存器/内存单元/立即数
(2)add/sub 内存单元 , 寄存器
(3)运算对象的类型要匹配

adc

带进位加法指令,它利用CF位记录进位值
功能:操作对象1=操作对象1+操作对象2+CF
比如adc ax,bx
(ax)=(ax)+(bx)+CF

sbb

带借位减法指令,它利用CF位记录借位值
功能:操作对象1=操作对象1-操作对象2-CF
比如adc ax,bx
(ax)=(ax)-(bx)-CF

inc和dec

inc功能:操作数=操作数+1
dec功能:操作数=操作数-1

比如
inc bx
(bx)=(bx)+1
dec bx
(bx)=(bx)-1

div

除法指令
(1)除数:有8位和16位,在内存单元或寄存器
(2)被除数:默认放在ax或ax和dx中
注意以下问题
如果除数为8位,al存储商,ah存储余数
如果除数为16位,ax存储商,dx存储余数
比如除数为16位:100001/100,
mov dx,1
mov ax,86a1H
mov bx,100
div bx
比如除数为8位:1001/100
mov ax,1001
mov bl,100
div bl

mul

乘法指令
(1)如果是8位数相乘,一个在AL,另一个在内存字节单元或8位寄存器中,结果在AX中
(2)如果是16位数相乘,一个在AX,另一个在内存字单元或16位寄存器中,结果高位在DX中,低位在AX中
比如:
100*10
mov al,100
mov bl,10
mul bl
结果(ax)=1000

100*10000
mov ax,100
mov bx,10000
mul bx
结果
(ax)=4240h
(dx)=000fh
1000000=F4240H

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!