Сумма элементов массива FASM
Я новичок в ассемблере, пытаюсь реализовать сложение чисел в массиве. Написал такой код. Но при его выполнении я получаю примерно вот такую последовательность "5188146770731009848". Помогите пожалуйста разобраться, что здесь не так
format ELF64
public _start
section '.data' writable
arr db 3, 4, 6
section '.bss' writable
_bss_char rb 1
_start:
mov rax, 3 ;количество итераций
mov rbx, 0 ;хранит сумму элементов
mov rcx, arr ;указывает на элемент для выполнения операции
.top:
add rbx, [rcx] ;сумма элементов
add rcx, 1 ;перемещаемся на следующий элемент
dec rax ;уменьшаем счетчик на 1
jnz .top
mov rax, rbx
call print_number
call exit
print_number:
push rax
push rbx
push rcx
push rdx
xor rcx, rcx
.next_iter:
mov rbx, 10
xor rdx, rdx
div rbx
add rdx, '0'
push rdx
inc rcx
cmp rax, 0
je .print_iter
jmp .next_iter
.print_iter
cmp rcx, 0
je .close
pop rax
call print_char
dec rcx
jmp .print_iter
.close:
pop rdx
pop rcx
pop rbx
pop rax
ret
print_char:
push rax
push rbx
push rcx
push rdx
mov [_bss_char], al
mov rax, 1
mov rdi, 1
mov rsi, _bss_char
mov rdx, 1
syscall
pop rdx
pop rcx
pop rbx
pop rax
ret
exit:
mov rax, 60
xor rdi, rdi
syscall