Инструкция по выполнению лабораторной работы
Задание №1: Исследование заданных программ.
2. Исследовать программу 6.1, после чего убедиться, что указатель стека уменьшается на 2.
3. Исследовать программу 6.2, после чего убедиться, что указатель стека увеличивается на 2.
4. Исследовать программу 6.3 и проследить за выполнением команды XTHL. Исследовать программу 6.4 и убедиться в сохранении слова состояния программы. Записать двоичный код этого слова.
Задание №2: Составить программу осуществляющую сложение двух чисел по адресам 0010,0011. Записать эти числа в регистры В и С и записать результат в регистр D. Запись содержимого этих регистров и PSW в стек.
После исполнения программы составить таблицу: адреса ячеек стека и содержимого этих ячеек, регистры из которых производилась запись информации в стек.
Составить графическое изображение выполнения команды ADD С
Программа 6.1:
lxi bc,8513 загрузить данные в ВС
push bc запомнить ВС в стеке
hlt останов
Программа 6.2:
lxi sp,0ffe загрузить указатель стека
pop загрузить DE из стека
hlt все
Программа 6.3:
mvi l,5 подготовка данных для
mvi c,10 демонстрации команды
push bc <XTHL>
xthl обмен HL и вертушки стека
xthl обмен HL и верхушки стека
pop bc восстановить ВС
mov a,b
hlt
Программа 6.4:
рush psw [A] и [F] в стек
pop hl [A] – H; [F] – L
hlt останов
Методика анализа результатов, полученных в ходе лабораторной работы
Автоматическое сохранение и восстановление адреса основной программы при выполнении подпрограмм позволяет сделать подпрограммы вложенными, т. е. осуществить вызов одной подпрограммы из другой. Уровень вложенности для данного МП определяется размером стека.
Помимо команд вызова подпрограмм и возврата из них, со стеком можно обмениваться информацией. С помощью команды PUSH RP осуществляется запись в стек содержимого регистра RP МП, а с помощью команды POP RP – запись данных из стека в регистр RP процессора. Эти команды однобайтные
Порядок выполнения отчета по лабораторной работе
1. Наименование и цель работы.
2. Программы 6.1 – 6.4
3. Составленную программу и заполненную таблицу с результатами её исследования.
4. Графическое изображение порядка выполнения команды ADD C
5. Ответы на контрольные вопросы
6. Анализ результатов, полученных в ходе лабораторной работы
Образец отчета по лабораторной работе:
ЛАБОРАТОРНАЯ РАБОТА №7
Разработка и исследование программ работы со стеком
Учебные цели:Исследование методов программных способов маскирования данных и
организация условных переходов в микропроцессорных системах
Учебные задачи:
2. Закрепление полученных теоретических знания по программированию микропроцессорных систем.
3. Практически рассмотреть состояние различных узлов и устройств микропроцессора, а также компонентов микропроцессорной системы, используя программное моделирование.
Выполнение работы
Задание №1.
Программа 6.1:
lxi bc,8513 загрузить данные в ВС
push bc запомнить ВС в стеке
hlt останов
Программа 6.2:
lxi sp,0ffe загрузить указатель стека
pop загрузить DE из стека
hlt все
Программа 6.3:
mvi l,5 подготовка данных для
mvi c,10 демонстрации команды
push bc <XTHL>
xthl обмен HL и вертушки стека
xthl обмен HL и верхушки стека
pop bc восстановить ВС
mov a,b
hlt
Программа 6.4:
рush psw [A] и [F] в стек
pop hl [A] – H; [F] – L
hlt останов
1. До выполнения программы адрес вершины стека был 100h, после выполнения команды PUSH адрес уменьшился на 2 и стал равным 0FFEh.
2. До: 0FFEh, после: 1000h.
3. Команда XTHL взаимно обменивает содержимое регистров: L с содержимым стека с адресом SP и содержимое регистра H с содержимым стека SP+1. При выполнении 2-х таких команд подряд содержимое не изменится.
4. Слово состояния сохраняется в стеке как один байт, с последующим увеличением SP на 2.
Задание №2. 1.Составить программу осуществляющую сложение двух чисел по адресам 0010,0011. Записать эти числа в регистры В и С и записать результат в регистр D. Запись содержимого этих регистров и PSW в стек.
2.После исполнения программы составить таблицу: адреса ячеек стека и содержимого этих ячеек, регистры из которых производилась запись информации в стек.
|
MVI HL,0010
MOV B,M
MVI HL,0011
MOV C,M
MOV A,B
ADD C
MOV D,A
PUSH B
PUSH C
PUSH D
PUSHPSW
HLT
Информация в регистрах МП и ячейках стека при выполнении задания 2. Таблица 1
№ | Команда | A | FL | B | C | М1/данные | М2/данные | М3/данные | D |
MVI H, 0010 | - | 0010/01 | |||||||
MOV B,M | - | 0010/01 | |||||||
MVI H, 0011 | - | 0010/01 | 0011/01 | ||||||
MOV C,M | - | 0010/01 | 0011/01 | ||||||
MOV A,B | - | 0010/01 | 0011/01 | ||||||
ADD C | - | 0010/01 | 0011/01 | ||||||
MOV D,A | - | 0010/01 | 0011/01 | ||||||
PUSH B | - | 0010/01 | 0011/01 | 00FE/01 00FD/00 | |||||
PUSH C | - | 0010/01 | 0011/01 | 0FFC/01 0FFB/00 | |||||
PUSH D | - | 0010/01 | 0011/01 | 0FFA/02 0FF9/00 | |||||
PUSHPSW | - | 0010/01 | 0011/01 | 0FF8/14 | |||||
HLT | - | 0010/01 | 0011/01 |
3.Составить графическое изображение выполнения команды ADD С
Ответы на контрольные вопросы:
1.
2.
3.
4.
Анализ результатов, полученных в ходе лабораторной работы:
Программный раздел содержит наборы программ для исследования на языке ассемблера для микропроцессоров 8080.Каждой программе предпосланы введение и комментарии; за каждой программой следует по крайней мере один пример ее использования. При исследовании программ была получена следующая информация: назначение программы, процедуру ее выполнения, используемые регистры, размер памяти, необходимый для программы и ее данных, а также специальные случаи, входные и выходные условия.
С помощью команды PUSH RP осуществляется запись в стек содержимого регистра RP МП, а с помощью команды POP RP – запись данных из стека в регистр RP процессора. Эти команды однобайтные. В них содержится номер пары регистров МП. Сущность команд можно показать следующим образом:
PUSH B: (SP – 1) f B, (SP – 2) f C; SP = SP – 2
POP D: E f (SP), D f (SP + 1); SP = SP + 2
При записи в стек содержимого пары регистров или программного счетчика по адресу SP – 1 записывается содержимое старшего регистра из указанной пары (в примере B) или старшего байта PCH (программного счетчика), а по адресу SP – 2 в стек записывается содержимое младшего регистра (в примере C) из указанной пары или младшего байта PCL (программного счетчика).
При записи из стека данных в пару регистров или в программный счетчик в младший регистр регистровой пары или в PCL записывается число из адреса, указанного в указателе стека SP, а в старший регистр регистровой пары или в PCH – число, записанное по адресу SP + 1. В результате выполнения команды содержимое SP увеличивается на 2. Таким образом, при записи данных адреса стека убывают от больших к меньшим, а указатель стека SP всегда содержит последний адрес стека, в котором записано число. При разработке программ необходимо назначать область стека, записывая в SP адрес с помощью команды LXI SP, <Адрес> или команды SPHL.