Способы адресации данных и переходов в микроЭВМ 1816ВМ85а (I8085А): Методическое пособие по курсу "Основы микропроцессорной техники и прикладное программирование", страница 8

Таким образом, в ячейке стека с адресом (SP)вер –1 после выполнения цикла   MW оказывается записан (загружен) старший байт регистровой пары HL. 

В следующем цикле MWреализуются процедуры

Шаг3. (SP) ← (SP) –1 

Шаг4. ((SP)) ← (HLl)

Таким образом, в ячейке стека с адресом (SP)вер –2 оказывается записан (загружен) младший байт регистровой пары HL. 

Указатель стека после выполнения команды содержит  адрес ((SP)вер –2.

Стек “готов” к загрузке новых данных или к извлечению  данных, загруженных ранее.

Еще одним примером, иллюстрирующим особенности стековой адресации является команда POPrp.

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

Команда POPrpвыполняется следующим образом.

В первом машинном цикле OFпо адресу, содержащемуся в  PC, из программной памяти выбирается КК.

Структура КК очевидна из Рис.  22. В КК в явном виде указан код регистровой пары –приемника шестнадцатиразрядного операнда, в неявном – источник адреса вершины стека.

По коду операции процессором осуществляется

§  идентификация команды

§  определяется регистровая пара –приемник операнда

§  определяется источник адреса вершины (SP)вер.

В следующем цикле MR(исполнительная фаза)  реализуются процедуры

Шаг1. (HLl) ← ((SP)) вер

Шаг2. (SP) ← (SP) +1 

Таким образом, из ячейки стека с адресом (SP)вер  после выполнения цикла   MR извлекается младший байт регистровой пары HL. 

В следующем цикле MRреализуются процедуры

Шаг3. (HLh)  ← ((SP))

Шаг4. (SP) ← (SP) +1 

В результате,  из ячейки стека с адресом  (SP) вер  +2  извлекается старший байт  регистровой пары HL. 

Указатель стека после выполнения команды содержит  адрес  (SP)вер +2.

Достоинство стековой адресации – команды однобайтные с выполнением операции пересылки двух 8-разрядных операндов.




Данные команды часто используются для временного сохранения содержимого регистровых пар в памяти. Такое сохранение необходимо  при нехватке регистров общего назначения в процессе решения задачи.

Первой операцией всегда должно быть включение слова в стек и только затем его извлечение. Необходимый объем памяти стека определяется программистом, исходя из решаемых задач.

Перед  использованием стека необходима его инициализация.

Инициализация заключается в загрузке в SP адреса начальной ячейки стека, которая называется “ основанием стека‘. Для инициализации обычно используется рассмотренная ранее команда LXISP,data.

2.2 Адресация переходов.

2.2.1 Прямая адресация переходов. Если адрес перехода содержится в самой команде переходов, то такая адресация называется прямой. В командах переходов JMPaddr и Jcondaddrиспользуется прямая адресация — адрес перехода содержится во втором и третьем байтах команд. При прямой адресации в программах адреса переходов указываются метками.

В коде команды, использующей прямую адресацию перехода абсолютный адрес перехода  содержится во втором и третьем байтах.


Структура кода команды прямой адресации перехода представлена на рисунке 23.




Косвенно-регистровая адресация переходов. При такой адресации в коде операции команды передачи управления указывается регистровая пара, содержимое которой загружается в программный счетчик PC с потерей предыдущего его значения. Имеется только одна команда с косвенно-регистровой адресацией переходов PCHL, загружающая содержимое  регистровой пары НL  в программный счетчик PC. Например, переход по адресу     25Е8h можно выполнить с помощью команд:

                    LXI  Н, 25Е8h          ; HL ← 25Е8h  загрузка адреса  перехода в  

                                                  ;регистровую пару HL

          PCHL                        ; PC ← HL  передача управления

Команду PCHL удобно использовать для организации системы переходов или вызова подпрограмм по фиксированным адресам, записанным предварительно в таблицу, хранящуюся в памяти, или при вычислении адресов переходов по какому-либо алгоритму.