
Микропроцессоры Токхайм / 5.4. ИСПОЛЬЗОВАНИЕ РЕГИСТРА АДРЕСА ДАННЫХ
.doc5.4. ИСПОЛЬЗОВАНИЕ РЕГИСТРА АДРЕСА/ДАННЫХ
Использование пары регистров HL в качестве указателя адреса является интересным свойством нашего типового МП. Обычно рассматривают ее использование в качестве указателя адреса, когда она временно берет на себя роль
основного счетчика команд, указывая адрес ячейки памяти или УВВ. Многие широко распространенные МП (например, Intel 8080/8085, Z 80) содержат регистры такого типа. Регистры адреса/данных в рассматриваемом типовом МП называются также парой HL-регистров, регистром адреса, счетчиком данных или указателем адреса.
Рассмотрим простую задачу сложения содержимого трех последовательных ячеек памяти с размещением суммы в следующей ячейке памяти (выполнение ее показано на рис. 5.9). Программа загружена в ячейки памяти 2000Н— 200АН, а три слагаемых (ОСН+ОАН+07Н) — в ячейки памяти 2100Н—2102Н. Программа содержит 6 команд, записанных справа на рис. 5.9. Не следует забывать, что текущая сумма будет всегда помещаться в аккумулятор, содержащий вначале первое слагаемое (ОСН).
Команда 1 имеет КОП ЗАН (рис. 5.9) и приказывает МП ЗАГРУЗИТЬ (LOAD) в аккумулятор содержимое ячейки памяти 2100Н. Выполнение этой команды прямой загрузки аккумулятора показано на рис. 5.10, а. После выполнения команды аккумулятор будет содержать первое слагаемое (ОСН).
Команда 2 приказывает МП загрузить (LOAD) 2101Н в пару регистров HL, емкость которых 16 бит. Это число представляет собой адрес памяти данных. Более точно команду 2 можно сформулировать так: загрузить пару регистров HL непосредственно следующими за КОП данными, ее выполнение приведено на рис. 5.10, б. Заметим, что содержимое первой ячейки памяти (2004Н) загружается в младший байт L, следующей за ней — в старший байт Н пары регистров HL.
Команда 3 приказывает МП выполнить операцию сложить (ADD) содержимое аккумулятора с содержимым ячейки памяти, адрес которой содержится в паре регистров HL. Ее выполнение приведено на рис. 5.10, в (команда ADD). Пара регистров HL указывает на ячейку памяти 2101Н, и АЛУ складывает свое содержимое (0000 10102) с содержимым аккумулятора (0000 11002), что дает сумму (0001 01102), помещаемую в аккумулятор.
Команда 4 приказывает МП инкрементировать (увеличить на 1) содержимое пары регистров HL (см. рис. 5.10, г). Заметим, что изменился только младший байт пары регистров HL.
Команда 5 снова приказывает МП сложить (ADD) содержимое аккумулятора и ячейки памяти с адресом 2102Н, на которую указывает пара регистров HL (см. рис. 5.10, д).
Оба содержимых складываются, что дает сумму (0001 11012), помещаемую в аккумулятор.
По команде 6 содержимое пары регистров HL снова инкрементируется (см. рис. 5.10, е).
Команда 7 приказывает МП поместить (STORE) содержимое аккумулятора, т.е. окончательную сумму (0001 11012) в ячейку памяти, на которую указывает пара регистров HL (см. рис. 5.10,ж), т.е. по адресу 2103Н.
Команды 3, 5, 7, взаимодействующие с парой регистров HL как с указателем адреса, используют косвенно-регистровый способ адресации. Его мы изучим в следующей главе.
Упражнения
5.34. Счетчик _____ (данных, команд) — одно из на- званий адресного регистра.
5.35. См. рис. 5.9. Какой будет шестнадцатеричная сумма, переданная в ячейку памяти 2103Н после выполнения программы?
5.36. См. рис. 5.9. и 5.10. Аккумулятор всегда содержит _____ (сумму, команду), тогда как пара регистров HL
содержит (адрес, номер команды).
5.37. См. рис. 5.9. Какой способ адресации используется, когда пара регистров HL играет роль указателя адреса?
5.38. См. рис. 5.11. Каково содержимое (в Н-коде) аккумулятора и пары регистров HL в начале программы?
5.39. См. рис. 5.11. Каково содержимое аккумулятора после выполнения команды 1?
5.40. Каково содержимое пары регистров HL после выполнения команды 2?
5.41. См. рис. 5.11. Каково содержимое пары регистров HL после выполнения команды 3?
5.42. Рассмотреть команду 5 на рис. 5.11. Где поместится содержимое аккумулятора после выполнения команды поместить?
Решения
5.34. Данных. 5.35. ОСН+ОАН+07Н= 1DH (12+10 + 7 = 29ю, т.е. IDH). 5.36. Текущую сумму; адрес. 5.37. Косвенная регистровая адресация. 5.38. Аккумулятор: 0000 11112 или OFH; пара HL: 0010 0001 0000 00102 или 2102Н. 5.39. См. рис. 5.12. 5.40. 2102+1 = = 2103Н. 5.41. См. рис. 5.13. 5.42. 2103+ 1 =2104Н. 5.43. В ячейке памяти 2104Н.