Арифметическо-логическое устройство

8-битное АЛУ может выполнять арифметические операции сложения, вычитания, умножения и деления; логические операции И, ИЛИ, исключающее ИЛИ, а также операции циклического сдвига, сброса, инвертирования и т. п. В АЛУ имеются програмно недоступные регистры Т1 и Т2, предназначенные для временного хранения операндов, схема десятичной коррекции и схема формирования признаков.

Простейшая операция сложения используется в АЛУ для инкрементирования содержимого регистров, продвижения регистра-указателя данных и автоматического вычисления следующего адреса РПП. Простейшая операция вычитания используется в АЛУ для декрементирования регистров и сравнения переменных.

Простейшие операции автоматически образуют "тандемы" для выполнения в АЛУ таких операций, как, например, инкрементирование16-битных регистровых пар. В АЛУ реализуется механизм каскадного выполнения простейших операций для реализации сложных команд. Так, например, при выполнении одной из команд условной передачи управления по результату сравнения в АЛУ трижды инкрементируется СК, дважды производится чтение из РПД, выполняется арифметическое сравнение двух переменных, формируется 16-битный адрес перехода и принимается решение о том, делать или не делать переход к программе. Все перечисленные операции выполняются в АЛУ всего лишь за 2 мкс.

Важной особенностью АЛУ является его способность оперировать не только байтами, но и битами. Отдельные программно-доступные биты могут быть установлены, сброшены, инвертированы, переданы, проверены и использованы в логических операциях. Эта способность АЛУ оперировать битами столь важна, что во многих описаниях МК51 говорится о наличии в нем "булевского процессора". Для управления объектами часто применяются алгоритмы, содержащие операции над входными и выходными булевскими переменными (истина/ложь), реализация которых средствами обычных микропроцессоров сопряжена с определенными трудностями.

Таким образом, АЛУ может оперировать четырьмя типами информационных объектов: булевскими (1 бит), цифровыми (4 бита), байтными (8 бит) и адресными (16 бит). В АЛУ выполняется 51 различная операция пересылки или преобразования этих данных. Так как используется 11 режимов адресации (7 для данных и 4 для адресов), то путем комбинирования "операция/режим адресации" базовое число команд 111 расширяется до 255 из 256 возможных при однобайтном коде операции.

Резидентная память

Память программ и память данных, размещенные на кристалле МК51, физически и логически разделены, имеют различные механизмы адресации, работают под управлением различных сигналов и выполняют разные функции.

Память программ (ПЗУ или СППЗУ) имеет емкость 4 Кбайта и предназначена для хранения команд, констант, управляющих слов инициализации, таблиц перекодировки входных и выходных переменных и т. п. РПП имеет 16-битную шину адреса, через которую обеспечивается доступ из счетчика команд или из регистра-указателя данных. Последний выполняет функции базового регистра при косвенных переходах по программе или используется в командах, оперирующих с таблицами.

Память данных (ОЗУ) предназначена для хранения переменных в процессе выполнения прикладной программы, адресуется одним байтом и имеет емкость 128 байт. Кроме того, к адресному пространству РПД примыкают адреса регистров специальных функций (РСФ), которые перечислены в табл. 8.

Таблица 8. Блок регистров специальных функций

Символ Наименование Адрес
ACC[1] Аккумулятор 0E0H
B1 Регистр-расширитель аккумулятора 0F0H
PSW1 Слово состояния программы 0D0H
SP Регистр-указатель стека 81H
DPTR Регистр-указатель данных (DPH) (DPL) 83H
82H
P01 Порт 0 80H
P11 Порт 1 90H
P21 Порт 2 0A0H
P31 Порт 3 0B0H
IP1 Регистр приоритетов 0B8H
IE1 Регистр маски прерываний 0A8H
TMOD Регистр режима таймера/счетчика 89H
TCON1 Регистр управления/статус таймера 88H
TH0 Таймер 0 (старший байт) 8CH
TL0 Таймер 0 (младший байт) 8AH
TH1 Таймер 1 (старший байт) 8DH
TL1 Таймер 1 (младший байт) 8BH
SCON1 Регистр управления приемопередатчиком 98H
SBUF Буфер приемопередатчика 99H
PCON Регистр управления мощностью 87H

