План Язык программирования Ассемблер и его возможности


Операторы манипуляции флагами


Download 95.62 Kb.
bet9/12
Sana17.06.2023
Hajmi95.62 Kb.
#1549318
TuriЛекция
1   ...   4   5   6   7   8   9   10   11   12
Bog'liq
Лекция №17b

Операторы манипуляции флагами.
Большинство операторов не только выполняют действия над своими операндами, но и выполняют действия над флажками - битами регистра флагов FLAGS.
Рис. 2.1. Структура регистра флагов
Семь битов в FLAGS не используются. Остальные биты (флаги) делятся на условные и управляющие.
Условные флаги
Отражают результат предыдущей арифметической или логической операции. Это:
1.SF флаг знака. Равен старшему биту результата. Т.к. в дополнительном коде старший бит отрицательных чисел содержит 1, а у положительных он равен 0, то SF показывает знак предыдущего результата;
2.ZF флаг нуля. Устанавливается в 1 при получении вулевого результата и сбрасывается в 0, если результат не равен 0;
3.PF флаг паритета. Устанавливается в 1, если младшие 8 битов результата содержат четное число единиц: в противном случае он сбрасывается в 0;
4.CF флаг переноса. При сложении (вычитании) устанавливается в 1, если возникает перенос (заем) из старшего бита (в старший бит);
5.AF - флаг вспомогательного переноса. Устанавливается в 1, если при сложении (вычитании) возникает перенос (заем) из бита 3. Флаг предназначен только для двоично-десятичной арифметики;
6.OF - флаг переполнения. Устанавливается в 1, если знаковый бит изменился в той ситуации, когда этого не должно было произойти.
Пусть, например, команда ADD выполнила следующее сложение:
Флаги управления
Влияют на выполнение специальных функций. Эти флажки устанавливаются лишь несколькими специальными инструкциями. Это флажки:



1.DF флаг направления. Он используется при выполнении инструкций, обрабатывающих цепочки - последовательности ячеек памяти. Если флаг сброшен,
цепочка обрабатывается с первого элемента, имеющего наименьший адрес. Иначе - цепочка обрабатывается от наибольшего адреса к наименьшему;
2.IF флаг разрешения прерываний. Когда установлен этот флажок, ЦП выполняет маскируемые прерывания. Иначе эти прерывания игнорируются;
3.TF флаг трассировки. Если этот флажок установлен, то после выполнения каждой машинной инструкции ЦП генерирует внутреннее аппаратное прерывание (прерывание номер 1).
Существуют семь операторов, которые предназначены только для манипуляций флажками FLAGS. Они не имеют операндов и позволяют изменять CF, DF и IF. Это:
1.STC - устанавливает флаг переноса CF;
2.CLC - сбрасывает CF;
3.CMC - инвертирует CF;
4.STD - устанавливает флажок направления DF;
5.CLD - сбрасывает DF;
6.STI - устанавливает флажок разрешения прерываний IF;
7.CLI сбрасывает IF.
Следующие операторы выполняют пересылку содержимого регистра FLAGS:
1.LAHF - пересылает младший байт FLAGS в регистр АН;
2.SAHF - пересылает содержимое регистра АН в FLAGS;
3.PUSHF - записывает содержимое FLAGS в стек;
4.POPF - выбирает слово из вершины стека и помещает его в регистр FLAGS.

Download 95.62 Kb.

Do'stlaringiz bilan baham:
1   ...   4   5   6   7   8   9   10   11   12




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling