一个简单的循环来找到最大的除数,它将是根的整数,在这种情况下,在345三角形中以5为单位
mov ax,3
mul ax
push ax
mov ax,4
mul ax
pop bx
add ax,bx
push ax ;save 25 decimal for repeated loops
mov bx,1
mov bp,sp
agin
mov dx,0 ;fixed problem
mov ax,[bp] ;25 decimal
inc bx ;starts at 2
div bx
cmp bx,ax
jb agin
out
然而,当程序从2变为3时发生了奇怪的事情,我得到了hex555D而不是8(8 * 3)
将mov dx,0置于固定状态并将其恢复正常
我不知道为什么,没有标志改变
任何人都知道为什么?这是签名/未签名的问题吗?
答案 0 :(得分:4)
DIV
指令将数字DX:AX除以操作数。
DX是最重要的词。 AX是低位字。因此,如果要将AX除以BX,则需要将DX归零。