2016-05-03 5 views
0

Я пытаюсь передать две переменные в процедуру, добавить их вместе и вернуть и распечатать результат. Я использую Stack Frame. Я не получаю правильный результат, а скорее неправильный номер. Спасибо.MASM: Как передать значение по ссылке

 INCLUDE PCMAC.INC 


.MODEL SMALL 
.586 
.STACK 100h 
.DATA 
sum DWORD ? 

.CODE 
     EXTRN GetDec :NEAR, PutDDec : NEAR, PutHex : NEAR 
Main PROC 
     _Begin 
     push 10 
     push 20 

     call Test12 

     ; Print result 
     call PutDDec 

     _Exit 
Main ENDP 
Test12 PROC 
    push ebp 
    mov ebp, esp 

    mov eax, [ebp+12] ; 
    add eax, [ebp+8] ; 

    pop ebp 
    ret 8 
Test12 ENDP 
End Main 
+0

Работает ли 'PutDDec', если вы просто загружаете' eax'? Вы использовали отладчик для проверки значения в 'eax'? – Jester

+0

Да 'mov eax, 10' отлично работает, например – user190494

+0

Делает ли' push 10; pop eax' тоже отлично работает? Используйте отладчик и/или обеспечивайте фактическую разборку кода. – Jester

ответ

-1

Очистить регистр EAX перед тем, как нажимать ваши данные в стек.

mov eax,0 
    push 10 
    push 20 

    call Test12 
+1

Это не может решить проблему! 'mov eax, 0' никоим образом не влияет на последующие« push 10 »и« push 20 ». –