Деление на ноль в x86 64 nasm. Не могу найти ошибку в программе

Код программы:

_start:
    mov rax, 2
    push rax ; 2
    mov rax, 21
    push rax ; 21, 2
    mov rax, 40
    push rax ; 40, 21, 2
    pop rax ; 40
    pop rbx ; 21
    div rbx ; 19(по идее)
    push rdx ; 19, 2
    pop rax ; 19
    pop rbx ; 2
    div rbx 
    push rax ; 9 (по идее)
    push QWORD [rsp + 0]
    mov rax, 60
    pop rdi
    syscall
    mov rax, 60
    mov rdi, 0
    syscall

Несмотря на то, что, как мне кажется, деления на ноль не происходит, вот что возвращает команда:

./build/out 
Исключение в операции с плавающей точкой (образ памяти сброшен на диск)

Возможно, вопрос глупый, но, как мне кажется, я все делаю правильно и поиск ошибки не дал результатов.

Хотелось бы указать, что вычисляю я значение этого выражения: 40 % 21 / 2


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