小编ady*_*ady的帖子

为什么 mov dx,0 修复了这个除法程序?

一个简单的循环来找到最大的除数,这将是根的整数,在这种情况下,在 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
Run Code Online (Sandbox Code Playgroud)

但是,当程序从 2 变为 3 时发生了奇怪的事情,我得到了 hex555D 而不是 8 (8*3)

将 mov dx,0 放入修复它并使事情恢复正常

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

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

x86 assembly dos

1
推荐指数
1
解决办法
844
查看次数

标签 统计

assembly ×1

dos ×1

x86 ×1