0
下面的代碼:有人可以解釋我需要在這個80x86彙編程序中改變什麼嗎?
.586
.MODEL FLAT
INCLUDE io.h ; header file for input/output
.STACK 4096
.DATA
prompt1 BYTE "Enter n1", 0
prompt2 BYTE "Enter n2", 0
n1 dword ?
n2 dword ?
gcdp dword ?
remp dword ?
string BYTE 40 DUP (?)
resultLbl BYTE "gcd is:",0
.CODE
_MainProc PROC
input prompt1, string, 40
atod string
mov n1, eax
input prompt1, string, 40
atod string
mov n2, eax
push n2
push n1
call gcd
add esp, 8
dtoa string, eax
output resultLbl, string
mov eax, 0
ret
_MainProc ENDP
gcd PROC
push ebp
mov ebp, esp
push n2
push n1
mov eax, n1
mov gcdp, eax
mov eax, n2
mov remp, eax
L1: mov eax, gcdp
cdq
idiv remp
mov ebx, remp
mov gcdp, ebx
mov remp, edx
cmp edx, 0
jnz L1
mov eax, gcdp
pop ebx
pop edx
pop ebp
ret
gcd ENDP
END
而這裏的問題(由我的老師說): 「從堆棧讀取參數丟失,請確保您正在閱讀的N2和N1與字節PTR [EBP +8]和字節ptr [ebp + 12],你也不必在程序中推送n1,n2和pop n1n2,其餘的看起來不錯。
那麼...怎麼了?什麼需要改變,什麼是多餘的?