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位数的由来。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)