所以基本上我正在尝试在汇编中编写一个hello world程序。该程序按原样退出,但沿途没有打印字符串。任何地方都没有错误。我怀疑我是以某种方式声明或使用字符串错误。
.intel_syntax noprefix
.data
msg:
.ascii "Hello World"
.text
.globl _start
_start:
mov eax, 4 #call write
mov ebx, 1 #output into stdout
mov ecx, msg #what to write
mov edx, 11 #length of what to write
int 0x80
mov eax, 1 #exit
mov ebx, 0
int 0x80
我也试过替换
mov ecx, msg
与
mov ecx, [msg]
但它似乎没有什么区别。
答案 0 :(得分:3)
您需要使用mov ecx, offset msg
或lea ecx, msg
。
如果您使用的是64位系统,还要确保将其组装为32位代码。