Материал: Разработка микропроцессорной системы контроля и управления доступом

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Принцип действия данного СКУД прост: у входа на предприятие или в любое другое подлежащее контролю помещение устанавливается считыватели - специальные устройства, считывающие голосовую команду и передающие его в систему для проверки. На основе произведённого сравнения система принимает одно из двух решений: открывает проход или оставить его закрытым. СКУД запоминает неудачные попытки входа и после третей предлагает сотруднику ввести код, если код был введён корректно, то система открывает проход.

Подробное описание работы данной СКУД:

МП опрашивает порт С ППИ, чтобы узнать нажата ли кнопка. После нажатия одной из кнопок устройства (внутри или снаружи), сигнал с ППИ поступает в МП, МП обрабатывает поступивший ему код. Если кнопка была нажата из нутрии охраняемого помещения, МП подаст сигнал на порт С ППИ означающий открытие двери.

Если кнопка была нажата снаружи, то МП проверяет наличие в памяти эталонной записи. Если её нет, то он посылает серию сигналов на ППИ для её записи, а именно: на вход «Пуск» АЦП поступает с порта С сигнал, АЦП начинает преобразовывать напряжение поступающие на него с усилителя напряжения микрофона. После преобразования напряжения АЦП вырабатывает сигнал «Готов», который поступает на порт С ППИ. МП проверяет наличие сигнала «Готов» с порта С и если он есть, то поступает сигнал «чтение» , который попадает на вход АЦП. АЦП передает преобразованные данные в порт А ППИ. Данное число отправляется в МП, а из него в память. Процедура считывания повторяется 255 раз.

Если эталонная дорожка записана, то МП подаёт серию сигналов для записи проверяемой дорожки способом описанным выше.

ПОСТРОЕНИЕ АЛГОРИТМА РАБОТЫ СКУД

Блок-схема - распространенный тип схем (графических моделей <https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C>), описывающих алгоритмы <https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC> или процессы, в которых отдельные шаги изображаются в виде блоков различной формы, соединенных между собой линиями, указывающими направление последовательности.

Таблица 1. Основные элементы блок-схемы

Наименование

Обозначение

Функция

Блок начало-конец (пуск-остановка)

 <https://commons.wikimedia.org/wiki/File:Flowchart_start_stop.png?uselang=ru>Элемент отображает выход во внешнюю среду и вход из внешней среды (наиболее частое применение − начало и конец программы). Внутри фигуры записывается соответствующее действие.


Блок действия

 <https://commons.wikimedia.org/wiki/File:Flowchart_process.png?uselang=ru>Выполнение одной или нескольких операций, обработка данных любого вида (изменение значения данных, формы представления, расположения). Внутри фигуры записывают непосредственно сами операции, например, операциюприсваивания: a = 10*b + c.


Логический блок (блок условия)

 <https://commons.wikimedia.org/wiki/File:Flowchart_selection.png?uselang=ru>Отображает решение или функцию переключательного типа с одним входом и двумя или более альтернативными выходами, из которых только один может быть выбран после вычисления условий, определенных внутри этого элемента. Вход в элемент обозначается линией, входящей обычно в верхнюю вершину элемента. Если выходов два или три, то обычно каждый выход обозначается линией, выходящей из оставшихся вершин (боковых и нижней). Если выходов больше трех, то их следует показывать одной линией, выходящей из вершины (чаще нижней) элемента, которая затем разветвляется. Соответствующие результаты вычислений могут записываться рядом с линиями, отображающими эти пути. Примеры решения: в общем случае − сравнение (три выхода: >, <, =); в программировании − условные операторы if (два выхода: true, false) и case(множество выходов).


Предопределённый процесс

 <https://commons.wikimedia.org/wiki/File:Flowchart_preprocess.png?uselang=ru>Символ отображает выполнение процесса, состоящего из одной или нескольких операций, который определен в другом месте программы (в подпрограмме, модуле). Внутри символа записывается название процесса и передаваемые в него данные. Например, в программировании − вызов процедуры или функции.


