Исследование однокристального микропроцессора с фиксированным списком команд. Практическое ознакомление с организацией микропроцессорных систем на основе однокристальных микропроцессоров и приобретение навыков программирования микропроцессоров указанного типа, страница 7

Данные по адресу

L=004

Мнемоника команды перехода

Данные по адресу L=200

Результат

302

JNZ

002

Есть цикл

302

JNZ

102

Цикла нет

312

JZ

102

Есть цикл

312

JZ

002

Цикла нет

322

JNC

002

Есть цикл

322

JNC

003

Цикла нет

332

JC

002

Цикла нет

332

JC

003

Есть цикл

342

JPO

002

Есть цикл

342

JPO

006

Цикла нет

352

JPE

002

Цикла нет

352

JPE

006

Есть цикл

362

JP

002

Есть цикл

362

JP

202

Цикла нет

372

JM

002

Цикла нет

372

JM

202

Есть цикл

Существует 8 команд условного перехода - по две на каждый из четырёх флагов: Z, C, P, S. В зависимости от значения соответствующего флага переход происходит (в этом случае программа зацикливается) или не происходит (выполняется останов по команде HLT).

Программа 8

Программа демонстрирует действие команд вызова подпрограммы и возврата в основную программу.

основная программа

адрес

команда

мнемоника

комментарии

000

061

LXI SP

инициализация стека

001

100

002

000

003

315

CALL

вызов подпрограммы

004

000

005

010

006

166

HLT

останов

подпрограмма

010

311

RET

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

Команда Call сохраняет в стеке адрес возврата из подпрограммы (адрес следующей после Call команды) и производит загрузку в указатель команд адреса указанного во втором и третьем байтах команды (PC=000010). Программа RET выполняет обратные действия (извлекает из стека адрес и загружает его в PC).

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

Программа 9

Программа поясняет действие команд RST N и RET при работе с прерываниями.

Адрес

Команда

Мнемоника

Комментарии

000

061

LXI SP

Инициализация стека

001

200

B2

002

000

B3

003

317

RST 1

Вызов подпрограммы по адресу 010

004

166

HLT

Останов

010

311

RET

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

Описание работы программы по машинным циклам:

Адреса (ША)

Содержимое памяти (ШД)

Комментарий

000

061

инициализация стека

001

067

002

000

003

317

код команды RST 1

066

000

запись в стек адреса

065

004

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

010

311

код команды RET

065

004

чтение из стека адреса

066

000

возврата

004

166

код команды останова