Команды работы со стеком (стековой памятью).

Стековая память – область ОЗУ, предназначенная для временного хранения данных, в том числе и адресов возврата в основную программу при обращении к подпрограмме.

Обмен со стековой памятью осуществляется только парами регистров (В-С, D-E, H-L, PSW).

Для организации стековой памяти необходимо определить начальный адрес (вершину стека).

Примечание: в некоторых МПС начальный адрес стека определяется автоматически.

Для задания вершины стека используются два варианта команд:

1-ый вариант:

Б1 Б2 Б3 LXI
младший разряд Адрес регист- ровой пары
старший разряд

(SР)←(< Б3>< Б2>)

SP – шестнадцатиразрядный указатель стека, т.е. в указателе стека

2-ой вариант:

Б1 SPHL

(SP)←(H-L)

Запись содержимого регистровой пары в стековую память:

Команда записи регистровой пары в стековую память

PUSH rr

Где rr – В-C, D-E, H-L, PSW.

Например:

PUSH В; Содержимое пары регистров В-С записывается в стековую память по адресу SP-1 и SP-2.После выполнения команды записи содержимого в стековую память в указателе стека (SP) изменяется адрес стековой памяти (уменьшается его значение на два:SP=SP-2).

Команда чтения содержимого стека в регистровую пару (чтение из стековой памяти)

РОР rr

Где rr – В-C, D-E, H-L, PSW.

По этой команде содержимое стековой памяти (два байта) из ОЗУ записываются в одну из регистровых пар РОН или PSW. После выполнения команды содержимое указателя стека увеличивается на два SP=SP+2.

Например:

РОР B; Содержимое двух ячеек стековой памяти по адресу SP+1 и SP+2 записывается в пару регистров B-C, а указатель вершины стека после выполнения команды принимает значение SP=SP+2.

6.2. Команда обращения к подпрограмме (CALL).

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

Синтаксис команды обращения к подпрограмме

Б1 Б2 Б3 CALL
младшие разряды адрес ячейки памяти ЗУ с командой подпрогрпммы
старшие разряды

([SP-1]) ←(CPL)возвр.

([SP-2]) ←(CPH)возвр.

(SP)←(SP)-2 ; измен.адр. вершины стека.

(CP)←([< Б3>< Б2>]).

Последовательность выполнения команды обращения к подпрограмме CALL.

В стековую память записывается 16-ти разрядный адрес ячейки памяти возврата после выполнения подпрограммы (CPL)возвр. , (CPH)возвр.

В указатель счетчика команд (PC) заносится адрес первой ЯП команды подпрограммы с КОП ([<Б3><Б2>]). . Поскольку стековая память использована для хранения адреса возврата из подпрограммы в основную программу, то изменяетсязначение указателя вершины стека (уменьшается на 2, т.е. SP=SP-2).

Команда возврата из подпрограммы

Б1 RET

(CPL) ← ([SP+1]), (запись в счетчик команд PC адреса

(CPH) ← ([ SP+2]) возврата в основную программу)

(SP)←(SP)+2, (изменяется адрес вершины стека )

В счетчик команд PC записывается содержимое стековой памяти по адресу ([SP+1]) и ([SP+2]), т.е. адрес возврата в основную программу.

После выполнения команды значение указателя стека SP увеличивается на 2, т.е. SP=SP+2.

Команда HLT – останов выполнения программы

Б1 HLT

МП прекращает выполнение программы и ждет указаний.

Пустая команда

Б1 NOP

Эта команда используется для резервирования ячеек при написании программы. МП никаких действий не выполняет, но осуществляет первый этап (чтение и дешифрование). Кроме того, команда может применяться при написании программы временной задержки (для изучаемого симулятора AVSIM85 время выполнения 1-ого этапа команды четыре секунды).

Работа с имитатором (симулятором) процессора IntelI8085.

Построение программы.

Этапы создания программы:

1) Разработка алгоритма программы и ее написание на языке ассемблер. Набор программы осуществляется только!!! в Блокноте или с использованием симулятора. Сохраняется программа в формате «все файлы» и имя программы – с расширением .asm. Например, testr3.asm.

Примечание: В редакторе Word или WordPad программу не набирать, а только в Блокноте

Трансляция программы – перевод программы с языка ассемблера в код микропроцессора. В результате появляется файл с расширением .hex, т.е. файл с цифрами в шестнадцатеричной системе счисления.

Компоновка программы. Результат компоновки – объединение нескольких оттранслированных программ в одну, в результате мы получаем файл с расширением .obj.

Отладка программы.

Структура программы.

Программа состоит из предложений. Каждое предложение имеет следующую структуру:

[метка] <мнемоника команды> [операнды]; [комментарии]

[] – не обязательное включение содержимого скобок в предложение

<> - обязательное наличие содержимого скобок в предложение

1) Поле метки: метка записывается с первой позиции и начинается обязательно с буквы.

2) Поле мнемоники: код операции (КОП) записывается после первой позиции.

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