Команды работы со стеком (стековой памятью).
Стековая память – область ОЗУ, предназначенная для временного хранения данных, в том числе и адресов возврата в основную программу при обращении к подпрограмме.
Обмен со стековой памятью осуществляется только парами регистров (В-С, 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) Поле мнемоники: код операции (КОП) записывается после первой позиции.