Я новичок в сборке, и я пытался учиться через случайные проблемы. Я использую NASM 64 бит на машине Linux. Я пытался создать последовательность Фибоначчи. Однако при запуске моего исполняемого файла я получаю сообщение об ошибке сегментации (дамп памяти).
section .data
input db 2
section .bss
fib resb 128
section .text
_start:
mov rax, 1
mov rcx, 1
mov rdx, fib
mov rdx, 1
inc rdx
mov rbx, 0
call _fibLoop
call _fibPrint
mov rax, 60
mov rdi, 0
syscall
_fibLoop:
mov [rdx], rax
inc rdx
add rcx, rax
push rcx
mov rcx, [rax]
pop rax
inc rbx
cmp rbx, [input]
jne _fibLoop
ret
Я знаю, что вызов _fibPrint не проблема, потому что он практически ничего не делает. Я предполагаю, что способ, которым я пишу в свою зарезервированную память, несовершенен. Однако я был в состоянии сделать это аналогичным образом в прошлом, поэтому я заблудился в том, что случилось.