nasm用printf显示双字

时间:2013-03-06 20:22:04

标签: assembly x86 nasm

这是我的代码(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]修正了它。

1 个答案:

答案 0 :(得分:3)

push num推送num的地址(类似于push msg),但不包含其中包含的值。

您需要push dword [num]