【发布时间】:2011-11-05 18:43:55
【问题描述】:
这是在 .com 文件中为 16 位机器编写的汇编代码: 它是 gcd 计算的代码,有 2 个功能: calc_gcd 调用 clac_mod。 calc_mod 工作正常,我假设 calc_gcd 也是如此,但是 calc_gcd 中的打印将数字 2(正确答案顺便说一句)无限次打印到屏幕上。 这是为什么呢?
org 100h
mov ax,0006
mov bx,0002
call calc_gcd
mov ah,4Ch
int 21h
msg dw ' ','$'
calc_mod:
start_mod:
cmp ax, bx
jbe end_mod
sub ax,bx
jmp start_mod
end_mod:
ret
calc_gcd:
cmp bx,0000h
je end_gcd
call calc_mod
xor ax, bx
xor bx, ax
xor ax, bx
add ax, '0'
mov [msg], ax
mov dx,msg
mov ah,9
int 21h
call calc_gcd
end_gcd:
ret
【问题讨论】:
-
您确实需要使用调试器来查看寄存器值是如何弄乱的。