Использование регистра, адреса / данных

Использование пары регистров HL (имя регистра) в качестве указателя адреса является важным свойством типового МП.

Рассмотрим задачу сложение содержимого трех последовательных ячеек памяти и размещение суммы в следующей ячейке памяти.

Адрес Содержимое
.
.
.
Σ

Программа загружается в ячейке памяти с 2000Н по 200А, а три слагаемых (ØС + ØА + Ø7) расположены в ячейке памяти в 2100 по 2102.

Использование регистра, адреса / данных - student2.ru

Программа содержит 7 команд. Так же следует помнить, что текущая сумма будет всегда помещаться в аккумулятор, который вначале содержит первое слагаемое ØС.

Команда 1– 3А: приказывает МП загрузить (LOAD) в аккумулятор содержимое ячейки памяти 2100Н.

Использование регистра, адреса / данных - student2.ru

После выполнения команды аккумулятор будет содержать первое слагаемое ØС.

Команда 2 – 21Н: приказывает МП загрузить (LOAD) число 2101Н в пару регистров HL. Емкость этой пары 16 бит (2 байта). Содержимое 1-ой ячейки памяти 2004 представляет собой младший байт регистра L, а 2005 старший байт регистра Н.

Использование регистра, адреса / данных - student2.ru

Команда 3 – 86Н: приказывает МП выполнить сложение (ADD) содержимого аккумулятора (ØС) с содержимым ячейки памяти, адрес которой содержится в паре регистров HL.

Использование регистра, адреса / данных - student2.ru

Команда 4 – 23Н: содержимое пары регистров HL инкрементируется.

Использование регистра, адреса / данных - student2.ru

Команда 5 – 86Н: сложить содержимое аккумулятора с содержимым ячейки памяти с адресом 2102, на который указывает пара регистров HL.

Использование регистра, адреса / данных - student2.ru

Команда 6 – 23Н: инкрементировать пару регистров HL.

Использование регистра, адреса / данных - student2.ru

Команда 7 – 77Н: поместить (STORE) содержимое аккумулятора (окончательную сумму) в ячейку памяти, на которую указывает пара регистров HL, т.е. по адресу 2103.

Использование регистра, адреса / данных - student2.ru

Этапы обработки требования прерывания в микропроцессоре

Вход требования прерывания INTR отвечает на высокий уровень сигнала внешнего устройства. При этом предполагаем, что в устройство интерфейса ввода уже загружено 8 бит параллельных данных готовых для передачи в МП.

Предполагаем, что в устройстве интерфейса ввода загружается 8 бит параллельных данных готовых для передачи в МП. Тогда, описание процедуры прерывания имеет следующую последовательность:

1. Интерфейс ввода выдает сигнал требования прерывания в направлении МП.

2. МП завершает выполнение текущей команды, находящейся в памяти по адресу 2006.

3. Поскольку, управление должно обеспечить последующее обращение к команде по адресу 2007, содержимое счетчика команд (именно 2007) и содержимое большинства регистров МП помещается в специальную область ОЗУ, называемую стеком. Содержимое стека будет позже извлечено в определенном порядке в регистры МП и счетчик команд.

Использование регистра, адреса / данных - student2.ru

4. В МП разветвляется в предопределенный адрес памяти и начинает выполнение программы обслуживания прерывания (в примере 20D0). МП тогда выполняет команды подпрограммы, которые в нашем примере обеспечивает выполнение операции ввода и размещения. По адресу 20DE МП находит конец этой подпрограммы и получает приказ вернуться в основную программу.

5. Перед возвращением в основную программу данные регистров и счетчик команд, помещенные в стеке, возвращаются в МП.

6. Теперь счетчик команд отсылает МП в память по адресу 2007, т.е. в основную программу и нормальное ее выполнение продолжается.

Прерывание является очень нужным способом, позволяющим периферийным устройствам вмешаться и заставить МП выполнять требуемую операцию почти сразу.

Многие МП обладают несколькими прерываниями. Обслуживание и последовательность прерывания обеспечивается соответствующими инструкциями в тексте некой программы программистом.

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

Типовой МП содержит указатель стека. Указатель стека – это специализированный 16-тиразрядный регистр – счетчик, содержимым которого всегда является адрес. Этот адрес принадлежит особой группе ячеек памяти данных, который называется стеком. Стек, как правило, размещается в ОЗУ или иногда в физической локализованной на кристалле МП группе ячеек памяти. Стек типового МП будет находиться в ОЗУ и его положение определяется программистом. Указатель стека загружается старшим адресом, представляющим собой вершину стека.

Использование регистра, адреса / данных - student2.ru

В примере указатель стека содержит адрес 220А, что на единицу старше первой ячейки памяти стека 2209. Данные в стек можно записать, используя команды поместить (PUSH) и вызвать (CALL). Данные могут быть считаны из стека по командам извлечь (POP) и возврат (RETERN). Стек функционирует как память с последовательными доступом по типу: данные, поступившие последними, извлекаются первыми. Например, команда PUSH приводит к тому, что содержимое пары регистров HL помещается в стек.

Использование регистра, адреса / данных - student2.ru

1. Указатель стека МП декрементируется от 220А до 2209.

2. Указатель стека показывает на ячейку памяти 2209 по адресной шине и старший байт регистра HL помещается в стек.

3. Указатель стека снова декрементируется от 2209 до 2208.

4. Указатель стека указывает на ячейку 2208 по адресной шине и младший байт из регистра HL загружается в стек.

Рассмотрим так же операцию загрузки в стек, содержимого аккумулятора и регистра состояния.

Использование регистра, адреса / данных - student2.ru

5. До операции указатель стека указывает на ячейку памяти 2208, ее называют вершиной стека, затем указатель стека декрементируется до 2207.

6. Указатель стека указывает на ячейку памяти 2207 и содержимое аккумулятора загружается в стек по этому адресу.

7. Указатель стека декрементируется до 2206.

8. Указатель стека указывает на ячейку памяти 2206 и содержимое регистра состояния (11111111) загружается по этому адресу.

Стек может продолжать расти, пока длится процесс загрузки в него, т.е. длина стека формально не имеет ограничений, единственным ограничением является объем ОЗУ.

Рассмотрим команду POP – аккумулятор и регистр состояния свободны до операции извлечения из стека.

Использование регистра, адреса / данных - student2.ru

1. Указатель стека указывает на вершину, т.е. на адрес 2206, содержимое регистра состояния (11111111) извлечено из стека и переслано в АЛУ.

2. Указатель стека инкрементируется с 2206 до 2207.

3. Указатель стека указывает на адрес 2207, содержимое вершины стека извлекается и пересылается в аккумулятор.

4. Указатель стека инкрементируется до 2208 и указывает теперь на следующий адрес извлечения из стека.

Содержимое аккумулятора и регистра состояния было восстановлено до тех значений, которые были до операции PUSH.

Команды PUSH и POP используются всегда совместно, однако, между ними располагаются другие команды, которые меняют данные, содержащиеся в регистрах МП.

Наши рекомендации