РЕГИСТРЫ Z80
Регистры данных и аккумулятор
Микропроцессор Z80, в отличие от 18080, работает с двумя наборами
регистров — основным и альтернативным. Оба набора состоят из семи
8-разрядных регистров данных и флагового регистра. Регистры основного
набора обозначаются буквами А, В, С, D, Е, Н, L и F (флаговый). Регистры
альтернативного набора соответственно — А', В', С D Е Н L' и F. Для
пользователя эти наборы совершенно идентичны, и знак' (апостроф) озна-
чает лишь то, что в данный момент регистр не является активным. С
помощью специальных команд можно переключать работу процессора с
одного набора регистров на другой. Но выяснить, какой из наборов активен
в данный момент, невозможно.
Для выполнения многих команд обрабатываемые данные должны
быть занесены в специальный регистр — аккумулятор А-
Команды, обрабатывающие 16-разрядные числа, используют пары ре-
гистров в следующих сочетаниях: ВС, DE, HL, AF и, соответственно, ВС', DE',
HL', AF'. При этом в регистры В, D, Н, А, В', D', Н А" записывается старший
байт числа, а в С, Е, L, F, С', Е L' и F' — младший. Спаренные регистры можно
использовать, например, для хранения и обработки адресов ячеек памяти.
Счетчик команд
Выполнив очередную команду, процессор должен знать, откуда ему
взять следующую. За этим следит 16-разрядный регистр счетчика команд PC.
При последовательном выполнении программы после считывания из памяти
каждого байта команды значение PC увеличивается на единицу. Если коман-
да требует от процессора перейти не к следующей, а какой-либо другой
ячейке памяти (например, команда вызова подпрограммы), в PC записыва-
ется адрес этой ячейки.
__Индексные регистры
Важной особенностью Z80 является возможность обращаться к ячей-
кам памяти, указывая смещение их адреса относительно содержимого 16-
разрядных индексных регистров IX и IY. Смещение может быть задано
числом в пределах -128...+ 127.
Указатель стека
16-разрядный регистр указателя стека SP содержит адрес вершины
с/лека. Как известно, стек — это специальная область памяти, предназначен-
ная для временного хранения данных. В Z80 он организован по принципу
LIFO1 — помещенные в стек одно за другим несколько чисел извлекаться из
стека будут в обратной последовательности. Особенностью Z80 является то,
что стек «растет» в сторону уменьшения адресов. При каждой записи в стек
значение регистра SP уменьшается на 2, а при извлечении числа увеличи-
вается на 2. «Общение» со стеком обычно происходит посредством регист-
ровых пар. В стеке также автоматически сохраняется адрес возврата при
вызове подпрограмм.
__Регистр флагоа
После выполнения ряда команд в соответствии с результатом опера-
ции изменяется содержимое флагового регистра F (рис. 11). Флагом называется
отдельный бит этого регистра. Флаг считается уста- ......
новленным, если в соответствующем бите запи- | S | Z х|Н | х P/V 1N1С |
сана единица, и сброшенным, если записан ноль. 7*543 7 10
Значимыми являются 6 из 8 битов регистра F:
Рис. 11. Регистр флагов.
Z (zero) — флаг нуля. Устанавливается, если результат операции равен
нулю;
P/V (parity/overflow) флаг четяос/пи/лерелоляелия. В логических опе-
рациях устанавливается при получении четного результата, в ариф-
метических — при переполнении (изменении знака) операнда;
CY (carry) — флаг переноса. Устанавливается, если в итоге выполнения
арифметических операций произошел перенос либо заем старшего
бита;
N (negative) — флаг отрицательного результата. Устанавливается при
получении отрицательного результата арифметической операции;
Н (half-carry) — флаг вспомогательного переноса. Устанавливается, если про-
изошел перенос (заем) в 4-й бит аккумулятора. Используется при прове-
дении двоично-десятичной коррекции при работе с BCD-арифметикой*;
S (sing) — флаг вычитания. Устанавливается, если предыдущей коман-
дой было вычитание. В BCD-арифметике помогает определить тип
предыдущей операции.
Другие регистры
Регистр вектора прерываний I используется во 2-м режиме обработки
прерываний. Подробно о нем будет рассказано в разделе, посвященном
прерываниям.
Регистр регенерации динамической памяти R обслуживает в основном
аппаратные потребности компьютера, однако он все же может использовать-
ся и для программных целей, например, при написании процедур, генери-
рующих случайные числа. Младшие семь разрядов этого регистра увеличи-
ваются на единицу после выполнения очередной команды (точнее — очеред-
ного цикла) микропроцессора, старший разряд аппаратно не используется.
МИКРОПРОЦЕССОР Z80