我想在彙編程序中做一個簡單的程序,但我不明白爲什麼,我得到一個錯誤。 我有一臺運行Ubuntu 12.04的64位機器,和彙編編譯器一樣「as」。 我的目標僅僅是在屏幕上打印字符串「你好」。在彙編和字符串中的分段錯誤
我寫了這個:
#print.s
.section .data
.globl StringToPrint
StringToPrint: .asciz "Hello"
.globl _start
_start:
movq $4, %rax
movq $1, %rbx
movq $StringToPrint, %rcx
movq $5, %rdx
int $0x80
_done:
ret
但是,這就是我得到:
$ as print.s -o print.o
$ ld print.o -o print
$ ./print
Hello[1] 10679 segmentation fault (core dumped) ./print
你覺得爲什麼出現這種情況?任何想法?
使用gdb來逐步執行代碼和調試問題。 –
由於您正在編寫64位代碼,請考慮切換到使用「syscall」指令而不是「int $ 0x80」。 – Michael
如果將'.section .data'更改爲'.section .text',會發生什麼? – AlexJ136