Память программ, так же как и память данных, может быть расширена до 64 Кбайт путем подключения внешних БИС.

Аккумулятор и СПП. Аккумулятор является источником операнда и местом фиксации результата при выполнении арифметических, логических операций и ряда операций передачи данных. Кроме того, только с использованием аккумулятора могут быть выполнены операции сдвигов, проверка на нуль, формирование флага паритета и т. п. При выполнении многих команд в АЛУ формируется ряд признаков операции (флагов), которые фиксируются в регистре ССП.

Наиболее "активным" флагом ССП является флаг переноса, который принимает участие и модифицируется в процессе выполнения множества операций, включая сложение, вычитание и сдвиги. Кроме того, флаг переноса (С) выполняет функции "булевого аккумулятора" в командах, манипулирующих с битами. Флаг переполнения (OV) фиксирует арифметическое переполнение при операциях над целыми числами со знаком и делает возможным использование арифметики в дополнительных кодах. АЛУ не управляет флагами селекции банка регистров (RS0, RS1) и их значение полностью определяется прикладной программой и используется для выбора одного из четырех регистров банков.

Широкое распространение получило представление о том, что в микропроцессорах, архитектура которых опирается на аккумулятор, большинство команд работают с ними, используя адресацию "по умолчанию" (неявную). В МК51 дело обстоит иначе. Хотя процессор в МК51 имеет в своей основе аккумулятор, однако он может выполнять множество команд и без участия аккумулятора. Например, данные могут быть переданы из любой ячейки РПД в любой регистр, любой регистр может быть загружен непосредственным операндом и т. д. Многие логические операции могут быть выполнены без участия аккумулятора. Кроме того, переменные могут инкрементированы, декрементированы и проверены (test) без использования аккумулятора. Флаги и управляющие биты могут быть проверены и изменены аналогично.

Регистры-указатели.8-битный указатель стека (РУС) может адресовать любую область (РПД). Его содержимое инкрементируется прежде, чем данные будут заполнены в стеке в ходе выполнения команд PUSH и CALL. Содержимое РУС декрементируется после выполнения команд POP и RET. Подобный способ адресации элементов стека называют прединкрементным/постдекрементным. В процессе инициализации МК51 после сигнала СБР в РУС автоматически загружается код07Н. Это значит, что если прикладная программа не переопределяет стек, то первый элемент данных в стеке будет располагаться в ячейке РПД с адресом 08Н.

Двухбайтный регистр-указатель данных (РУД) обычно используется для фиксации 16-битного адреса в операциях с обращением к внешней памяти. Командами МК51 регистр-указатель данных может быть использован или как 16-битный регистр, или как два независимых 8-битных регистра (DPH и DPL).

5.4. Таймер/счетчик

В составе средств МК51 имеются регистровые пары с символическими именами ТН0, TL0 и TH1, TL1, на основе которых функционируют два независимых программно–управляемых 16–битных таймера/счетчика событий. При работе в качестве таймера содержимое T/C инкрементируется в каждом машинном цикле, т.е. через каждые 12 периодов резонатора. При работе в качестве счетчика содержимое Т/С инкрементируется под воздействием перехода из 1 в 0 внешнего входного сигнал; подаваемого на соответствующий (T0, T1) вывод МК51.

Для управления режимами работы T/C и для организации взаимодействия таймеров с системой прерывания используются два регистра специальных функций (РРТС и РУСТ), описание которых приводите в табл. 9 и табл. 10 соответственно. Как следует из описания управляющих бит РРТС, для обоих T/C режимы работы 0, 1 и 2 одинаковы. Режимы для T/C0 и T/C1 различны.

