分析:
前面大概都能看懂,主要书那个公式是怎样分析出来的,理解后代码就很简单了。
好比如一个最大存99的数,你要计算1012/3;
先拿出10/3 = 3;注意这个就是余数的最高位
然后剩下(1*100+12)/3,不用说,这个就是低位,你可以笔算来模拟一下你是怎样算出1012/3你就知道我说啥了。
他为什么会有65535这个数字,其实就是ax寄存器最大的数值。
公式X/N中,int那部分就是除数的高位,那么剩下的就是低位了。
assume cs:codesg
codesg segment
start:
mov ax,4240h
mov dx,000fh
mov cx,0Ah
call divdw
mov ax,4c00h
int 21h
divdw:
mov bx,ax
mov ax,dx
mov dx,0
div cx ;计算int的内容
push ax ;入栈保存高位数
mov ax,bx
div cx ;计算后面的内容
mov cx,dx
pop dx ;出站到高位数
ret
codesg ends
end start
本文通过一个具体的16位汇编语言程序实例,详细解析了如何使用寄存器进行大数除法运算的过程。通过对程序的逐步分析,解释了如何利用AX寄存器的最大值65535来实现复杂除法运算,并展示了如何将结果拆分为高位和低位。
581

被折叠的 条评论
为什么被折叠?



