装配中的printf如何知道要打印什么?

时间:2016-12-17 03:11:13

标签: assembly nasm

说我在下面有这个汇编代码。那么调用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

1 个答案:

答案 0 :(得分:0)

当你push msg时,你正在将变量msg的字节向量的第一个字节的地址推送到堆栈。当调用printf时,它会执行并打印第一个(您传递的)每个字节的向量,直到一个告诉它停止的信号字符。输入字符串后,该信号字符为0