- •Отчет по лабораторной работе
- •3. Система команд микропроцессора к580
- •4. Программа работы
- •5. Вводные программы
- •5.1. Программа 1
- •5.2. Программа 2
- •5.3. Программа 3
- •5.4. Программа 4
- •5.5. Программа 5
- •5.6. Программа 6
- •5.7. Программа 7
- •5.8. Программа 8
- •5.9. Программа 9
- •5.10. Программа 10
- •5.11. Программа 11
- •6. Самостоятельная программа 1
- •7. Самостоятельная программа 2
- •8. Заключение
5.9. Программа 9
Программа была составлена самостоятельно, программа содержит команды вызова подпрограммы (CALL B2,B3) и возврата в основную программу (RET). Перед выполнением программ, работающих со стеком, необходимо инициализировать указатель стека.
Текст программы приведен в Таблице 12.
Таблица 12
основная программа | |||
адрес |
команда |
мнемоника |
комментарии |
000 |
061 |
lxi SP |
инициализация стека |
001 |
100 |
|
|
002 |
000 |
|
|
003 |
315 |
call |
вызов подпрограммы |
004 |
010 |
|
|
005 |
000 |
|
|
006 |
166 |
hlt |
останов |
подпрограмма | |||
010 |
000 |
nop |
|
011 |
311 |
ret |
|
5.10. Программа 10
Программа поясняет действие команд RST N и RET, используемых при работе с прерывающими программами.
Текст программы представлен в Таблице 13.
Таблица 13
Адреса |
Команды |
Мнемоника |
Комментарии команд |
L=000 |
061 |
LXI SP |
; Инициализация указателя стека |
001 |
067 |
B2 |
; Мл.байт адреса |
002 |
000 |
B3 |
; Ст.байт адреса |
003 |
317 |
RST 1 |
; Вызов подпрограммы по адресу L=010 |
004 |
166 |
HLT |
; Останов |
010 |
311 |
RET |
; Возврат из подпрограммы |
Полное описание работы программы по машинным циклам представлено в Таблице 14.
Таблица 14
Адреса (ША) |
Содержимое памяти (ШД) |
Комментарий |
000 |
061 |
инициализация стека |
001 |
067 |
|
002 |
000 |
|
003 |
317 |
код команды RST1 |
066 |
000 |
запись в стек адреса |
065 |
004 |
возврата из подпрограммы |
010 |
311 |
код команды RET |
065 |
004 |
чтение из стека адреса |
066 |
000 |
возврата |
004 |
166 |
код команды останова |
Команда RSTN, в отличие от команды CALL B2,B3, которая осуществляет вызов подпрограммы по произвольному указанному адресу, вызывает подпрограмму по адресу, определяемому значениемN.
5.11. Программа 11
Программа позволяет проследить работу нескольких прерывающих друг друга вложенных программ.
Текст программы представлен в Таблице 15.
Таблица 15
Адрес |
Команда |
Мнемоника |
Комментарии |
000 |
061 |
LXISP |
Инициализация указателя стека |
001 |
067 |
В2 |
|
002 |
000 |
В3 |
|
003 |
317 |
RST1 |
Вызов подпрограммы 1 |
004 |
166 |
HLT |
Останов |
010 |
327 |
RST2 |
Вызов подпрограммы 2 |
011 |
311 |
RET |
Возврат из подпрограммы 1 |
020 |
337 |
RST3 |
Вызов подпрограммы 3 |
021 |
311 |
RET |
Возврат из подпрограммы 2 |
030 |
347 |
RST4 |
Вызов подпрограммы 4 |
031 |
311 |
RET |
Возврат из подпрограммы 3 |
040 |
357 |
RST5 |
Вызов подпрограммы 5 |
041 |
311 |
RET |
Возврат из подпрограммы 4 |
050 |
311 |
RET |
Возврат из подпрограммы 5 |
На Рис. 6 представлена диаграмма, иллюстрирующая алгоритм работы программы.
Рис. 5
Если в вызываемой или прерывающей программе будет отсутствовать команда RET программа не будет соответствовать алгоритму, не будет происходить возврат в вызывающую программу, в счетчик команд будут записываться адреса, следующие за текущим адресом, а не читаться из стека.