Данные (ввод-вывод)

 <https://commons.wikimedia.org/wiki/File:Flowchart_io.png?uselang=ru>Преобразование данных в форму, пригодную для обработки (ввод) или отображения результатов обработки (вывод). Данный символ не определяет носителя данных (для указания типа носителя данных используются специфические символы).


Граница цикла

 <https://commons.wikimedia.org/wiki/File:Flowchart_loop.png?uselang=ru>Символ состоит из двух частей − соответственно, начало и конец цикла − операции, выполняемые внутри цикла, размещаются между ними. Условия цикла и приращения записываются внутри символа начала или конца цикла − в зависимости от типа организации цикла. Часто для изображения на блок-схеме цикла вместо данного символа используют символ условия, указывая в нём решение, а одну из линий выхода замыкают выше в блок-схеме (перед операциями цикла).


Соединитель

 <https://commons.wikimedia.org/wiki/File:Flowchart_connector.png?uselang=ru>Символ отображает вход в часть схемы и выход из другой части этой схемы. Используется для обрыва линии и продолжения её в другом месте (для избежания излишних пересечений или слишком длинных линий, а также, если схема состоит из нескольких страниц). Соответствующие соединительные символы должны иметь одинаковое (при том уникальное) обозначение.


Комментарий

 <https://commons.wikimedia.org/wiki/File:Flowchart_note.png?uselang=ru>Используется для более подробного описания шага, процесса или группы процессов. Описание помещается со стороны квадратной скобки и охватывается ей по всей высоте. Пунктирная линия идет к описываемому элементу, либо группе элементов (при этом группа выделяется замкнутой пунктирной линией). Также символ комментария следует использовать в тех случаях, когда объём текста, помещаемого внутри некоего символа (например, символ процесса, символ данных и др.), превышает размер самого этого символа.


В блок-схеме к своей программе я использовал блок начала/конца, действия и логический.

Рисунок 8 - блок-схема программы СКУД

РАЗРАБОТКА ПРОГРАММЫ РАБОТЫ СКУД

Язык ассемблера - машинно-ориентированный язык низкого уровня <https://ru.wikipedia.org/wiki/%D0%9D%D0%B8%D0%B7%D0%BA%D0%BE%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D0%B5%D0%B2%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F> с командами, обычно соответствующими командам машины <https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8>. Это система обозначений, используемая для представления в удобочитаемой форме программ, записанных в машинном коде. Язык ассемблера позволяет программисту пользоваться алфавитными мнемоническими кодами операций, по своему усмотрению присваивать символические имена регистрам ЭВМ <https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%B0> и памяти, а также задавать удобные для себя схемы адресации <https://ru.wikipedia.org/wiki/%D0%90%D0%B4%D1%80%D0%B5%D1%81%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8> (например, индексную или косвенную). Кроме того, он позволяет использовать различные системы счисления (например, десятичную <https://ru.wikipedia.org/wiki/%D0%94%D0%B5%D1%81%D1%8F%D1%82%D0%B8%D1%87%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F> или шестнадцатеричную <https://ru.wikipedia.org/wiki/%D0%A8%D0%B5%D1%81%D1%82%D0%BD%D0%B0%D0%B4%D1%86%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D1%87%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F>) для представления числовых констант и даёт возможность помечать строки программы метками с символическими именами с тем, чтобы к ним можно было обращаться (по именам, а не по адресам) из других частей программы (например, для передачи управления). Ассемблер создаётся при производстве МП, то есть для каждого МП свой язык.

Для микропроцессора КР580ВМ80А базовая система команд содержит 78 различных кодов, с модификацией это число возрастает до 240. Все команды МП делятся на 5 групп:

1.      Команды пересылки и загрузки данных. По этим командам осуществляется пересылка данных между регистрами МП, а так же между ячейками памяти (ЯП). Кроме того, в эту группу входят команды позволяющие загрузить данные как внутрь МП так и в ЯП из вне.

.        Арифметические команды. К ним относятся команды сложения, вычитания, увеличения или уменьшения содержимого регистров или ЯП.

