Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly MASM:如何通过引用传递值_Assembly_Masm_Masm32 - Fatal编程技术网

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
没有任何影响。