我得到了一個分段錯誤,下面的彙編代碼只是打印出一條消息,儘管打印是由一個單獨的函數處理的,所以我很確定我沒有在堆棧中分配正確的空間消息和長度。分段錯誤彙編
下面是代碼:
section .data
print_msg: DB "H", 10, 0
len: equ $-print_msg
print_msg2: DB "BYE WORLD", 10, 0
len2: equ $-print_msg2
section .text
global main
main:
push ebp
mov ebp, esp
push DWORD len
push print_msg
call _write
push DWORD len2
push print_msg2
call _write
leave
ret
_write:
push ebp
mov ebp, esp
push ebx
mov eax, 4
mov ebx, 1
mov ecx, [ebp+8]
mov edx, [ebp+12]
int 80h
pop ebx
leave
ret
不會'push print_msg'推一個指針,而不是字符? – James
@詹姆斯:的確如此。另一個問題是'_write'中的'ebp'相對偏移量是錯誤的(舊的'ebp'將位於'[ebp + 0]',並且返回地址位於'[ebp + 4]')。 – Michael
@James Oh等指針只有4個字節? – user28130