您的位置:首页 > 其它

汇编中的除法溢出的解决

2014-05-05 18:02 274 查看
说明: 除法的指令为div + 8位(16位)

是8位时,会默认被除数是ax寄存器中的16位,商会保存在al中,ah保存余数

是16位时,会默认被除数是dx(为高位)和ax(低位)组成的32位,商保存在ax中,余数保存在dx中

问题:当有式子1000/1

mov ax,1000

mov bl,1

div bl

则会把商1000放到al中,由于超过了256,所以会产生溢出。

解决方法:可以把ax拆开来分别进行算。

mov ax,1000

mov bl,1

push al ;把低四位的保存起来

mov al,ah

mov ah,0 ;先计算高位的

div bl ;商放到al中,余数放到ah中

mov dl,al ;保存高四位的商

pop al ;取出低四位

div bl ;低四位的商放到al中,余数放到ah中

很好的解决了溢出的问题:http://bbs.csdn.net/topics/380155364
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: