这是用 .com 文件编写的 16 位机器的汇编代码:它是 gcd 计算的代码,有 2 个函数:calc_gcd 调用 clac_mod。calc_mod 工作正常,我假设 calc_gcd 也是如此,但是 calc_gcd 中的打印将数字 2(BTW 正确答案)无限次打印到屏幕上。这是为什么?
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