在进行除法运算时,会遇到溢出的问题,在16位寄存器中用多加寄存器的方法来解决这个问题
对于除法运算的溢出有如下公式:
将溢出除法转换为多个不溢出的除法的计算公式
先将一个32位的数放在两个寄存器中,假设高位在dx中,低位在ax中,除数放在cx中得到的结果的 商的高位= dx/cx结果的商
商的低位= ax/cx结果的商
余数= ax/cx结果的余数
下面展示一下代码:
assume cs:code
;将溢出除法转换为多个不溢出的除法的计算公式
;先将一个32位的数放在两个寄存器中,假设高位在dx中,低位在ax中,除数放在cx中
;得到的结果的 商的高位= dx/cx结果的商
; 商的低位= ax/cx结果的商
; 余数= ax/cx结果的余数
code segment
start: mov ax, 0A120H ;输入数的低位存放在ax中,这里的数字的十进制是500000
mov dx, 0007H ;输入数的高位存放在dx中
mov cx, 10 ;除数存放在cx中
call divdw ;调用子函数
mov ax, 4C00H