Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчетК580.doc
Скачиваний:
8
Добавлен:
16.04.2015
Размер:
623.62 Кб
Скачать

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 программа не будет соответствовать алгоритму, не будет происходить возврат в вызывающую программу, в счетчик команд будут записываться адреса, следующие за текущим адресом, а не читаться из стека.