2
這是16位機器的.com文件中寫的彙編代碼: 它是一個gcd計算代碼,有2個函數:calc_gcd調用clac_mod。 calc_mod工作正常,我也假設calc_gcd,但calc_gcd中的打印將數字2(正確答案BTW)無限次數打印到屏幕上。 這是爲什麼?爲什麼這個程序集.com文件打印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
您確實需要使用調試器來查看寄存器值是如何變得混亂的。 –