在程序集中使用printf调用

时间:2013-04-27 14:41:27

标签: linux assembly printf gas

我在汇编中使用printf时遇到问题。这是一段代码

push $buff
push $end_str
call printf
add $8, %esp

o_buff是一个声明如下的变量:.lcomm o_buff, 32end_strend_str: .ascii "%c\n"。在o_buff中是为ascii代码指定的字节,这里是一个示例形式gdb x /4b 0x0804a028示例:0x0804a028 <o_buff> 49 48 49 48,它假设为1010状态,但我始终得到{{} 1}}无论(变量内部是什么。 我在调用o_buff之前将注册保存在堆栈中,之后我弹出它们。当我只移动一个字节:printf然后movb (%eax,%esi,1), %dl(当然在i xor edx寄存器之前)我得到一个正确的输出,但这只是一个字符。有人能指出我犯错的地方吗?我正在使用GAS AT&amp; T语法

0 个答案:

没有答案