.        Логические команды - это многоразрядная конъюнкция, дизъюнкция, логические сдвиги и т. д.

.        Команды передачи управления. Эти команды обеспечивают организацию разрывающихся или циклических процессов.

.        Команды ввода/вывода, управления стеком и другие вспомогательные команды.

Микропроцессор (МП) КР580ВМ80А с точки зрения программиста может быть представлен в виде модели, изображенной на рисунке 9. Модель включает перечень программно-доступных регистров микропроцессора:

шесть 8-битных регистров общего назначения B, C, D, E, H и L, которые при выполнении некоторых команд объединяются в 16-битные регистровые пары, обозначаемые по имени старшего регистра B, D и H;

основной рабочий регистр микропроцессора - 8-битный аккумулятор A, используемый по умолчанию во многих командах микропроцессора;

регистр признаков F, в котором при выполнении команд обработки данных в зависимости от полученного результата формируется 5 признаков:) S (Sign, M) - признак знака, устанавливаемый в 1 в случае отрицательного результата и сбрасываемый в 0 при положительном результате;)         Z (Zero) - признак нуля, устанавливаемый в 1 в случае нулевого результата и сбрасываемый в 0 при ненулевом результате;)        CY (Carry) - признак переноса (CY=1, если был перенос из старшего разряда результата при сложении или заем в старший разряд при вычитании, иначе CY=0);)         P (Parity) - признак четности, устанавливаемый в 1 в случае четного числа единицврезультатеисбрасываемыйв0принечетномчислеединиц;)       AC (Auxiliary carry)- признак полупереноса, т.е. переноса из младшей тетрады результата в старшую, используемый при обработке чисел в двоично-десятичном коде.

Рисунок 9 - Модель микропроцессора КР580ВМ80А

Микропроцессор КР580ВМ80А имеет четыре различных способа адресации данных, хранимых в памяти или в регистрах:

-       Прямая адресация. Второй и третий байты команды содержат адрес данных в памяти.

-       Регистровая адресация. В коде команды адресуется регистр или пара регистров, в которых хранятся данные.

-       Косвенно-регистровая адресация. Команда выбирает регистровую пару, в которой содержится адрес ячейки памяти.

-       Непосредственная адресация. Данные, которые могут быть 8- или 16- битными, представлены в теле команды - во втором и третьем байтах.

Для того, чтобы программы выполнялась быстрее и занимала меньше места, рекомендуется использовать косвенно-регистровою адресацию.

ВЫБОР И ОПИСАНИЕ ЭМУЛЯТОРА

Изучение структуры и принципов работы эмулятора (I80)

Методические указания по работе с эмулятором.

. Общий вид

После запуска эмулятора на экране монитора появляется главная страница эмулятора, представленная на рисунке 1.

1)      Область программы.

2)      Регистры, тут можно посмотреть содержимое регистров.

3)      Регистр флагов.

4)      Область данных, здесь мы записываем исходные данные и можем посмотреть содержимое ЯП.

5)      Стек.

Рисунок 10 - Главная страница

. Ввод программы в эмулятор

В данном эмуляторе, как и в предыдущем ввод программы (мнемоники) осуществляется путем «клика»

Ввод программы можно условно разделить на несколько этапов:

)        Вводим код команды (мнемонику) в третий столбик, в ячейку «NOP» .

Рисунок 11- Ввод команды

2)     
Таким образом последовательно вводим программу в эмулятор.

Рисунок 12 - Ввод программы

)        Для ввода исходных данных используем область данных, выбрав нужный нам адрес, вводим содержимое

Рисунок 13 - Ввод содержимого в ячейки памяти

)        После ввода программы и исходных данных проверяем содержимое регистров (чтобы не использовать данные из прошлых задач)

Рисунок 14 - Содержимое регистров

)        Начинаем выполнение программы, это можно сделать двумя способами: обычным запуском (F9) или пошагам (F8).

ОТЛАДКА ПРОГРАММЫ СКУД

