我试图通过堆栈将一个字符串及其长度传递到寄存器
ecx
和edx
,但我遇到了分段错误:
global main
section .data
var db "this is the message",0
varlen equ $- var
section .text
print:
mov eax, 4
mov ebx, 1
mov ecx, [ebp + 4]
mov edx, [ebp + 8]
int 0x80
ret
main:
push varlen
push var
call print
mov eax, 1
mov ebx, 0
int 0x80
如果您希望您的函数有序言和尾声,请执行以下操作:
print:
push ebp
mov ebp, esp
mov eax, 4
mov ebx, 1
mov ecx, [ebp + 8]
mov edx, [ebp + 12]
int 0x80
mov esp, ebp
pop ebp
ret
否则:
print:
mov eax, 4
mov ebx, 1
mov ecx, [esp + 4]
mov edx, [esp + 8]
int 0x80
ret