我只是一个菜鸟,试图用32位Linux程序集(AT&T语法)编写一个简单的“ Hello World”程序。这是我的代码:
.section .data
msg:
.ascii "Text\n"
msgLen:
.long 5
.section .text
.globl _start
_start:
movl $4, %eax
movl $1, %ebx
movl msg, %ecx
movl msgLen, %edx
int $0x80
movl $1, %eax
movl $0, %ebx
int $0x80
我汇编程序,链接它,运行它,……什么都没有。我没有任何错误。它只是行不通,我没有任何输出。我尝试更改msgLen
的值,但我似乎无济于事。在这一点上,我很生气。任何帮助将不胜感激!
更新:因此,在查看了Peter Cordes的评论后,我在$
和msg
之前加上了msgLen
,并且我的程序成功打印了“文本”和换行符,但也出现了其他乱码。这是我得到的输出:
Text
�`�@�` �`'�`print.omsgmsgLen__bss_start_edata_end.symtab.strtab.shstrtab.text.data@�"!�`� �� �,�'$