编程语言
首页 > 编程语言> > 汇编语言中解决除法溢出的问题

汇编语言中解决除法溢出的问题

作者:互联网

所谓的除法溢出超过寄存器的存储范围.例如对于div bx,此时寄存器是16位,算出来的商超过了16位,AX(保存商的寄存器)无法保存超过16位的数据。

解决方法:例如803/7为例,先拿8/7等于商为1,余数为1,接着余数1乘以10加上0/7为商为1,余数为3,接着再拿余数3乘以10加上3为33/7商为4余数5,那么最后的结果就位商为114,且余数为5

assume cs:code,ss:stack

stack segment stack
		db	256	dup	(0)
stack ends

code segment
		start:
			mov ax,0FFFFh
			mov dx,0ffffh
			mov bx,4h

			push ax
			mov ax,dx
			xor dx,dx;dx清0, xor dx,dx 比mov dx,0快
			div bx
			mov cx,ax

			pop ax
			div bx

			
			
			mov ax,4c00h
			int 21h

code ends
end start

st

标签:汇编语言,mov,dx,余数,ax,除法,bx,stack,溢出
来源: https://www.cnblogs.com/sjlcoder/p/15954556.html