汇编代码不打印字符串

时间:2013-10-15 15:07:46

标签: string assembly x86

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

但它似乎没有什么区别。

1 个答案:

答案 0 :(得分:3)

您需要使用mov ecx, offset msglea ecx, msg。 如果您使用的是64位系统,还要确保将其组装为32位代码。