Таблица 9. Регистр режима работы таймера/счетчика

Символ Позиция Имя и назначение
GATE TMOD.7 для T/C1 и TMOD.3 для T/C0 Управление блокировкой. Если бит установлен, то таймер/счетчик "x" разрешен до тех пор, пока на входе "INTx" высокий уровень и бит управления "TRx" установлен. Если бит сброшен то Т/С разрешается, как только бит управления "TRx" устанавливается
Арифметическо-логическое устройство - student2.ru TMOD.6 для T/C1 и TMOD.2 для T/C0 Бит выбора режима таймера или счетчика событий. Если бит сброшен, то работает таймер от внутреннего источника сигналов синхронизации. Если бит установлен, то работает счетчик от внешних сигналов на входе "Тх"
M1 TMOD.5 для T/C1 и TMOD.1 для T/C0 Режим работы (см. примечание)
M0 TMOD.4 для T/C1 и TMOD.0 для T/C0  

Примечание

M1 M0 Режим работы
Таймер МК48. "TLx" работает как 5-битный предделитель
16-битный таймер/счетчик. "ТНх" и "TLx" включены последовательно
8-битный автоперезагружаемый таймер/счетчик. "ТНх" хранит значение, которое должно быть перезагружено в "TLx" каждый раз по переполнению
Таймер/счетчик 1 останавливается. Таймер/счетчик 0: TL0 работает как 8-битный таймер/счетчик, и его режим определяется управляющими битами таймера 0. ТН0 работает только как 8-битный таймер, и его режим определяется управляющими битами таймера 1

Таблица 10. Регистр управления/статуса таймера

Символ Позиция Имя и назначение
TF1 TCON.7 Флаг переполнения таймера 1. Устанавливается аппаратно при переполнении таймера/счетчика. Сбрасывается при обслуживании прерывания аппаратно
TR1 TCON.6 Бит управления таймера 1. Устанавливается/сбрасывается программой для пуска/останова
TF0 TCON.5 Флаг переполнения таймера 0. Устанавливается аппаратно. Сбрасывается при обслуживании прерывания
TR0 TCON.4 Бит управления таймера 0. Устанавливается/сбрасывается программой для пуска/останова таймера/счетчика
IE1 TCON.3 Флаг фронта прерывания 1. Устанавливается аппаратно, когда детектируется срез внешнего сигнала Арифметическо-логическое устройство - student2.ru . Сбрасывается при обслуживании прерывания
IT1 TCON.2 Бит управления типом прерывания 1. Устанавливается/сбрасывается программно для спецификации запроса Арифметическо-логическое устройство - student2.ru (срез/низкий уровень)
IE0 TCON.1 Флаг фронта прерывания 0. Устанавливается по срезу сигнала Арифметическо-логическое устройство - student2.ru . Сбрасывается при обслуживании прерывания
IT0 TCON.0 Бит управления типом прерывания 0. Устанавливается/сбрасывается программно для спецификации запроса Арифметическо-логическое устройство - student2.ru (срез/низкий уровень)

Режим 0. Перевод любого Т/С в режим 0 делает его похожим на таймер МК48 (8-битный счетчик), на вход которого подключен 5-битный предделитель частоты на 32. Работу Т/C в режиме 0 на примере Т/C1 иллюстрирует рис. 13, а. В этом режиме таймерный регистр имеет разрядность 13 бит. При переходе из состояния "все единицы" в состояние "все нули" устанавливается флаг прерывания от таймера TF1. Входной синхросигнал таймера 1 разрешен (поступает на вход T/C), когда управляющий бит TR1 установлен в 1 и либо управляющий бит GATE (блокировка) равен 0, либо на внешний вывод запроса прерывания Арифметическо-логическое устройство - student2.ru поступает уровень 1.

