0

所以基本上我正在尝试在汇编中编写一个 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]

但这似乎没有什么不同。

4

1 回答 1

3

您需要使用mov ecx, offset msglea ecx, msg。如果您在 64 位系统上,还要确保您正在组装为 32 位代码。

于 2013-10-15T15:30:45.063 回答