У меня есть небольшая дилемма относительно сценария 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 не устанавливается?