Отметим попутно, что установка бита GATE в 1 позволяет использовать таймер для измерения длительности импульсного сигнала, подаваемого на вход запроса прерывания.

Арифметическо-логическое устройство - student2.ru Режим 1. Работа любого Т/С в режиме 1 такая же, как и в режиме 0, за исключением того, что таймерный регистр имеет разрядность 16 бит.

Режим 2. В режиме 2 работа организована таким образом, что переполнение (переход из состояния "все единицы" в состояние "все нули") 8-битного счетчика TL1 приводит не только к установке флага TF1 (рис. 13, б), но и автоматически перезагружает в TL1 содержимое старшего байта (TH1) таймерного регистра, которое предварительно было задано программным путем. Перезагрузка оставляет содержимое ТН1 неизменным. В режиме 2 Т/С0 и Т/С1 работают совершенно одинаково.

Режим 3. В режиме 3 Т/C0 и Т/C1 работают по-разному. Т/C1 сохраняет неизменным свое текущее содержимое. Иными словами, эффект такой же, как и при сбросе управляющего бита TRI в нуль.

Работу T/C0 в режиме 3 иллюстрирует рис. 13, в. В режиме 3 TL0 и ТН0 функционируют как два независимых 8-битных счетчика. Работу TL0 определяют управляющие биты T/C0 ( Арифметическо-логическое устройство - student2.ru , GATE, TR0), входной сигнал Арифметическо-логическое устройство - student2.ru и флаг переполнения TF0, Работу TH0, который может выполнять только функции таймера (подсчет машинных циклов МК), определяет управляющий бит TR1. При этом ТН0 использует флаг переполнения TF1.

Режим 3 используется в тех случаях применения МК51, когда требуется наличие дополнительного 8-битного таймера или счетчика событий. Можно считать, что в режиме 3 МК51 имеет в своем составе три таймера/счетчика. В том случае, если Т/С0 используется в режиме 3, Т/С1 может быть или включен, или выключен, или переведен в свой собственный режим 3, или может быть использован последовательным портом в качестве генератора частоты передачи, или, наконец, может быть использован в любом применении, не требующем прерывания.

Последовательный порт

Регистр с символическим именем SBUF представляет собой два независимых регистра - буфер приемника и буфер передатчика. В состав последовательного порта также входят принимающий и передающий сдвигающие регистры Запись байта в буфер приводит к автоматической переписи байта в сдвигающий регистр передатчика и инициирует начало передачи байта. Наличие буферного регистра приемника позволяет совмещать операцию чтения ранее принятого байта с приемом очередного байта. Если к моменту окончания приема байта предыдущий байт не был считан из SBUF, то он будет потерян.

Последовательный порт МК51 может работать в четырех различных режимах, определяемых специальным регистром с символическим именем SCON (Табл.11) . Этот регистр содержит не только управляющие биты, определяющие режим работы последовательного порта, но и девятый бит принимаемых или передаваемых данных (RB8 и ТВ8) и биты прерывания приемопередатчика (RI и ТI).

Таблица 11. Регистр управления/статуса универсальным асинхронным приемопередатчиком (УАПП)

Символ Позиция Имя и назначение
SM0 SCON.7 Биты управления режимом работы УАПП. Устанавливаются/ сбрасываются программно (см. примечание)
SM1 SCON.6
SM2 SCON.5 Бит управления режимом УАПП. Устанавливается программно для запрета приема сообщения, в котором девятый бит имеет значение 0
REN SCON.4 Бит разрешения приема. Устанавливается/сбрасывается программно для разрешения/запрета приема последовательных данных
TB8 SCON.3 Передача бита 8. Устанавливается/сбрасывается программно для задания девятого передаваемого бита в режиме УАПП-9 бит
RB8 SCON.2 Прием бита 8. Устанавливается/сбрасывается аппаратурно для фиксации девятого принимаемого бита в режиме УАПП-9 бит
TI SCON.1 Флаг прерывания передатчика. Устанавливается аппаратурно при окончании передачи байта. Сбрасывается программно после обслуживания прерывания
RI SCON.0 Флаг прерывания приемника. Устанавливается аппаратурно при приеме байта. Сбрасывается программно после обслуживания прерывания

