8086汇编之DIV除法指令

2023年4月22日,周六晚上。

今晚写汇编作业的时候,遇到了DIV指令,于是把学到的知识记录成一篇博客。此外,刚刚已经写了一篇关于MUL指令的博客了。


 除数有8位和16位种,存放在寄存器或者内存中。

当除数为8位:

当除数为 8 位, 则被除数为 16 位

8进制能表示多大的数?

8位二进制能表示的无符号10进制数的范围:0到255

8位二进制能表示的有符号10进制数的范围:-128到127

8位二进制能表示的无符号16进制数的范围:0x00到0xFF

8位二进制能表示的有符号16进制数的范围:-0x80到0x7F

16位能表示多大的数?

16位二进制能表示的有符号16进制数的范围:0x8000到0x7FFF

16位二进制能表示的无符号16进制数的范围:0x0000到0xFFFF

16位二进制能表示的有符号10进制数的范围:-32768到32767

16位二进制能表示的无符号10进制数的范围:0到65535

MOV BL,5 ;把除数放在BL中,5是16进制数

被除数默认在 AX 中存放,

MOV AX,B ;把被除数放在AX中,B是16进制数

然后,用DIV指令让被除数与除数相除

DIV BL ;因为被除数默认存储在AX,所以除法操作只需要一个操作数来提供除数

结果都存放在AX中

低八位AL 存储除法的商,高八位 AH 存储除法的余数。

注:下图中的数都是16进制数

当除数为16位:

当除数为 16 位, 则被除数为 32位

32位能表示多大的数?

32位二进制能表示的有符号16进制数的范围:0x80000000到0x7FFFFFFF

32位二进制能表示的无符号16进制数的范围:0x00000000到0xFFFFFFFF

32位二进制能表示的有符号10进制数的范围:-2147483648到2147483647

32位二进制能表示的无符号10进制数的范围:0到4294967295

16位能表示多大的数?

16位二进制能表示的有符号16进制数的范围:0x8000到0x7FFF

16位二进制能表示的无符号16进制数的范围:0x0000到0xFFFF

16位二进制能表示的有符号10进制数的范围:-32768到32767

16位二进制能表示的无符号10进制数的范围:0到65535

被除数被分成两部分,分别存放在在DX和 AX中, AX 存放高 16 位, DX 存放低 16 位

假如被除数为10进制400000,那么变成16进制就是61A80

注意:下面这种写法是错误的!

MOV AX,0006
MOV DX,1A80

正确写法应该是:

MOV AX,1A80
MOV DX,0006

这是因为人和CPU是不一样的,

在人的眼中,61A80的高16位是0006,低16位是1A80

但在CPU眼中,61A80的高16位是1A80,低16位才是0006

除数放在16位寄存器或者内存中

假如被除数为10进制1000,那么变成16进制就是3E8

MOV BX,3E8

然后,用DIV指令让被除数与除数相除

DIV BX ;因为被除数默认存储在AX和BX,所以除法操作只需要一个操作数来提供除数

正确结果是应该是16进制190,也就是10进制的400

结果存放在AX和DX中,

则 AX存储除法操作的商, DX存储除法操作的余数.

 

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巨龙之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值