Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ZX Spectrum для пользователей и программистов.doc
Скачиваний:
56
Добавлен:
28.09.2019
Размер:
1.92 Mб
Скачать

Центральный процессор

О дной из причин успеха, постигшего ZX Spectrum, было применение в качестве ЦП микропроцессора Z80 (полное название — Z80A CPU) американской фирмы Zilog. В основе разработки этой микросхемы лежала идеология построения одного из самых распространенных в свое время 8-разрядных процессоров — I8080 (советский аналог — КР580ВМ80А). В Z80 увеличено число регистров, дополнена система прерываний и, самое главное, существенно расширена система команд (в частности, за счет добавления команд, обрабатывающих блоки данных). Все это позволило повысить производительность процессора при одновременном уменьшении размера программ.

Рис. 10. Структурная схема микропроцессора Z80.

Структурная схема Z80 (рис. 10) включает в себя: арифметико-логическое устройство (АЛУ), блок управления шиной данных, блок регистров, блок управления адресной шиной, дешифратор команд и сигналов управления. Все узлы связаны внутренней шиной данных.

Для обращения процессора к памяти и внешним устройствам служит 16-разрядная шина адреса (ее разряды обозначаются от А0 — младший разряд до А15 — старший). Следовательно, процессор может непосредственно обратиться (в зависимости от обрабатываемой команды) либо к 216 =65536 ячейкам памяти, либо к такому же количеству внешних устройств (портов).

Обмен информацией Z80 с памятью и портами осуществляется через 8-разрядную шину данных (разряды обозначаются D0...D7). Для хранения и обработки чисел, больших 255 (28-1), используются две или более ячейки памяти, расположенные одна за другой.

РЕГИСТРЫ Z80

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

Микропроцессор 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 — первым пришел — последним вышел (англ.).

средством регистровых пар. В стеке также автоматически сохраняется адрес возврата при вызове подпрограмм.

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

S

Z

x

Н

x

P/V

N

CY

7

6

5

4

3

2

1

0

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

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

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

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

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

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

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

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