Примечание

SM0 SM1 Режим работы УАПП
Сдвигающий регистр расширения ввода/вывода
УАПП-8 бит. Изменяемая скорость передачи
УАПП-9 бит. Фиксированная скорость передачи
УАПП-9 бит. Изменяемая скорость передачи

Арифметическо-логическое устройство - student2.ru Режим 0. В этом режиме информация и передается и принимается через внешний вывод входа приемника (RXD) (рис. 14). Принимаются или передаются 8 бит данных. Через внешний вывод выхода передатчика (TXD) выдаются импульсы сдвига, которые сопровождают каждый бит. Частота передачи бита информации равна 1/12 частоты резонатора. За один машинный цикл последовательный порт передает один бит информации.

Режим 1. В этом режиме передаются через TXD или принимаются из RXD 10 бит информации: старт-бит (0), 8 бит данных и стоп-бит (1). Скорость приема/передачи –величина переменная и задается таймером.

Режим 2. В этом режиме через TXD передаются или из RXD принимаются 11 бит информации: старт-бит, 8 бит данных, программируемый девятый бит и стоп-бит. При передаче девятый бит данных может принимать значение 0 или 1, или, например, для повышения достоверности передачи путем контроля по четности в него может быть помещено значение признака паритета из слова состояния программы (PSW.0). Частота приема/передачи выбирается программой и может быть равна либо 1/32, либо 1/64 частоты резонатора в зависимости от управляющего бита SMOD.

Режим 3. Режим 3 совпадает с режимом 2 во всех деталях, за исключением частоты приема/передачи, которая является величиной переменной и задается таймером.

Флаг прерывания передатчика ТI устанавливается аппаратно в конце периода передачи восьмого бита данных в режиме 0 и в начале периода передачи стол-бита в режимах 1,2 и 3. Соответствующая подпрограмма обслуживания прерывания должна сбрасывать бит ТI.

Флаг прерывания приемника RI устанавливается аппаратно в конце периода приема восьмого бита данных в режиме 0 и в середине периода приема стоп-бита в режимах 1, 2 и 3. Подпрограмма обслуживания прерывания должна сбрасывать бит RI.

Управление скоростью приема/передачи

Скорость приема/передачи, т.е. частота работы УАПП в различных режимах, определяется различными способами.

В режимах 1, 2 и 3 скорость приема/передачи зависит от значения управляющего бита SMOD в регистре специальных функций РУМ (табл. 13).

В режиме 2 частота передачи определяется выражением f2=(2MOD/64)*fрез иными словами, при SMOD = 0 частота передачи равна (1/64) *fрез, а при SMOD = 1 равна (1/32)*fрез.

В режимах 1 и 3 в формировании частоты передачи кроме управляющего бита SMOD принимает участие таймер 1. При этом частота передачи зависит от частоты переполнения (OVT1) и определяется следующим образом, f1, 3 = (2SMOD/32)*fOVT1.

Прерывание от таймера 1 в этом случае должно быть заблокировано. Сам T/C1 может работать и как таймер, и как счетчик событий в любом из трех режимов. Однако наиболее удобно использовать режим таймера с автоперезагрузкой (старшая тетрада TMOD = 0010В). При этом частота передачи определяется выражением f1, 3 = (2SMOD/32)*(fрез/12)/(256-(TH1))

В табл. 12 приводится описание способов настройки Т/С1 для получения типовых частот передачи данных через УАПП.

Таблица 12. Настройка таймера 1 для управления частотой работы УАПП

