Я пытался написать процедуру сборки, которая печатает число. Я написал процедуру printc
, которая печатает один символ:
printc: push ebp
mov ebp, esp
mov eax, 4
mov ebx, 1
add [ebp + 8], byte '0'
lea ecx, [ebp + 8]
mov edx, 1
int 0x80
mov esp, ebp
pop ebp
ret
Затем я попытался написать printi
так:
printi: push ebp
mov ebp, esp
mov eax, [ebp + 8]
cmp eax, 0
je end
mov ebx, 10
div ebx
push eax
call printi
push edx
call printc
end: mov esp, ebp
pop ebp
ret
Наконец, я позвонил printi
:
_start: push 32
call printi
И получил Segmentation fault (core dumped)
. Есть идеи почему?