Assembly MASM:如何通过引用传递值
我试图将两个变量传递给一个过程,将它们相加,然后返回并打印结果。我正在使用堆栈框架。我没有得到正确的结果,而是一个很大的错误数字。多谢各位Assembly MASM:如何通过引用传递值,assembly,masm,masm32,Assembly,Masm,Masm32,我试图将两个变量传递给一个过程,将它们相加,然后返回并打印结果。我正在使用堆栈框架。我没有得到正确的结果,而是一个很大的错误数字。多谢各位 INCLUDE PCMAC.INC .MODEL SMALL .586 .STACK 100h .DATA sum DWORD ? .CODE EXTRN GetDec :NEAR, PutDDec : NEAR, PutHex : NEAR Main PROC _Begin push
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
在将数据推入堆栈之前清除EAX寄存器
mov eax,0
push 10
push 20
call Test12
如果只加载
eax
,则putdec
是否有效?您是否使用了调试器来检查eax
中的值?是的,`mov eax,10`工作正常,例如,push 10;pop eax也能正常工作吗?使用调试器和/或提供代码的实际反汇编。当前没有可使用的调试器。有趣的。。。推10;pop eax不工作,但按10键;爆斧。我认为有一个问题,作为一个单词推送和作为一个双单词接收听起来像你在16位模式。如果您的环境是32位的,则将汇编程序切换到32位模式。如果您的环境是16位的,那么您当然需要使用16位代码。这无法解决问题mov eax,0
对后续的push 10
和push 20
没有任何影响。