Частота приема/передачи (BAUD RATE) Частота резонатора, МГц SMOD Таймер/счетчик 1
C/T Режим (MODE) Перезагружаемое число
Режим 0, макс: 1 МГц X X X X
Режим 2, макс: 375 кГц X X X
Режимы 1, 3: 62.5 кГц 0FFH
19.2 кГц 11.059 0FDH
9.6 кГц 11.059 0FDH
4.8 кГц 11.059 0FAH
2.4 кГц 11.059 0F4H
1.2 кГц 11.059 0E8H
137.5 Гц 11.059 1DH
110 Гц 72H
110 Гц 0FEEBH

Регистры специальных функций. Регистры с символическими именами IP, IE, TMOD, TCON, SCON и PCON используются для фиксации и программного изменения управляющих бит и бит состояния схемы прерывания, таймера/счетчика, приемопередатчика последовательного порта и для управления мощностью электропитания МК51.

Таблица 13. Регистр управления мощностью PCON

Символ Позиция Имя и назначение
SMOD PCON.7 Удвоенная скорость передачи. Если бит установлен в 1, то скорость передачи вдвое больше, чем при SMOD = 0
---- PCON.6 Не используются
---- PCON.5
---- PCON.4
GF1 PCON.3 Флаги, специфицируемые пользователем (флаги общего назначения)
GF0 PCON.2
PD PCON.1 Бит пониженной мощности. При установке бит а в 1 МК переходит в режим пониженной потребляемой мощности
IDL PCON.0 Бит холостого хода. Если бит установлен в 1, то МК переходит в режим холостого хода

Система прерываний

Внешние прерывания могут быть вызваны либо задним фронтом, либо уровнем в зависимости от значений управляющих бит в регистре TCON биты IT0, IT1. От внешних прерываний устанавливаются флаги IE0, IE1 в регистре TCON, который инициализирует вызов соответствующей подпрограммы прерывания. Сброс этих флагов выполняется аппаратно, только если прерывание вызвано фронтом сигнала. Если прерывание вызвано уровнем, то сбросом флага IE управляет соответствующая подпрограмма обслуживания прерывания путем воздействия на источник прерывания с целью снятия или запроса. Флаги запросов прерываний от TFj сбрасываются автоматически при передаче управления подпрограмме обслуживания. Флаги запросов прерывания RI, TI от последовательного порта устанавливаются блоком управления последовательного порта аппаратно, но сбрасываются программно. Т.к. установка и сброс всех прерываний осуществляется через программно доступный регистр IP (т.е. все флаги программно доступны), то прерывания могут быть вызваны или отменены программно точно также, как если бы они были вызваны или отменены аппаратно.

Имеются два регистра, которые управляют режимами прерывания и уровня приоритетов IE и IP.

Арифметическо-логическое устройство - student2.ru

Рис 16. Управление режимами и приоритетами прерываний.

Арифметическо-логическое устройство - student2.ru

Рис. 17. Вызов прерываний

Вызов прерываний аппаратно аналогично команде LCALL, если она не заблокирована одним из условий. Текущий машинный цикл не последний в цикле выполняемой команды. Выполняется команда RETI (возврат из подпрограммы обработки прерывания с разрешением прерывания) или любая команда, связанная с обращением к регистрам IE, IP по аппаратно сформированному коду LCALL. Система прерывания помещает в стек содержимое СК и загружает в СК адрес-вектор соответствующей подпрограммы. По необходимости программист должен учитывать, что PSW, аккумулятор, регистр В, указатель данных DPTR и прочее в стеке не сохраняются, т.о. для этого следует пользоваться командами PUSH, POP. Подпрограмма обслуживания прерывания заканчивается командой RETI, по которой РС перезагружается из стека.

Системы команд МК51

Общие сведения о системе команд.Система команд МК51 содержит 111 базовых команд, которые удобно разделить по функциональному признаку на пять групп: команды передачи данных, арифметических операций, логических операций, передачи управления и операций с битами.

