Нулевой флаг установлен неправильно после инструкций MUL / DIV - PullRequest
1 голос
/ 25 января 2020

У меня есть небольшая дилемма относительно сценария ios, в котором ZF устанавливается в NASM.

Насколько я знаю, он должен быть установлен в 1 всякий раз, когда результат арифметического c Операция равна 0, в противном случае она устанавливается на 0. Я видел, что это относится к инструкциям ADD / SUB, но не относится к DIV / MUL и их подписанным корреспондентам.

Это немного кода, который показывает это.

bits 32

global start        

extern exit
import exit msvcrt.dll

segment data use32 class=data

segment code use32 class=code

start:
    mov ax, 128
    sar al, 7
    ; AL is now -1 signed, AH = 0
    imul ah
    ; AX = 0, however ZF is also 0

    push dword 0
    call [exit]

После нескольких минут поиска в Google я обнаружил на каком-то курсе со страницы университета, что в случае инструкций DIV / MUL ZF не определен.

Это правда, и если да, то почему это происходит, даже если после операции, результат которой равен 0, ZF не устанавливается?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...