printf
アセンブリでの使用に問題があります。ここにコードがあります
push $buff
push $end_str
call printf
add $8, %esp
は、次のo_buff
ように宣言された変数です : .lcomm o_buff, 32
and end_str
is end_str: .ascii "%c\n"
. o_buff
asciiコードを示すバイトは、ここにgdbのサンプルフォームの例x /4b 0x0804a028
です。呼び出す前とポップした後に、レジスタをスタックに保存します。1バイトだけ移動すると:そして(もちろん、xor edxレジスタの前に)適切な出力が得られますが、これは1文字です。誰かが私が間違えた場所を教えてもらえますか? GAS AT&T 構文を使用しています0x0804a028 <o_buff> 49 48 49 48
1010
(
o_buff
printf
movb (%eax,%esi,1), %dl
push %edx