DIV单片机汇编语言啥意思?如何算?

DIV单片机汇编语言啥意思?如何算?,第1张

div在编程中又叫做整除,即只得商的整数。

div元素是用来为html文档内大块(block-level)的内容提供结构和背景的元素。div的起始标签和结束标签之间的所有内容都是用来构成这个块的,其中所包含元素的特性由div标签的属性来控制,或者是通过使用样式表格式化这个块来进行控制。

div是除法指令,

使用

div

做除法的时候:

(1)

除数:

8

位和

16

位两种,

在一个寄存器或内存单元中.

(2)

被除数:

默认放伏拍在

ax

dx

ax

中,

如果除数为

8

位,

被除数则为

16

位,

默认在

ax

中存放

如果除数为

16

位,

被除数则为

32

位,

dx

ax

中存放,

dx

存放高

16

位,

ax

存放胡弯低

16

位.

(3)

结果:

如果除数为

8

位,

则缺做羡

al

存储除法 *** 作的商,

ah

存储除法 *** 作的余数

如果除数为

16

位,

ax

存储除法 *** 作的商,

dx

存储除法 *** 作的余数.

CPU 执行除法指令(如:DIV  CX、DIV  BL)时,是有可能溢出的。

如果被除数较大,或除数较小,都可能使“商”超出预定位数,此时,就会溢出。

特别是当除数为零时,必然会出现:Divide  overflow。

直接使用 DIV 指令,芦简有一定的风险,一不小心就溢闷哗隐出了。

特别是数字不明确的时候。

因此,在执行 DIV 指令之前,应该加以判断,以免发生溢出。

一般来说,当被除数的高位,小于除数时,就不会发生“溢出”。

如果高位为零,即 DX = 0 或 AH = 0,这就肯定不会溢出。

-----------------------

较好的方法是:编写一个“不会溢出”的除法程序。

方法思路如下:

左图是 CPU 执行 16 位数除以 8 位数时的 *** 作。

在右图中,

被除数:1A 2B 3C 4DH,有 32 位数。

除数是:BL,仅有 8 位数。

商,是:32 位数。

按照图中的步骤,需要执行四次 DIV  BL。

只要 BL 不为零,就绝对不会发生溢出。

按此思路,被除数的字节数,可以继续增加,仅受制于内存的大小。

这就是说:被除数,可以认为是无蚂厅限的。

绝不限于王爽所介绍的 DIVDW 所用的四个字节。

这是CPU设计时定义好的东西,并不是汇编语言决定的。绝搭

CPU在设计时,就做了这样的规则:

如果是8位除,则将被除数(al)扩展到16位,即将ah+al的值做为被除数(不管ah原来是什么值,使用ax做为被除数,所以如陪宏明果做al除以8位数,需要自己先将ah清0)

而ax = ah * 100H + al

同理,如果是16位除,则需要将ax扩展为32位,而定义为:dx+ax,(dx自己清0)

值就是dx * 10000H + ax,这就是芦告32位数的由来。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12561887.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存