2016-05-03 12 views
0

プロシージャに2つの変数を渡し、それらを一緒に追加し、結果を返して印刷しようとしています。スタックフレームを使用しています。私は正しい結果を得ていない、むしろ大きな誤った数を得ている。ありがとうございました。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

'eax'をロードするだけで' PutDDec'は動作しますか?あなたは 'eax'で値をチェックするためにデバッガを使いましたか? – Jester

+0

はい 'mov eax、10'はうまく動作します – user190494

+0

' 10を押します;ポップeax'もうまく動作しますか?デバッガを使用するか、コードの実際の逆アセンブリを提供する。 – Jester

答えて

-1

データをスタックにプッシュする前に、EAXレジスタをクリアしてください。

mov eax,0 
    push 10 
    push 20 

    call Test12 
+1

これは問題を解決できません! 'mov eax、0'は決して後の' push 10'と 'push 20'に影響しません。 –

関連する問題