Таким образом, в ячейке стека с адресом (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используется прямая адресация — адрес перехода содержится во втором и третьем байтах команд. При прямой адресации в программах адреса переходов указываются метками.
В коде команды, использующей прямую адресацию перехода абсолютный адрес перехода содержится во втором и третьем байтах.
Косвенно-регистровая адресация переходов. При такой адресации в коде операции команды передачи управления указывается регистровая пара, содержимое которой загружается в программный счетчик PC с потерей предыдущего его значения. Имеется только одна команда с косвенно-регистровой адресацией переходов PCHL, загружающая содержимое регистровой пары НL в программный счетчик PC. Например, переход по адресу 25Е8h можно выполнить с помощью команд:
LXI Н, 25Е8h ; HL ← 25Е8h загрузка адреса перехода в
;регистровую пару HL
PCHL ; PC ← HL передача управления
Команду PCHL удобно использовать для организации системы переходов или вызова подпрограмм по фиксированным адресам, записанным предварительно в таблицу, хранящуюся в памяти, или при вычислении адресов переходов по какому-либо алгоритму.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.