FizzBuzz в сборке - ошибка сегментации

Я пытаюсь написать FizzBuzz на ассемблере и постоянно вижу ошибку сегментации. До сих пор я определил, что это не мои процедуры печати (потому что я удалил их содержимое и проблема не устранена), и ошибка скрывается где-то в основной функции.

Я получил этот вывод, когда я запускаю программу:

fizzSegmentation fault

Приводит меня к мысли, что проблема не в использовании деления и поиске остатков. Но я могу ошибаться, я не собирался в течение двух лет ...

SECTION .data
global _start
    fizz: db "fizz", 4
    buzz: db "buzz", 4

SECTION .bss
    counter: resb    1

SECTION .text
_start:

    mov ax,0
    mov [counter],ax

main_loop:

    cmp ax,100          ;from 0 to 100
    je  exit            ;
    mov bl,3            ;divisor
    mov ah,0            ;here will be a remainder
    div bl              ;divide
    cmp ah,0            ;compare the remainder with 0
    je  print_fizz      ;print fizz if they equal
    mov bl,5            ;new divisor
    mov ah,0            ;do I have to do it every time?
    div bl              ;divide
    cmp ah,0            ;compare the remainder with 0
    je  print_buzz      ;print buzz if they equal
    jmp print_ax        ;print contents of ax if not
    inc ax              ;increment ax
    jmp main_loop       ;jump to label

print_ax:
    ret

print_fizz:
    ret

print_buzz:
    ret

exit:
    mov rax,1
    mov rbx,0
    int 80h
    ret

Я компилирую, используя:

yasm -f elf64 -o fizzbuzz.o fizzbuzz.asm
ld -d -o fizzbuzz fizzbuzz.o

Ответы на вопрос(2)

Ваш ответ на вопрос