3

これは私のコードです(test.asm)

予想される「num=1337」

出力: "num = 4199373"

質問:どうすれば修正できますか。

意図:割り当てではなく、アセンブリ言語に対する好奇心。

; nasm -fwin32 test.asm
; gcc test.obj -o test
    extern _printf
    global _main

    section .text
_main:
    push num
    push msg
    call _printf
    add esp, 8
    ret

msg db 'num = %i', 0xa, 0
num dd 1337

push num それをpush dword [num]修正するために変更します。

4

1 に答える 1

3

push numnum( と同様)のアドレスをプッシュしますが、push msgそこに含まれる値はプッシュしません。

push dword [num]代わりに必要です。

于 2013-03-06T20:45:22.507 に答える