Assembly nasm使用printf显示dword
这是我的代码(test.asm) 应为“num=1337” 输出:“num=4199373” 问题:我如何修复它 目的:对汇编语言的好奇心,而不是作业Assembly nasm使用printf显示dword,assembly,x86,nasm,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
; 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]
修复了它。push num
推送num
的地址(类似于push msg
),但不推送其中包含的值
您需要
push dword[num]
。NASM的COFF不是微软的PE-COFF。NASM的COFF与DJGPP gcc支持的COFF相同。