2013-10-15 72 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