Система команд МК51 много мощнее и шире системы команд МК48, так как кроме всех команд МК48 в ее состав входят команды умножения, деления, вычитания, операций над битами, операций со стеком и расширенный набор команд передачи управления.

Большинство команд (94) имеют формат один или два байта и выполняются за один или два машинных цикла. При тактовой частоте 2 МГц длительность машинного цикла составляет 1 мкс. На рис. 18 показаны 13 типов команд МК51. Первый байт команды любых типа и формата всегда содержит код операции (КОП). Второй и третий байты содержат либо адреса операндов, либо непосредственные операнды.

Арифметическо-логическое устройство - student2.ru

Рис.18. Форматы команд.

Типы операндов.Состав операндов МК51 шире, чем МК48, и включает в себя операнды четырех типов: биты, 4-битные цифры, байты и 16-битные слова.

В отличие от МК48, который имеет только три битовых флага, МК51 имеет 128 программно-управляемых флагов пользователя. Имеется также возможность адресации отдельных бит блока регистров специальных функций и портов. Для адресации бит используется прямой 8-битный адрес (bit). Косвенная адресация бит невозможна. Карты адресов отдельных бит представлены на рис. 19 и 20. Четырехбитные операнды используются только при операциях обмена (команды SWAP и XCHD). Восьмибитным операндом может быть ячейка памяти программ или данных (резидентной или внешней), константа (непосредственный операнд), регистры специальных функций (РСФ), а также порты ввода/вывода. Порты и РСФ адресуются только прямым способом. Байты памяти могут адресоваться также и косвенным образом через адресные регистры (R0, R1, DPTR и

PC). Двухбайтные операнды - это константы и прямые адреса, для представления которых используются второй и третий байты команды.

Арифметическо-логическое устройство - student2.ru Арифметическо-логическое устройство - student2.ru
   
Рис. 19. Карта адресуемых бит Рис. 20. Карта адресуемых бит в резидентной памяти данных блоке регистров специальных функций

Способы адресации данных. В МК51 используются такие же способы адресации данных, как и в МК48: прямая, непосредственная, косвенная и неявная. Следует отметить, что при косвенном способе адресации РПД в отличие от МК48 используются все восемь бит адресных регистров R0 и R1.

Система команд МК51 по сравнению с МК48 допускает больше комбинаций способов адресации операндов в командах, что делает ее более гибкой и универсальной.

Флаги результата. Слово состояния программы (RSW) включает в себя четыре флага:С – перенос, АС – вспомогательный перенос, OV – переполнение и Р – паритет.

Флаг паритета (отсутствует в МК48) напрямую зависит от текущего значения аккумулятора. Если число единичных бит аккумулятора нечетное, то флаг Р устанавливается, а если четное - сбрасывается. Все попытки изменить флаг Р, присваивая ему новое значение, будут безуспешными, если содержимое аккумулятора при этом останется неизменным. Флаг АС устанавливается в случае, если при выполнении операции сложения/вычитания между тетрадами байта возник перенос/заем. Флаг С устанавливается, если в старшем бите результата возникает перенос или заем. При выполнении операций умножения и деления флаг С сбрасывается. Флаг ОV (отсутствует в МК48) устанавливается, если результат операции сложения/вычитания не укладывается в семи битах и старший (восьмой) бит результата не может интерпретироваться как знаковый. При выполнении операции деления флаг OV сбрасывается, а в случае деления на 0 устанавливается. При умножении флаг OV устанавливается, если результат больше 255.

В табл. 14 перечисляются команды, при выполнении которых модифицируются флаги результата. В таблице отсутствует флаг паритета, так как его значение изменяется всеми командами, которые изменяют содержимое аккумулятора. Кроме команд, приведенных в таблице, флаги модифицируются командами, в которых местом назначения результата определены PSW или его отдельные биты, а также командами операций над битами.

Таблица 14. Команды, модифицирующие флаги

Наши рекомендации