Раздел: Документация
0 ... 13 14 15 16 17 18 19 ... 39 Основные регистры Регистр флагов Аккумулятор (признаков) Дополнительные регистры
-гW ЯS ЮX О<и ом £1
Число в скобках обозначает разрядность регистра Специальные регистры Щ16) SP(I6) РС(16) J8L Индексные регистры Указатель стека Счетчик команд Регистр прерываний (используется для обслуживания прерываний, назначение станет ясным из следующих глав) Рис. 6.1. Регистры ЦПУ Z80 Восьмиразрядное число, являющееся результатом вычисления, выполненного АЛУ, как правило, также помещается в регистр А. Свойства регистра А, часто называемого аккумулятором, показаны на Рис. 6.2. Перед выполнением арифметической операции сложения первое слагаемое помещается в регистр А. Число, которое прибавляют к содержимому аккумулятора, вызывается по заданному в команде адресу или считывается из указанного в команде регистра. Результат операции также помещается в регистр А. Следовательно, данные в регистре А до вычисления и после него различны. Регистр F называют регистром «флагов» или «признаков». Он содержит 6 флагов, описывающих признаки результатов действия различных команд. Содержимое каждого из флагов, представленное двоичными цифрами «О» или «1», определяет одну из особенностей результата. Структура регистра F показана на Рис. 6.3. = 6.1. Назначение регистров ЦПУ Регистр А (аккумулятор) Первое слагаемое -7\ Операции выполняются АЛУ Второе слагаемое -7V Знаки арифметических и логических операций Регистр А Расположение произвольное (в регистре, в памяти, непосредственно в команде) Результат вычисления --I Регистр А Рис. 6.2. Регистр А - аккумулятор Регистр флагов (признаков) F Запоминает особенности результата выполнения команды Флаг нуля. Значение флага «1», если результат равен О Флаг четности А /переполнения] И Флаг половинного I переноса Флаг знака. Результат положительный или отрицательный ? Если отрицательный- " Флаг вычитания. Если выполняется вычитание, то в этом разряде устанавливается «1» Флаг переноса. Если был перенос из старшего разряда при сложении или заем разряда при вычитании, то в этом разряде устанавливается f3 f$: неиспользуемые разряды f2 f4: флаги специального назначения Рис. 6.3. Регистр F (регистр флагов) Нулевой разряд, называемый флагом С (флагом переноса), принимает значение «1», если при вычислении был перенос из старшего разряда (например, в операции сложения), и значение «О», если переноса не было. Шестой разряд (7-й по порядку), называемый флагом Z (флагом нуля), принимает значение «1», если 8-разрядный результат операции, находящийся в регистре А, равен 0, и принимает значение «О», если этот результат отличен от 0. Помимо этих флагов, в регистре есть флаг N, который указывает, какая операция - сложение или вычитание - была выполнена, и флаг S, указывающий знак результата. Содержимое регистра признаков сохраняется до следующей операции сложения, вычитания или сравнения. Есть команды, которые не изменяют содержимое регистра F, равно как и такие, результат действия которых зависит от содержимого регистра F. Поэтому мы каждый раз должны учитывать возможность изменения содержимого регистра F в результате выполнения той или иной команды. Регистры общего назначения - «записная книжка» процессора К регистрам общего назначения относятся регистры В, С, D, Е, Н, L (все 8-разрядные). Их основная функция - служить «записной книжкой» ЦПУ для временного хранения промежуточных результатов операций. Поскольку эти регистры находятся в самом процессоре, считывание и запись их содержимого осуществляется быстрее, чем при обращении к ЗУ. Каждая пара регистров ВиС, БиЕ, НиЬ образует 16-разрядный регистр. Шестнадцатиразрядные регистры могут, например, потребоваться для временного хранения адресов. Кроме того, ЦПУ Z80 производит операции с 16-разрядными числами. В этом случае пара регистров H-L выполняет функцию аккумулятора. Регистр В используется в качестве счетчика, задающего число повторений какой-либо операции (см., например, описание команды DJNZ, приведенное ниже). Регистр С обычно применяется в качестве указателя адреса порта при выполнении команды ввода-вывода. 6.1. Назначение регистров ЦПУ Пара регистров H-L часто используется для указания косвенного адреса, то есть содержит 16-разрядный адрес. Например, команда сложения «ADD A, (HL)» означает, что содержимое ячейки памяти с адресом, указанным в сдвоенном регистре H-L прибавляется к содержимому регистра А. Таким образом, существует определенная дифференциация регистров общего назначения. И если правильно использовать свойства регистров, составление программы во многих случаях значительно упрощается. Дополнительные регистры - «дублеры» главных регистров В ЦПУ Z80 имеется еще одна группа регистров, аналогичных регистрам A, F, В, С, D, Е, Н и L. Их называют дополнительными регистрами и обозначают с помощью символа «». При этом имеется в виду, что нельзя одновременно использовать и главные регистры (A...L), и дополнительные (А...) так же, как нельзя одновременно выпустить на сцену актера и его дублера. Дополнительные регастры - регистры «дублеры» Основные регистры На сцене Актер > За кулисами • Дублер A\F
Дополнительные регистры Содержимое регистров взаимно заменяется посредством команды обмена В процессе выполнения программы, когда W™™*ZZZ?t на программу обработки прерывания или на подпрограмму,бывают слуТинеобходимо на время «спрятать» содержимо равных растров в дополнительные регистры. Для этого предусмотрены команды обмена, с помощью которых происходит взаимный обмен содержимого главных и дополнительных регистров. Например, по команде «ЕХ AF, AF » содержимое пары регистров A-F меняется на содержимое соответствующих дополнительных регистров A-F. Команда «ЕХХ» одновременно производит взаимную замену данных, содержащихся в регистрах общего назначения В, С, D, Е, Н и L, на данные, хранящиеся в соответствующих дополнительных регистрах. Все остальные команды обмена, кроме двух указанных, работают только с основными регистрами. Регистры - указатели адреса IX и IY 16-разрядные регистры IX и ГУ называются индексными регистрами. Они выполняют одну и ту же функцию и применяются при косвенной адресации для хранения адреса памяти. Например, если в памяти хранится таблица данных, то в индексный регистр заносится адрес «вершины таблицы», а адреса остальных данных указываются относительно вершины таблицы. Например, команда «ADD А, (1Х+3)» означает, что к содержимому регистра А прибавляется содержимое ячейки памяти с адресом, равным сумме: адрес регистра IX + 3. Счетчик команд (PC) и указатель стека (SP) Счетчик команд (PC) и указатель стека (SP) - это 16-разрядные регистры, каждый из которых выполняет только одну-единствен-ную функцию. Из предыдущей главы мы знаем, что счетчик команд - это регистр, указывающий в памяти адрес очередной команды, выполняемой ЦПУ. Обычно при выполнении программы двоичное число, содержащееся в счетчике команд, при переходе к следующей команде увеличивается на 1. Соответственно по возрастающей изменяется и адрес очередной команды. Однако если при выполнении программы требуется переход на другую программу, то непосредственно перед этим переходом содержимое счетчика команд должно измениться. Когда в процессе выполнения программы происходит переход на подпрограмму или на программу обработки прерывания, то после выполнения этих программ необходимо вернуться в исходную программу. Следовательно, при выходе из исходной программы мы должны занести в память адрес возврата в программу. Адрес ячейки памяти, куда заносится адрес возврата, помещается в 16-разрядный т регистр, называемый указателем стека. Более подробно функции указателя стека мы рассмотрим в разделе 6.6, когда будем знакомиться с назначением команд, с помощью которых организуется работа подпрограмм. Итак, мы узнали наименования и познакомились с назначением регистров ЦПУ Z80. Следующий раздел посвятим рассмотрению основных команд. Перенос данных, находящихся в па- КОМАНДА ЗАГРУЗКИ ИЛИ РСГИСТре ЦР* ВР" ЛАННЫХН.ОАтгистр или другую ячейку памяти назы- вается загрузкой данных. Команда загрузки (Load) является одной из основных команд и применяется чаще других. Она имеет вид, представленный на Рис. 6.4. .- -.-1 Команда загрузки I 1-Источник 0перавды I-Приемник > Сокращение слова Load (загрузить)......Мнемокод Источник Ь: регистр, константа, (регистр), (константа) Приемника: регистр, (регистр), (константа) I , .- Рис. 6.4. Структура команды загрузки (LD) Операнды а и о обозначают соответственно источник данных (место, откуда считываются данные) и приемник (место, куда записываются данные). Источник и приемник представляют собой регистр или константу, либо регистр или константу, заключенные в скобки. В последнем случае константа или содержимое регистра являются адресом. Например, (01 ООН) означает содержимое памяти по адресу 0100Н; (HL) - содержимое ячейки памяти, значение адреса 0 ... 13 14 15 16 17 18 19 ... 39
|