2013-10-15 73 views
0

所以基本上我试图在汇编中编写一个hello世界程序。程序退出,但不会打印字符串。任何地方也没有错误。我怀疑我是以某种方式宣布或使用错误的字符串。汇编代码不会打印字符串

.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

你在用什么汇编语言? – tom

+0

老实说,我不确定什么汇编实际上是,但创建二进制我使用命令“as -o HelloWorld.o HelloWorld.s”和“ld -o HelloWorld HelloWorld.o” – Latedi

回答

3

您需要使用mov ecx, offset msglea ecx, msg。 还要确保你正在装配为32位代码,以防你在64位系统上。

+0

谢谢,它工作完美。 – Latedi