TEST (TEST приемник, источник) – логическое «и» без изменения операндов.
TEST приемник, источник (TEST АХ, BL)
Действие: результат = приемник & источник. Приемник: 8, 16 или 32-разрядный регистр или ячейка памяти. Источник: 8, 16 или 32-разрядный регистр, ячейка памяти или константа. Результат сохраняется только во временной памяти АЛУ, по его значению устанавливаются флаг ZF, SF, PF CF=OF=0.
Алгоритм выполнения команды.
Выборка источника и приёмника
Выполнение логического «и».
Установка флагов.
Исключения: #GP, #PF.
DAA (Decimal Adjust AL for Addition) – десятичная коррекция результата сложения двух упакованных двоично-десятичных чисел с целью получения правильного двоично-десятичного числа. Число для коррекции выбирается из регистра AL. Результат сохраняется в регистр AL, по его значению устанавливаются флаг ZF, SF, PF, АF, CF.
DAA (без операндов)
Алгоритм выполнения команды.
Если (EFLAGS.АF=1 или AL[30]>9), то AL= AL+00000110, EFLAGS.АF=1, в зависимости от результата установить EFLAGS.СF.
Иначе EFLAGS.АF=0.
Если (EFLAGS.СF=1 или AL[74]>9), то AL= AL+01100000, EFLAGS.CF=1,
Иначе EFLAGS.СF=0.
Исключения: #GP, #PF.
CWDE (Convert Word to Double Extended) – преобразование слова в двойное слово с учётом знака. Число для преобразования выбирается из регистра AХ. Результат сохраняется в регистр ЕAХ, на флаги не влияет.
CWDE (без операндов)
Действие: ЕАХ[31]=ЕАХ[30]…=ЕАХ[16]=АХ[15] – расширение знакового бита АХ на всё старшее слово регистра ЕАХ.
Исключения: #GP, #PF.
NEG (NEG приемник) – изменить знак операнда. Приемник: 8, 16 или 32-разрядный регистр или ячейка памяти. Результат сохраняется в приёмнике, по его значению устанавливаются флаги ZF, PF, АF, SF, OF (EFLAGS.CF= не EFLAGS.ZF).
NEG приемник (NEG АХ)
Действие: приемник = двоичное дополнение приемника
Алгоритм выполнения команды.
Выборка приёмника
Получение двоичного дополнения приемника.
Установка флагов.
Исключения: #GP, #PF.
Do'stlaringiz bilan baham: |