Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Выч. машины, системы и сети. Пособие. 80С51 v0.26.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

1.4.4 Регистр флагов (psw)

Флаг С устанавливается при переносе из разряда D7, т. е. в случае, если результат не помещается в восемь разрядов; флаг АС устанавливается при переносе из разряда D3 в командах сложения и вычитания и служит для реализации десятичной арифметики. Этот признак используется командой DAA.

Перечень флагов, их символические имена

и условия формирования

Таблица 1.4

Символ

Позиция

Имя и назначение

P

PSW.0

Флаг паритета. Устанавливается и сбрасывается аппаратно в каждом цикле команды и фиксирует нечетное/четное число единичных бит в аккумуляторе

-

PSW.1

Не используется

OV

PSW.2

Флаг переполнения. Устанавливается и сбрасывается аппаратно при выполнении арифметических операций

RS0 - RS1

PSW.3 - PSW.4

Биты выбора используемого банка регистров. Могут быть изменены программным путем

RS0

RS1

Банк

Границы адресов ОЗУ

0

0

0

00H - 07H

1

0

1

08H - 0FH

0

1

2

10H - 17H

1

1

3

18H - 1FH

F0

PSW.5

Флаг пользователя. Может быть установлен, сброшен или проверен программой пользователя

АС

PSW.6

Флаг вспомогательного переноса. Устанавливается и сбрасывается только аппаратными средствами при выполнении команд сложения и вычитания и сигнализирует о переносе или заеме в бите 3 аккумулятора

C

PSW.7

Флаг переноса. Устанавливается и сбрасывается как аппаратно, так и программным путем

Формат слова состояния PSW

Обознач.

Разряд

Наименование и назначение

P

PSW.0

Флаг паритета. Устанавливается и сбрасывается аппаратно:

P=1, если в аккумуляторе нечетное число единиц; P=0, если в аккумуляторе четное число единиц

–

PSW.1

Флаг, определяемый пользователем. Устанавливается, сбрасывается и тестируется программно

OV

PSW.2

Флаг переполнения. Устанавливается и сбрасывается аппаратно при выполнении арифметических операций.

RS0

PSW.3

Выбор банка регистров. Устанавливаются и сбрасываются программно:

RS1=0, RS0=0: Банк 0 (Адреса 00H  07H) RS1=0, RS0=1: Банк 1 (Адреса 08H  0FH) RS1=1, RS0=0: Банк 2 (Адреса 10H  17H) RS1=1, RS0=1: Банк 3 (Адреса 18H  1FH)

RS1

PSW.4

F0

PSW.5

Флаг общего назначения. Устанавливается, сбрасывается и тестируется программно

AC

PSW.6

Флаг вспомогательного переноса. Устанавливается и сбрасывается только аппаратно при выполнении команд сложения и вычитания и несет информацию о переносе или заеме в 3-ем разряде

C

PSW.7

Флаг переноса. Устанавливается и сбрасывается аппаратно (при выполнении арифметических и логических. операций) или программно.

Флаг OV устанавливается при переносе из разряда D6, т. е. в случае, если результат не помещается в семь разрядов и восьмой не может быть интерпретирован как знаковый. Этот признак служит для организации обработки чисел со знаком.

Наконец, флаг Р устанавливается и сбрасывается аппаратно. Если число единичных бит в аккумуляторе нечетно, то Р = 1, в противном случае Р = 0.

Наиболее “активным” флагом PSW является флаг переноса, который принимает участие и модифицируется в процессе выполнения множества операций, включая сложение, вычитание и сдвиги. Кроме того, флаг переноса (C) выполняет функции “булева аккумулятора” в командах, манипулирующих с битами. Флаг переполнения (OV) фиксирует арифметическое переполнение при операциях над целыми числами со знаком и делает возможным использование арифметики в дополнительных кодах. ALU не управляет флагами селекции банка регистров (RS0, RS1), их значение полностью определяется прикладной программой и используется для выбора одного из четырёх регистровых банков.

В микропроцессорах, архитектура которых опирается на аккумулятор, большинство команд работают с ним, используя неявную адресацию. В Intel 8051 дело обстоит иначе. Хотя процессор имеет в своей основе аккумулятор, он может выполнять множество команд и без его участия. Например, данные могут быть переданы из любой ячейки RDM в любой регистр, любой регистр может быть загружен непосредственным операндом и т.д. Многие логические операции могут быть выполнены без участия аккумулятора. Кроме того, переменные могут быть инкрементированы, декрементированы и проверены без использования аккумулятора. Флаги и управляющие биты могут быть проверены и изменены аналогично.