Во время учебной практики по Микропроцессорным системам был проведен анализ имеющихся эмуляторов. На основе этого анализа был выбран эмулятор i80.

Данный эмулятор был выбран потому, что в нём есть возможность вводить команды в мнемонике, переключаться между ячейками памяти с помощью стрелок и просматривать содержимое регистров и стека в любой момент. Перечисленные выше качества позволяют легко и быстро отладить программы и исправить ошибки в её коде.

Во время отладки программы были выявлены и устранены незначительные ошибки в коде программы.

ЗАКЛЮЧЕНИЕ

В результате проделанной работы была разработана система контроля и управлением доступом рассчитанная на контроль одной двери с проверкой биометрического параметра: голос. Максимальное время выполнения программы 423614,5 мкс, задействовано ячеек памяти 0400. СКУД от источника напряжения 5 В.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

микропроцессорный управление эмулятор сигнализация

1. Нестеров П. В. Микропроцессоры. Архитектура и ее оценка. М.: Высшая школа, 1984. 104 с.

. Уокерли Дж. Архитектура и программирование микроЭВМ: В 2-х кн. / Пер. с англ. М.: Мир, 1984. Кн. 1. 486 с. Кн. 2. 359 с.

. Хосе М. Ангуло. Микропроцессоры: Архитектура, программирование и проектирование систем. Тбилиси: Ганатлеба, 1989.

. МикроЭВМ / Пер. с англ., Под ред. А. Дирксена. М.: Энергоиздат, 1982. 328 с.

. Хоровиц П., Хилл У. Искусство схемотехники. М.: Мир,1983. Т. 2. 590 с.

. Вуд А. Микропроцессоры в вопросах и ответах / Пер. с англ. М.: Энергоатомиздат, 1985. 185 с.

. Басманов А. С., Широков Ю. Ф. Микропроцессоры и однокристальные микроЭВМ: Номенклатура и функциональные возможности / Под ред. В. Г. Домрачева. М.: Энергоатомиздат, 1988. 127 с.

. Мячев А. А., Иванов В. В. Интерфейсы вычислительных систем на базе мини- и микроЭВМ / Под ред. Наумова Б. Н. М.: Радио и связь, 1986.

. Интерфейсы систем обработки данных: Справочник / Под ред. А. А. Мячева. М.: Радио и связь, 1989.

. Байцер Б. Архитектура вычислительных комплексов. М.: Мир, 1974. Т.1,2.

. Водовозов В. М., Осипов В. О., Пожидаев А. К. Практическое введе-ние в информационные системы / ГЭТУ. СПб, 1995.

Интернет ресурсы:

1.      <https://ru.wikipedia.org>

.        <#"804115.files/image023.gif">

Приложение Б

Текст программы системы контроля и управления доступом

Адрес я.п. Н


Мнемоника

Операнд

Комментарий

0100 (m1) 0101

DB 01

IN

01

Загрузка содержимого порта 01 (С)

0102 0103 0104

CA 00 01

JZ

0100

Проверка флага Z (нуля), если = 1, то переход по адресу 0100

0105 0106

E6 01

ANI

01

Логическое И над содержимым аккумулятора и 01

0107 0108 0109

F2

JP

011E (M2)

Проверка флага Р (чётности), если = 1, то переход по адресу 011Е

010A 010B

3E 1C

MVI

A,1C

Загрузить в аккумулятор 1С

010C 010D

D3 01

OUT

01

Отправить содержимое аккумулятора в порт 01 (С)

010E 010F 0110

21 FF FF

LXI

H,FFFF

Загрузить в регистровую пару H FFFF

0111 (M3)

25

DCR

H

Уменьшить содержимое регистровой пары Н на 1

0112 0113 0114

CA

JZ

0118 (M3.1)

Проверка флага Z (нуля), если = 1, то переход по адресу 0118

0115 0116 0117

C3 11 01

JMP

0111 (M3)

Безусловный переход по адресу 0111

0118 (M3.1) 0118

3E 00

MVI

00

Загрузить в аккумулятор 10

