ZX Spectrum для пользователей и программистов 1991 г.

Архитектура ZX Spectrum - регистры данных и аккумулятор. Регистр флагов. Другие регистры.


Регистры данных и аккумулятор

Микропроцессор Z80, в отличие от I8080, работает с двумя наборами регистров — основным и
альтернативным. Оба набора состоят из семи 8-разрядных регистров данных и флагового регист-
ра. Регистры основного набора обозначаются буквами А, В, С, D, E, H, L и F (флаговый). Реги-
стры альтернативного набора соответственно — А', В', С', D', E', H', L' и F'. Для пользова-
теля эти наборы совершенно идентичны, и знак ' (апостроф) означает лишь то, что в данный мо-
мент регистр не является активным. С помощью специальных команд можно переключать работу
процессора с одного набора регистров на другой. Но выяснить, какой из наборов активен в дан-
ный момент, невозможно.

Для выполнения многих команд обрабатываемые данные должны быть занесены в специальный ре-
гистр — аккумулятор А.

Команды, обрабатывающие 16-разрядные числа, используют пары регистров в следующих сочета-
ниях: ВС, DE, HL, AF и, соответственно, ВС', DE', HL', AF'. При этом в регистры В, D, H, А,
В', D', H', А' записывается старший байт числа, а в С, E, L, F, С', E', L' и F' — младший.
Спаренные регистры можно использовать, например, для хранения и обработки адресов ячеек па-
мяти.

_Счетчик команд

Выполнив очередную команду, процессор должен знать, откуда ему взять следующую. За этим
следит 1 6-разрядный регистр счетчика команд РС. При последовательном выполнении программы
после считывания из памяти каждого байта команды значение PC увеличивается на единицу. Если
команда требует от процессора перейти не к следующей, а какой-либо другой ячейке памяти (на-
пример, команда вызова подпрограммы), в PC записывается адрес этой ячейки.

_Индексные регистры

Важной особенностью Z80 является возможность обращаться к ячейкам памяти, указывая смеще-
ние их адреса относительно содержимого 16-разрядных индексных регистров IX и IY. Смещение
может быть задано числом в пределах-128...+ 127.

_Указатель стека

16 разрядный регистр указателя стека SP содержит адрес вершины стека. Как известно, стек —
это специальная область памяти, предназначенная для временного хранения данных. В Z80 он ор-
ганизован по принципу LIFO* — помещенные в стек одно за другим несколько чисел извлекаться
из стека будут в обратной последовательности. Особенностью Z80 является то, что стек «рас-
тет» в сторону уменьшения адресов. При каждой записи в стек значение регистра SP уменьшается
на 2, а при извлечении числа увеличивается на 2. «Общение» со стеком обычно происходит по-
*) Last In First Out — первым пришел — последним вышел (англ.).
средством регистровых пар. В стеке также автоматически сохраняется адрес возврата при вызове
подпрограмм.

_Регистр флагов

После выполнения ряда команд в соответствии с результатом операции изменяется содержимое
флагового регистра F (рис. 11). флагом называется отдельный бит этого регистра. Флаг счита-
ется установленным, если в соответствующем бите записана единица, и сброшенным, если записан
ноль. Значимыми являются 6 из 8 битов регистра F:

• Z (zero) — флаг нуля. Устанавливается, если результат операции равен нулю;

• P/V (parity/overflow) — флаг четности/переполнения. В логических операциях устанавлива-
ется при получении четного результата, в арифметических — при переполнении (изменении знака)
операнда;

• CY (carry) — флаг переноса. Устанавливается, если в итоге выполнения арифметических опе-
раций произошел перенос либо заем старшего бита;

• N (negative) — флаг отрицательного результата. Устанавливается при получении отрицатель-
ного результата арифметической операции;

• H (half-carry) — флаг вспомогательного переноса. Устанавливается, если произошел перенос
(заем) в 4-й бит аккумулятора. Используется при проведении двоично-десятичной коррекции при
работе с BCD-арифметикой*;

• S (sing) — флаг вычитания. Устанавливается, если предыдущей командой было вычитание. В
BCD-арифметике помогает определить тип предыдущей операции.

_Другие регистры

Регистр вектора прерываний I используется во 2-м режиме обработки прерываний. Подробно о
нем будет рассказано в разделе, посвященном прерываниям.

Регистр регенерации динамической памяти R обслуживает в основном аппаратные потребности
компьютера, однако он все же может использоваться и для программных целей, например, при на-
писании процедур, генерирующих случайные числа. Младшие семь разрядов этого регистра увели-
чиваются на единицу после выполнения очередной команды (точнее — цикла M1) микропроцессора,

старший разряд аппаратно не используется._

*) BCD — Binary Coded Decimal — двоично-десятичный код (англ.).




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Код - 3D скролл на ZX Spectrum (часть 1).
Мозаика - "Компьютер и программа 1989 года ... Амига."
Game - 12 Тайных книг. Миссия: Советы бывалых ведунов.
Глобус - "Пятилетие Hewson Consultants" история фирмы.
Гелиотехника - Солнечная энергетика является наиболее перспективной в своём развитии.

В этот день...   21 ноября