Я довольно новичок в сборке x86 и пытаюсь собрать программу hello world.Я пытаюсь создать подпрограмму, которая записывает один байт в стандартный вывод, но у меня возникла проблема.Строка mov ebx, [esp+1]
(чтобы загрузить переданный байт, когда я вызываю подпрограмму) вызывает segfault.
Я попытался сохранить регистр ebx вместе с самим собой, чтобы убедиться, что он пуст, чтобы убедиться, чтото, что он не связывается с системным вызовом
_start:
push 32h
call _writeByte
; This just jumps to an exit routine
jmp _exit
_writeByte:
; This line causes the problem. If I remove it the program works fine
mov ebx, [esp+1]
xor ebx, ebx
mov eax, 1
mov edi, 1
mov esi, tmp
mov edx, 1
syscall
ret
Почему программа вызывает ошибки?