0119 011A

D3 01

OUT

01

Отправить содержимое аккумулятора в порт 01 (С)

011B 011C 011D

C3 00 01

JMP

0100 (M1)

Безусловный переход по адресу 0100

011E (M2) 011F

3E 00

MVI

B,00

Загрузить в регистр В 00

0120 0121 0122

11 00 04

LXI

D,0200

Загрузить в регистровую пару D 0400

0123 0124

3E 64

MVI

C,64

Загрузить в регистр В 64

0125 (M5)

1A

LDAX

D

Содержимое ЯП, адрес которой хранится в регистровой паре D загрузить в аккумулятор

0126

80

ADD

B

Сложить содержимое аккумулятора с содержимым регистра В

0127

47

MOV

B,A

Содержимое аккумулятора отправить в регистр В

0128

13

INX

D

Содержимое регистровой пары D увеличить на 1

0129

0D

DCR

C

Уменьшить содержимое регистра С на 1

012A 012B 012C

CA 30 01

JZ

0130 (M4)

Проверка флага Z (нуля), если = 1, то переход по адресу 0130

012D 012E 012F

C3 25 01

JMP

0125 (M5)

Безусловный переход по адресу 0125

0130 (M4)

78

MOV

A,B

Содержимое регистра В отправить в аккумулятор

0131 0132

F6 00

ORI

00

Логическое ИЛИ над содержимым аккумулятора и 00

0133 0134 0135

CA 9D 01

JZ

019D (M6)

Проверка флага Z (нуля), если = 1, то переход по адресу 019D

0136

3E

MVI

B,FF

Загрузить в регистр В FF

0137 0138 0139

11 00 05

LXI

D,0300

Загрузить в регистровую пару D 0500

013A (M9)

3E

MVI

A,38

Загрузить в аккумулятор 38

013B 013C

D3 01

OUT

01

Отправить содержимое аккумулятора в порт 01 (С)

013D (M7) 013E

DB 01

IN

01

Загрузка содержимого порта 01 (С)

013F 0140

D6 58

58

Вычесть из аккумулятора 58

0141 0142 0143

CA 3D 01

JZ

013D (M7)

Проверка флага Z (нуля), если = 1, то переход по адресу 013D

0144 0145

DB 00

IN

00

Загрузка содержимого порта 00 (А)

0146

12

STAX

D

Содержимое аккумулятора отправить в ЯП, адрес которой хранится в регистровой паре D

0147

13

INX

D

Содержимое регистровой пары D увеличить на 1

0148

05

DCR

B

Уменьшить содержимое регистра В на 1

0149 014A 014B

CA 4F 01

JZ

014F (M8)

Проверка флага Z (нуля), если = 1, то переход по адресу 014F

014C 014D 014E

C3 3A 01

JMP

013A (M9)

Безусловный переход по адресу 013A

014F (M8) 0150

3E FF

MVI

B,FF

Загрузить в регистр В FF

0151 0152 0153

11 00 04

LXI

D,0200

Загрузить в регистровую пару D 0400

0154 (N4)

1A

LDAX

D

Содержимое ЯП, адрес которой хранится в регистровой паре D загрузить в аккумулятор

0155

67

MOV

H,A

Содержимое аккумулятора отправить в регистр Н

0156

14

INR

D

Содержимое регистра D увеличить на 1

0157

1A

LDAX

D

Содержимое ЯП, адрес которой хранится в регистровой паре D загрузить в аккумулятор

0158

1C

INR

E

Содержимое регистра Е увеличить на 1

0159

15

DCR

D

Уменьшить содержимое регистра D на 1

015A

94

SUB

H

Вычесть из аккумулятора содержимое регистра Н

015B 015C 015D

C3 5F 01

JMP

015F (N1)

Безусловный переход по адресу 015F

015E (N2)

2C

INR

L

Содержимое регистра L увеличить на 1

015F (N1) 0160 0161

CA 5E 01

JZ

015E (N2)

Проверка флага Z (нуля), если = 1, то переход по адресу 015E

