Деление на ноль в 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