String 汇编代码不为';t打印字符串

String 汇编代码不为';t打印字符串,string,assembly,x86,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

所以基本上我在试着用汇编语言编写一个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,offset-msg
lea-ecx,msg

另外,如果您在64位系统上,请确保您是以32位代码进行组装。

您需要使用
mov-ecx,offset-msg
lea-ecx,msg

另外,如果您在64位系统上,请确保您是以32位代码进行组装。

您需要使用
mov-ecx,offset-msg
lea-ecx,msg

另外,如果您在64位系统上,请确保您是以32位代码进行组装。

您需要使用
mov-ecx,offset-msg
lea-ecx,msg

另外,如果您使用的是64位系统,请确保以32位代码进行汇编。

您使用的是什么汇编程序?老实说,我不确定汇编程序实际上是什么,但为了创建二进制文件,我使用命令“as-o HelloWorld.o HelloWorld.s”和“ld-o HelloWorld HelloWorld.o”你在用什么汇编器?老实说,我不确定汇编器实际上是什么,但要创建二进制文件,我使用命令“as-o HelloWorld.o HelloWorld.s”和“ld-o HelloWorld HelloWorld.o”你在用什么汇编器?老实说,我不确定汇编器实际上是什么,但要创建二进制文件,我使用命令“as-o HelloWorld.o HelloWorld.s”和“ld-o HelloWorld HelloWorld.o”您在使用什么汇编器?老实说,我不确定汇编器实际上是什么,但为了创建二进制文件,我使用命令“as-o HelloWorld.o HelloWorld.s”和“ld-o HelloWorld HelloWorld.o”
mov ecx, [msg]