【发布时间】:2013-06-21 14:56:00
【问题描述】:
我正在尝试学习 NASM 汇编(在 Linux 上,因此是 AT&T 语法),但我一直在尝试通过系统调用打印“Hello World”。下面的代码汇编并运行良好,但它不打印任何内容。有什么线索吗?
.text
.globl main
main:
movl $4, %eax
movl $1, %ebx
movl string1, %ecx
movl $20, %edx
int $0x80
.data
string1: .string "hello world"
更新:我找到了。我需要在“string1”前面包含一个 $ 符号,因此该行变为“movl $string1, %ecx”。如果我不包含它会发生什么,有什么解释吗?
【问题讨论】:
-
为了清楚起见,这不是 Nasm。这是“AT&T 语法”。 Gas 使用它,Yasm 会接受它作为替代方案,但 Nasm 不会......