说我在下面有这个汇编代码。那么调用printf如何知道打印什么?它是否只打印出一直在其上方的地址上的任何内容?在这种情况下“推送消息”?
SECTION .data
msg: db "Hello World!",10,0
SECTION .text
extern printf
global main
main:
push ebp
move ebp, esp
push msg
call printf
move esp, ebp
pop ebp
ret
答案 0 :(得分:0)
当你push msg
时,你正在将变量msg
的字节向量的第一个字节的地址推送到堆栈。当调用printf
时,它会执行并打印第一个(您传递的)每个字节的向量,直到一个告诉它停止的信号字符。输入字符串后,该信号字符为0
。