Сумма элементов массива 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

Ответы (0 шт):