1

一个简单的循环来找到最大除数,这将是根的整数,在这种情况下,在 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 修复并恢复正常

我不知道为什么,没有标志改变

有谁知道为什么?这是一个签名/未签名的问题吗?

4

1 回答 1

5

DIV指令将数字 DX:AX 除以操作数。

DX 是上面的单词。AX 是较低的单词。因此,如果您想将 AX 除以 BX,则需要将 DX 归零。

于 2013-05-22T02:11:33.153 回答