0162

05

DCR

B

Уменьшить содержимое регистра В на 1

0163 0164 0165

CA 69 01

JZ

0169 (N3)

Проверка флага Z (нуля), если = 1, то переход по адресу 0169

0166 0167 0168

C3 54 01

JMP

0154 (N4)

Безусловный переход по адресу 0154

0169 (N3)

7D

MOV

A,L

Содержимое регистра L отправить в аккумулятор

016A 016B

D6 81

SUI

81

Вычесть из аккумулятора 81

016C 016D 016E

C3 86 01

JMP

0186 (N4.1)

Безусловный переход по адресу 0186

016F (N7) 0170 0171

3E 10

MVI

А,10

Загрузить в аккумулятор 10

0172 0173

D3 01

OUT

01

Отправить содержимое аккумулятора в порт 01 (С)

0174 0175 0176

21 FF FF

LXI

H,FFFF

Загрузить в регистровую пару H FFFF

0177 (N6)

2B

DCX

H

Уменьшить содержимое регистровой пары Н на 1

0178 0179 017A

CA 80 01

JZ

0179 (N5)

Проверка флага Z (нуля), если = 1, то переход по адресу 0179

017B 017C 017D

C3 77 01

JMP

0177 (N6)

Безусловный переход по адресу 0177

0179 (N5) 0180

3E 00

MVI

00

Загрузить в аккумулятор 00

0181 0182

D3 01

OUT

O1

Отправить содержимое аккумулятора в порт 01 (С)

0183 0184 0185

C3 00 01

JMP

0100 (M1)

Безусловный переход по адресу 0100

0186 (N4.1) 0187 0188

FA 6F 01

JM

016F (N7)

Проверка флага S (переноса), если = 1, то переход по адресу 0196

0189

3E

MVI

A,1C

Загрузить в аккумулятор 1С

018A 018B

D3 01

OUT

01

Отправить содержимое аккумулятора в порт 01 (С)

018C 018D 018E

21 FF FF

LXI

H,FFFF

Загрузить в регистровую пару H FFFF

018F (N9)

2B

DCX

H

Уменьшить содержимое регистровой пары Н на 1

0190 0191 0192

CA

JZ

0196 (N8)

Проверка флага Z (нуля), если = 1, то переход по адресу 0196

0193 0194 0195

C3 90 01

JMP

018F (N9)

Безусловный переход по адресу 018F

0196 (N8) 0197

3E 00

MVI

A,00

Загрузить в аккумулятор 00

0198 0199

D3 01

OUT

01

Отправить содержимое аккумулятора в порт 01 (С)

019A 019B 019C

C3 00 01

JMP

0100 (M1)

Безусловный переход по адресу 0100

019D (M6) 019E

3E FF

MVI

B,FF

Загрузить в регистр В FF

019F 01AF 01A0

11 00 01

LXI

D,0200

Загрузить в регистровую пару D 0400

01A1 (M9.2)

3E

MVI

A,38

Загрузить в аккумулятор 38

01A2 01A3

D3 01

OUT

01

Отправить содержимое аккумулятора в порт 01 (С)

01A4 (M9.1) 01A5

DB 01

IN

01

Загрузка содержимого порта 01 (С)

01A6 01A7

D6 58

SUI

58

Вычесть из аккумулятора 58

01A8 01A9 01AA

CA A4 01

JZ

01A4 (M9.1)

Проверка флага Z (нуля), если = 1, то переход по адресу 01A4

01AB 01AC

DB 00

IN

00

Загрузка содержимого порта 00 (А)

01AD

12

STAX

D

Содержимое аккумулятора отправить в ЯП, адрес которой хранится в регистровой паре D

01AE

13

INX

D

Содержимое регистровой пары D увеличить на 1

01AF

05

DCR

B

Уменьшить содержимое регистра В на 1


CA

JZ

0100 (M1)

Проверка флага Z (нуля), если = 1, то переход по адресу 0100


C3 00 01

JMP

01A1 (M9.2)

Безусловный переход по адресу 01А1