汇编语言-实现除法与乘法

1 用DIV实现除法
A. 说明
被除数:默认放在AX或DX和AX中
除数:8位或16位,在寄存器或内存单元中
B. 指令格式:
Div 寄存器
Div 内存单元

被除数AXDX(放高位)和AX(放低位)
除数8位内存或寄存器16位内存或寄存器
ALAX
余数AHDX

示例1:利用除法指令计算100001/100
分析:100001D=186A1H,100D=64H,被除数大于16位,需要用2个寄存器,将1放在DX中,将86A1放在AX中,
用BX存放除数100D=64H。在这里插入图片描述
示例2:利用除法指令计算1001/100
分析:1001D = 03E9H,100D= 64H,用一个寄存器即可,被除数放在AX中。

在这里插入图片描述
示例3:在内存单元中使用除法,用div计算data段中第一个数据除以第二个数据后的结果,商存放在第3个数据的内存单元中。

assume cs:code,ds:data

data segment
  dd 100001
  dw 100
  dw 0
data ends

;在这里写代码
code segment
start: mov ax,data
       mov ds,ax ;ds指向data段
       mov ax,ds:[0] ;也就是0001,双字,占四个字节
       mov dx,ds:[2] ;也就是10
       div word ptr ds:[4] ;除数100
       mov ds:[6],ax ;将商放在 dw 0中

       mov ax,4c00h ;返回值
       int 21h
code ends

end start

2 用MUL实现乘法

8位乘法16位乘法
被乘数(默认)ALAX
乘数8位寄存器或内存字节单元16位寄存器或内存单元
结果AXDX(高位)和AX(低位)

示例1:计算100 * 10,分析:100和10小于8位(255),可以做8位乘法,注意在debug中默认是十六进制。
在这里插入图片描述
示例2:计算100 * 10000,分析:10000 > 255,所以必须做16位乘法。
在这里插入图片描述
结果是:(DX)=000F,(AX)=4240,也就是乘积是:F4240

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值