我试图在 _format 字符串上调用 printf,但我得到一个错误,而不是打印出两个字符串。在添加 _printStr 函数之前,我能够让程序工作,所以我真的不确定为什么它不会打印出它们。我也可以单独打印出每个字符串,它工作正常(使用 12(%ebp) 和 16(%ebp))。这是我的代码:
.text
.globl _main
_string: .ascii "Hello\0"
_string2: .ascii " World\0"
_format: .ascii "%s %s\0"
_main: // push params, call fn, clear params, return
pushl $_string2
pushl $_string
call _printStr
addl $8, %esp
ret
//function to print a string passed to it on the stack
_printStr:
push %ebp # save old frame ptr
movl %esp, %ebp # set frame ptr
pushl 8(%ebp)
pushl 12(%ebp)
pushl _format
call _printf
addl $12, %esp # clear params from stack
leave
ret
感谢您的宝贵时间,感谢您的帮助。