Устройство и принцип действия.
Блок-схема скважинного прибора представлена на рис.2. Он состоит из следующих узлов: детекторов D1 и D2, усилителей – преобразователей тока в напряжение У1 и У2, компараторов энергетического «окна» КОМ1 и КОМ2,счетчиков импульсов С1 и С2, цифро-аналоговых преобразователей ЦАП1 и ЦАП2, микропроцессора МП, памяти программ ППЗУ, периферийной БИС ввода/вывода информации ПБИС, приемо-передающей цепи ППЦ, блока управления питанием БУП, блока запуска нейтронной трубки БЗ, излучателя нейтронов ИН и источников питания ИП на напряжения +/-5В, +/-12В, +30В, 2кВ. Детекторы D1 и D2 состоят из сцинтилляционного кристалла NaJ размером 18×160 и 16×40 соответственно и фотоэлектронных усилителей ФЭУ-102, попарно помещенных в отдельные корпуса. Выходными сигналами детекторов являются импульсы тока длительностью 0,7-1,0 мкс.
На рис.3 представлена принципиальная электрическая схема скважинного генератора нейтронов, а на рис. 4 - 20 схемы отдельных узлов прибора.
Усилители У1 и У2 реализованы (на операционном усилителе DA1 для У1) (рис. 4) по одинаковым схемам для обоих зондов. Усилители предназначены для согласования высокоомного выхода ФЭУ с низкоомными входами компараторов, для чего они выполнены по схеме преобразования импульсов тока в импульсы напряжения.
Компараторы КОМ1 и КОМ2 (рис. 4) предназначены для формирования энергетического «окна» при регистрации гамма-излучения наведенной активности кислорода и каждый состоит из 3-х микросхем (DA2, DA3 и DD1 для КОМ1) (см. рис. 4). Установка порогов срабатывания компараторов по нижнему и верхнему уровню окна производится напряжениями U1 и U2 соответственно.
|
|
Эти напряжения вырабатываются с помощью цифроаналоговых преобразователей ЦАП1 и ЦАП2,установленных в блоке ЦАП (рис. 5). Выходные сигналы компараторов управляют триггером DD1, а также поступают в схему счетчиков, расположенных на плате процессора (рис. 6). ЦАП1 и ЦАП2 построены на микросхемах DD7, DA1,DA3 и DD8, DA2, DA4 соответственно. Регистр DD7 служит для приема и хранения задаваемого оператором кода нижнего уровня энергетического «окна», а регистр DD8 – верхнего уровня «окна». В соответствии с хранящимися в регистрах кодами, микросхемы ЦАП DA1 и DA2 совместно с усилителями DA3 и DA4 вырабатывают напряжения U1 и U2 для компараторов.
Счетчики С1 и С2 (рис. 6) реализованы для одного зонда на микросхемах DD4 (порт А и таймер), DD5 и DD6; а для другого зонда на микросхемах DD4 (порт В и таймер), DD7 и DD8. Счетчики служат для постоянного счета проходящих через энергетическое «окно» импульсов напряжения, возникающих при регистрации гамма-излучения. Съем информации со счетчиков производится «на лету» процессором через порты А и В по прерываниям от таймера, время работы которого задается оператором. Вычитание предыдущего отсчета из текущего и передача результата в соответствующую ячейку памяти (канал) дает распределение счетов по времени (по каналам с 1-го по 16-й) внутри одного цикла (после одного запуска
|
|
излучателя нейтронов). Поцикловое и поканальное суммирование счетов в ячейках памяти за время прохождения заданного интервала по глубине (обычно 40 см) дает наряду с временным распределение импульсов от ГИРЗ по глубине, позволяющее на поверхности вычислять искомые параметры Тпл и τпл с целью получения каротажной диаграммы. Цифровые значения счетов в каналах с помощью телеметрической системы (микросхемы DD1и DD4 на рис. 5) (рис. 1 или рис. 6) передаются в наземный прибор.
В качестве памяти программ в скважинном приборе применена микросхема DD3 (К573РФ5), в которой размещается программа функционирования скважинного прибора в 4-х режимах, задаваемых оператором.
При включении аппаратуры, а также по желанию оператора прибор переходит в режим теста, при котором из скважинного прибора в наземный с частотой 100 Гц поступает кодовая комбинация 5020Н. Это – первый режим. Во втором режиме (ИНГК) с частотой 20 Гц запускается излучатель.
|
|
При каждом запуске через заданную оператором задержку регистрируются счета импульсов ГИРЗ в 16-ти последовательных интервалах времени (каналах), длительность которых также задается оператором. Через 8 мс после запуска излучателя, когда интенсивность импульсов ГИРЗ спадет до естественного фона гамма-излучения, начинается подсчет импульсов излучения НАК (наведенной активности кислорода) в заданном энергетическом «окне» (приблизительно от 3-х до 10 МэВ), который продолжается до следующего запуска излучателя, т.е. 42 мс. Затем указанные операции повторяются с суммированием и запоминанием соответствующих счетов в выделенных ячейках оперативной памяти (микросхема DD4 на рис. 6). Из памяти полученная информация с помощью телесистемы передается в наземный прибор и далее в персональный компьютер для обработки.
В третьем режиме (ГК) производится непрерывный подсчет импульсов естественного излучения горных пород со съемом информации через каждые 10 мс и передачей в наземный прибор результатов суммирования в 5-ти последовательных двухбайтовых ячейках памяти 20-ти отсчетов, т.е. через каждые 200 мс числовые величины счета импульсов ГК за этот интервал времени запоминаются в 5-ти ячейках памяти и затем (через 1 сек) передаются в наземный блок для дальнейшей обработки.
|
|
Четвертый режим (ГКС) аналогичен третьему с той разницей, что подсчет импульсов естественного излучения производится в энергетических «окнах» характерных для изотопов калия (К), урана (U) и тория (Th)
Плата микропроцессора МП (см. рис.6) содержит микросхемы DD1 (собственно МП), DD2 (регистр адреса), DD9 (делитель) и DD4 (схема ОЗУ с портами ввода/вывода и таймером). При инициализации скважинного прибора МП функционирует в режиме, заданном оператором, по программе, команды которой выбираются с помощью регистра адреса DD2, а исполнение – с помощью портов ввода/вывода, чтение или запись информации в которые производится процессором.
Приемо-передающая цепь – ППЦ (рис. 5) является скважинной частью примененной в приборе телесистемы и включает в себя кодер/декодер DD1, передатчик, приемник DD4 (рис. 3) и трансформатор Т1 (установлен на шасси прибора) для согласования с геофизическим кабелем. Прием и передача информации осуществляется кодом «Манчестер-II» в соответствии с программой функционирования аппаратуры.
Излучатель нейтронов (ИН) VL1 предназначен для генерации импульсного потока быстрых нейтронов. В состав излучателя входят: нейтронная трубка ТНТ-1411 или ТНТ-1415, высоковольтные трансформаторы, ионный источник, резисторы защиты и поджига (см. рис. 3).
Внешний конденсатор С5 входит в состав узла питания ионного источника. В режиме ожидания запуска верхняя обкладка конденсатора С5 заряжается напряжением 4 кВ. При «поджиге» высоковольтного разрядника FV1 этот конденсатор разряжается через первичные обмотки высоковольтных
трансформаторов, соединенных параллельно. Во вторичных обмотках этих трансформаторов индуцируются импульсы напряжением ~ 60 кВ, соответственно положительной и отрицательной полярности.
При этом величина ускоряющего напряжения между анодом и катодом трубки достигает суммарной величины напряжений. При достижении на резисторе поджига напряжения равного 80-150 кВ, промежуток между поджигающим электродом и катодом трубки пробивается, вызывая тем самым развитие дугового разряда конденсатора в пространстве между анодом и катодом, насыщенного дейтерием. Дейтерий ионизируется, и образовавшиеся дейтроны поступают в межэлектродный промежуток ионно-оптической системы нейтронной трубки, там ускоряются и попадают на тритиево-самариевую мишень, вызывая ядерную реакцию, которая протекает с образованием быстрых нейтронов.
Блок запуска – БЗ излучателя (рис. 7) представляет собой схему формирования высоковольтного импульса напряжения, под действием которого нейтронная трубка вырабатывает импульсный поток быстрых нейтронов. Транзистор VT1 импульсом «пуск», поступающим через порт С микросхемы DD4, открывает тиристор VS1 и разряжает конденсатор С2 через трансформатор Т1. Полученный на выходной обмотке этого трансформатора импульс возбуждает нейтронную трубку.
Источники питания ИП представляют собой (рис. 3) систему, включающую в себя: источники вторичного электропитания +/- 5 В. и +/- 12 В, источник высокого напряжения (2 кВ) для питания 2-х ФЭУ и источник высокого напряжения (4 кВ) для питания нейтронной трубки. Источник вторичного электропитания состоит из задающего генератора (рис. 8), блока силового транзистора (рис. 9), трансформатора Т2 с диодными мостами (рис. 3) и платы стабилизации (рис. 10).
Источник питания ФЭУ реализован с помощью задающего генератора (рис. 11), усилителя мощности (рис. 12), трансформатора Т3 и умножителя (рис. 13).
Для питания излучателя применена схема коммутации (рис. 14), входными сигналами которой являются соответствующие выходы задающего генератора (рис. 8), а выходные сигналы подаются на входы блоков силовых транзисторов (рис. 9), включенных по двухтактной трансформаторной схеме.
Выходные напряжения двух Т4 и Т5 (рис. 3) трансформаторов после умножителей (рис. 15) суммируются и полученное в результате напряжение + 4 кВ подается на нейтронную трубку.
Плата коммутации питания (рис. 16) предназначена для обеспечения работы источника вторичного электропитания при включении аппаратуры.
После появления выходного напряжения +12В плата коммутации отключается. Отключение производится переводом открытого состояния транзистора VT1 в непроводящее состояние шунтированием перехода база-эмиттер открытым тиристором VD1.
В качестве наземного вторичного прибора в генераторе используется компьютеризированный каротажный регистратор «Гектор», который в свою очередь связан с бортовым персональным компьютером типа «Notebook» по интерфейсу RS-232C. Функционирование комплекса – скважинный прибор, «Гектор» и персональный компьютер – осуществляется с помощью программного обеспечения, состоящего из двух частей: управляющей программы «LOG», находящейся в РС, и программы работы скважинного прибора, записанной в микросхеме ПЗУ DD3 (К573РФ5) на плате процессора (рис. 6).
Блок-схема алгоритма работы скважинного прибора представлена на рис. 17.
|
Блоки 1-18 алгоритма реализуют следующие функции:
1. Режим инициализации: указание стека, программирование периферийной БИС, обнуление рабочего участка ОЗУ, программирование таймера на 10мс., ввод цифровых значений верхнего и нижнего уровней энергетического «окна», передача слова 5020Н в наземный прибор, останов (ожидание прерываний RST 7.5 от таймера или RST 5.5 от оператора каротажной станции).
2,3. Цикл длительностью 10мс. – режим цифрового теста. В блоке 2 установка «флага» - ячейку памяти 180ЕН в 1, аккумулятора А в 1, перенос содержимого А в регистр В с целью освобождения аккумулятора для текущих пересылок. В блоке 3 – пересылка слова 5020Н в наземный прибор, обнуление «флага» 180ЕН = 0, останов в ожидании прерываний 7.5 или 5.5.
4. Обработка прерывания 5.5: приём от оператора 6-ти управляющих слов. Задержка введена для ожидания прихода очередного слова, вызывающего прерывание 5.5.
5. Подготовительные операции к анализу принятых слов. Первый байт первого слова определяет режим работы генератора: ЕFН – режим регистрации естественного гамма-излучения; DFH – режим регистрации ГИРЗ и КНАМ. Анализ этих слов позволяет разделить алгоритм на две ветви: регистрацию естественного ГК и регистрацию ИНГК.
Режим ГК.
6. Программирование таймера на 10мс., ЦАП на верхний и нижний уровни энергетического «окна», «флага» 180ЕН в 1 и останов в ожидании прерывания 7.5.
7. Регистрация импульсов естественного γ-излучения (чтением портов 19Н и 1АН) в 10-ти последовательных ячейках ОЗУ (по пять двухбайтовых отсчетов, накопленных за 200мс.) для 2-х зондов – ячейки 1810Н, 1811Н,….., 1822Н, 1823Н. Передача накопленных данных в наземный прибор и повторение цикла – 5ячеек* 200мс.=1сек. Переход к п.6.
Режим ИНГК.
8. Программирование верхнего и нижнего уровней энергетического «окна» в области ГИРЗ, «флага» ИНГК 180ЕН=02, проверка второго байта первого управляющего слова на разрешение запуска излучателя и, если разрешение есть, то - запуск, если нет, то переход на начало программы.
9. Запуск излучателя нейтронов, программирование таймера на время первой задержки Тзад1 и на первое канальное время Тк1. Указание области ОЗУ для данных (начальный адрес 18А4Н), затем останов в ожидании прерывания от Тзад1 (RST7.5).
10. Регистрация 1-го отсчета (после Тзад1) в области ГИРЗ по двум зондам в ячейки памяти с адресами 18А4Н и 18А5Н. Останов.
11. Регистрация отсчетов ГИРЗ по 16-ти каналам по двум зондам в область памяти 18А6 – 18С4Н.
12. Программирование таймера на время Тк2, верхнего и нижнего уровней энергетического «окна» в области КНАМ. Обработка зарегистрированного ГИРЗ (перенос данных из области памяти с 18А4Н в область с 1810Н с суммированием). Указание областей ОЗУ для дальнейшей работы – 18А4Н и 1850Н. Останов.
13. Регистрация 1-го отсчета в области КНАМ в ячейки 18А4Н и 18А5Н.
14. Регистрация 2-го отсчета в области КНАМ в ячейки 18А6Н И 18А7Н. Вычисление разностей 18А6Н – 18А4Н = ΔΝ1 и 18А7Н – 18А5Н = ΔΝ2 и перенос результатов в последовательные ячейки памяти с адреса 1850Н с суммированием по оставшимся 20-ти каналам. Проверка количества циклов (28Н – 14Н = 14Н = 20D).
15. «Флаг» 180ЕН в аккумулятор А и проверка прохождения последнего цикла 29Н.
16. Программирование количества циклов (ГИРЗ + КНАМ) 14Н раз, для чего отводим в качестве «флага» ячейку 180FH.
17. Повторяем (ГИРЗ + КНАМ) 14Н(20D) раз.
18. Пересылаем в наземный прибор накопленный файл данных объёмом А3Н байт (ГИРЗ + КНАМ), ограниченный маркерами начала файла – 9999 и конца файла – 3333. Установка «флагов» 180FН = 01, 180ЕН = 02, таймера на Тзад1 и Тк1, начала ОЗУ по адресу 1810Н и останов в ожидании прерывания 7.5 по концу Тзад1. Переход к п.8.
Для смены режима работы прибора необходимо произвести разовое выключение/ включение питания и вновь запрограммировать прибор.
Разработка и отладка программы производится с помощью программно-логической модели микропроцессора 8085 на персональном компьютере. Программа реализована на ПЭВМ типа IBM PC в среде MS DOS. Программа работает в режиме программно-логической модели МП К1821ВМ85 (с расширенной системой команд). Программный интерфейс оператор - ПЭВМ организован в виде меню. Программа обеспечивает выполнение прикладной программы для МП в пошаговом режиме, в режиме прогона с остановом по контрольным точкам и по дополнительным условиям; обеспечивает доступ ко всем внутренним регистрам МП, а также внешней памяти и портам ввода/вывода; программирование карты памяти; трассировку последних 1023 инструкций, выполненных процессором. Перечисленные режимы поддерживаются как в режиме модели, так и при работе с микропроцессорным устройством (МПУ) пользователя в реальном масштабе времени. При работе в режиме программно-логической модели дополнительной аппаратуры не требуется. Ниже описана последовательность действий оператора при работе с программой.
Для запуска программы необходимо набрать команду Е8085.
Если установлен режим программно-логической модели, то производится очистка памяти и контрольных точек.
Предусмотрена возможность автоматической загрузки файла программы пользователя. Для этого имя файла должно быть указано в командной строке, например:
Е8085 EXAMPLE.HEX
Основное меню программы содержит следующие команды:
Ram - редактирование памяти.
Ports - редактирование портов ввода/вывода.
Step - выполнение шага программы.
Over - выполнение процедуры/шага программы.
Go - запуск программы.
Nstep - выполнение заданного числа шагов.
Reset - сброс микропроцессора.
Disk - чтение/запись загружаемых файлов.
Mode/Map - задание режимов, установка карты памяти.
Hdw - статическая отладка МПУ.
Edit - редактирование и компиляция.
Выбор команды меню выполняется с помощью клавиш управления курсором: "стрелка влево", "стрелка вправо". Запуск команды - клавишей "ENTER". Клавиша "ESC" позволяет выйти из любого меню в предыдущее и служит также для отмены любого выбранного режима (см. ниже). Нажатие этой клавиши в основном меню вызывает подменю вертикального типа:
"Конец работы" - подтверждение завершения работы;
"DOS Shell" - временный выход в DOS., программа остается в памяти, возврат по команде EXIT.
Выбор команды и ее инициирование производятся клавишами стрелок и Enter.
Выбираемая команда меню индицируется цветом фона и сопровождается подсказкой в 24 строке экрана. За текстом подсказки в скобках указан альтернативный способ вызова данной команды - посредством комбинации клавиш Alt и буквы латинского алфавита, которая выделена в команде как прописная. Например, для перехода к просмотру и редактированию регистров специальных функций из любого другого режима можно не выходить в меню, а нажать комбинацию клавиш Alt-S. Такой способ выбора команды повышает удобство и скорость работы с программой.
Предусмотрен ввод контрольной точки останова программы пользователя по заданному адресу - комбинацией клавиш Ctrl-F8, а также автоматическое выполнение цикла: редактор текста - ассемблер - редактор связей - загрузка файла, - клавишей F9.
На экране постоянно отображаются 4 окна:
Регистры Трасса программы Программа Стек,
Доступ к данным в окнах осуществляется клавишей Tab. При этом активное окно выделяется двойной рамкой. Переключение активного окна производится следующим нажатием на клавишу Tab. В 23 и 24 строках экрана выводится подсказка. Для возврата в меню нужно нажать клавишу ESC. Предусмотрен альтернативный доступ к окнам - по номеру окна. Номер окна указан в левом нижнем углу рамки в виде: [N], где N-1..4. Для входа в окно нужно нажать комбинацию клавиш Alt-номер, например А1t-3.
В окне "Регистры" представлена информация о текущем значении процессора: значения регистров и флагов микропроцессора, состояние внешних входов прерываний. Все ресурсы доступны для редактирования при активизации окна (клавишей Tab).
В окне "Трасса программы" отображаются значения счетчика команд и соответствующие мнемоники для последних 17 выполненных инструкций. Цветом выделена инструкция, которая будет выполнена при следующем шаге. В буфере трассы программы фиксируются значения счетчика команд для последних 1023 выполненных инструкций. Просмотр трассы обеспечивается при активизации окна.
В окне "Программа" отображаются коды и дисассемблированные инструкции программы, загруженные в память. Адреса переходов и данные представлены в шестнадцатеричном виде. Инструкция, на которую указывает счетчик команд РС, выделена цветом. В окне просмотра помещается 18 инструкций. Просмотр и редактирование (если окно активизировано) осуществляется по принципу "ролика", способ выбора и изменения содержимого ячеек памяти тот же, что и при редактировании кодов. Для корректного дисассемблирования памяти программ необходимо правильно задать начальный адрес просмотра, запрашиваемый управляющей программой. Адрес должен соответствовать первому байту (коду операции) инструкции. Следует учитывать, что области константных массивов в памяти программ дисассемблером не распознаются. Для правильного отображения конкретного участка программы нужно в качестве точки начала дисассемблирования задавать адрес первого оператора просматриваемой процедуры.
В процессе работы (просмотр программы, отображение результатов выполнения инструкций микропроцессора) дисассемблер запоминает адреса памяти, соответствующие первым байтам инструкций. Эта информация используется при просмотре рабочего участка программы, как в направлении увеличения, так и уменьшения адресов. Если возникает ситуация, когда дисассемблер не находит нужного адреса в "предыстории", то пользователю выдается запрос, с какого адреса проводить дисассемблирование. Если адрес введен ошибочно, например, указывает на второй байт инструкции, то скорректировать точку входа можно вручную, нажав клавишу F2 и введя правильный адрес.
Программа имеет также встроенную функцию ассемблирования. Это позволяет редактировать содержимое памяти программ, пользуясь мнемониками языка Ассемблер. В отличие от транслятора с языка данная программа не поддерживает мнемонических идентификаторов адресов (меток) и данных (за исключением случая, когда загружена таблица символических имен). Ввод этих величин производится в шестнадцатеричных кодах.
При вводе строки на языке Ассемблер обеспечивается ее редактирование. Ввод завершается клавишами " стрелка вверх", " стрелка вниз" и Enter. Если строка введена правильно, то модифицируется соответствующее количество байт памяти и результат отображается на экране, в противном случае содержимое памяти не изменяется. Сообщений об ошибках не выдается.
В режиме редактирования дисассемблированной программы можно вызывать дополнительные сервисные функции. Информация о доступных функциях выведена в 23 и 24 строках экрана. В отличие от режима редактирования памяти в кодах в данном режиме имеется возможность выполнения инструкций программы без выхода в меню:
F7 - выполнение шага (аналогично команде меню Step);
F8 - выполнение процедуры/шага (аналогично команде меню Over);
Ctrl-F9 - прогон программы (аналогично команде меню Go);
F4 - прогон программы до курсора.
Ctrl-F4 - изменение состояния счетчика команд, значение PC устанавливается равным адресу инструкции, на которую указывает курсор.
В окне "Стек" индицируется фрагмент памяти, на который указывает регистр SP. Цветом выделена область памяти, которая, возможно, является стеком программы пользователя. Границей данной области является ячейка памяти по адресу, содержащемуся в регистре SP, При активизации окна данные можно просматривать в режиме " ролика." и при необходимости редактировать.
В нижней части окна "Стек" отображается текущая глубина стека и максимальное значение глубины, достигнутое при выполнении программы. Сброс показаний происходит при выполнении сброса процессора командой меню "Сброс".
Программа обеспечивает прямое экранное редактирование отображаемых ресурсов.
В режиме Ram осуществляется экранное редактирование памяти МП. При входе в данный режим на экране отображается содержимое памяти в шестнадцатеричных кодах; курсор указывает на ячейку с адресом, который просматривался при последнем входе в данный режим. Для выбора редактируемой ячейки памяти используются клавиши: стрелки вверх, вниз, влево, вправо; Home, End, PgUp, PgDn. Для редактирования выбранной ячейки следует нажать клавишу любого шестнадцатеричного символа (0.. F). Ввод однозначного числа завершается нажатием любой из клавиш редактирования или Enter, при нажатии клавиши второго символа ввод числа считается завершенным и курсор автоматически переходит к ячейке со следующим адресом.
При редактировании памяти имеются дополнительные сервисные возможности:
- переход к произвольному адресу (F2);
- заполнение кодом (константой) ячеек памяти в заданном диапазоне адресов (F3 ) ;
- очистка (сброс) контрольных точек в диапазоне (F5);
- сдвиг заданного фрагмента памяти программ на область адресов, начинающуюся с заданного (F8);
- установка/сброс контрольной точки по заданному адресу
(Ctrl-F8) .
- поиск заданной последовательности кодов (F10);
- установка/сброс контрольных, точек по редактируемым адресам (Ins).
Имена и назначение функциональных клавиш (F1-F10) в процессе работы индицируются в окне меню.
Для заполнения константным кодом фрагмента памяти (F3) требуется в появившемся на экране окне параметров подтвердить параметры, задаваемые по умолчанию (код = 0, начальный адрес = 0, конечный адрес = FFFF), или установить новые. Выбор изменяемого параметра осуществляется клавишами "стрелка вверх" и "стрелка вниз", редактирование - клавишами шестнадцатеричных символов, а также "стрелка влево", "стрелка вправо", BackSpase. Фиксация нового параметра происходит при нажатии клавиши Enter или переходе к следующему параметру. Для выполнения операции заполнения кодом необходимо установить курсор на поле "ОК" и нажать Enter, для отмены операции - нажать ESC.
Для выполнения поиска фрагмента памяти с кодами, совпадающими с заданной последовательностью (F10), необходимо в окне "Модель для поиска" ввести кодовую последовательность в шестнадцатеричных кодах. При этом каждая пара символов считается значением очередного байта модели поиска. Допускаются пробелы в любом количестве. Если число символов нечетное, то последний символ считается младшим значащим в байте. Ввод модели поиска заканчивается нажатием Enter. Поиск начинается с текущего адреса просмотра памяти +1, конечный адрес равен FFFF. Поиск осуществляется до первого выполнения заданного условия.
Если включен режим символической отладки, поиск может осуществляться по имени метки. Для этого вместо последовательности шестнадцатеричных кодов нужно набрать имя метки. Если указанное имя найдено в таблице символических имен, то курсор переместится на соответствующий адрес. Если заданное имя состоит только из символов, отображающих шестнадцатеричные числа, то, после поиска соответствия имени осуществляется поиск последовательности кодов.
Установка/сброс контрольных точек останова выполнения программы производится клавишей Ins. При этом для правильной работы системы контрольная точка должна устанавливаться на первом байте инструкции. Установленная контрольная точка (К.Т.) отображается на экране заштрихованным треугольником около кода инструкции. Если К. Т. уже установлена по адресу, на который указывает курсор, то нажатие клавиши Ins приведет к ее удалению. Установка К.Т. допускается во всем диапазоне адресов памяти программ.
С помощью клавиши F5 можно удалять К.Т. в заданном диапазоне адресов памяти программ. Задание границ диапазона производится аналогично режиму заполнения константным кодом.
Для копирования фрагмента памяти (инициируется клавишей F6) нужно задать границы фрагмента и начальный адрес копии.
Установка/сброс контрольной точки по заданному адресу инициируется комбинацией клавиш Ctrl-F8. В появившемся окне отображается дисассемблированная инструкция по адресу, на котором последний раз устанавливалась контрольная точка. Изменить адрес можно, набрав его в шестнадцатеричном виде и нажав Enter; установить/сбросить К.Т. - клавишей Ins.
Порты ввода/вывода (команда меню Ports - редактирование портов ввода/вывода) представлены в виде пространства с адресами 0..255 с байтовой организацией. Просмотр и редактирование ячеек портов производится аналогично редактированию памяти. Выполнение программы осуществляется командами меню Step, Over, Go, Nstep. Данные команды служат для выполнения программы пользователя по шагам или в непрерывном режиме.
При активизации команды Step выполняется текущая инструкция программы пользователя и результат ее выполнения отображается во всех рабочих окнах.
По команде Nstep производится выполнение заданного количества инструкций (не более 65534). Инструкции могут выполняться двумя способами:
- по шагам, с соответствующим отображением состояний после каждого шага;
- в режиме прогона, активизируется только при работе с эмулятором.
Соответственно, при активизации данной команды появляется окно с запросом способа выполнения и количества шагов:
По шагам: FFFF
Прогон : FFOO.
Команда выполняется по нажатию клавиши Enter. Количество инструкций можно редактировать, способ выполнения зависит от того, в какой позиции находился курсор при запуске команды. Выполнение инструкций по команде Nstep может быть прекращено при нажатии клавиши Enter.
Команда Over используется для выполнения процедуры, то есть все инструкции, следующие за командой Call, выполняются автоматически в пошаговом режиме (без отображения результатов на экране и фиксации в трассе) до соответствующей команды возврата. Вложенные процедуры также выполняются. Если произошло переполнение стека или возврат из процедуры происходит по адресу, не соответствующему входу в нее, то выдается сообщение об ошибке: "Переполнение стека" или "Ошибка управления стеком" соответственно. При зацикливании программы останов производится нажатием клавиши ESC. Для всех инструкций, отличающихся от Call, выполнение команды Over аналогично команде Step.
Выбор команды Go активизирует запуск программы в непрерывном режиме (без отображения на экране, с фиксацией трассы). Перед выполнением команды запрашивается адрес запуска (по умолчанию текущий адрес PC). Остановить выполнение программы можно нажав клавишу Enter.
Если включен режим символической отладки, то при выполнении команды Go вместо адреса можно вводить имя метки.
При выполнении инструкции, отмеченной контрольной точкой (см. описание редактирования памяти программ) в режимах Go, Nstep происходит останов и выдается сообщение "Останов по контрольной точке". Следует иметь в виду, что команда, помеченная контрольной точкой, будет выполнена, а затем производится останов. При останове обновляется информация во всех окнах. При работе с моделью во всех режимах производится контроль стека и выдаются сообщения об ошибках, аналогично команде Over.
Предусмотрен также останов по значению одного или нескольких регистров.
При работе с моделью имеются дополнительные возможности:
- в процессе выполнения команд Go, Over., Nstep имеется возможность имитации сигналов на внешних входах МП: Int,
Trap, Rst5.5, Rst6.5, Rst7.5, Sid (в зависимости от установленного типа МП). При этом на экране отображаются мнемонические имена данных линий, логические состояния моделирования внешних воздействий на эти линии и имена функциональных клавиш (Fl -F5), которые позволяют изменять состояние внешнего воздействия с клавиатуры;
- при выполнении инструкции ввода данных из порта (in NN)
производится запрос данных от оператора. В появившемся окне индицируется текущее значение PC, мнемоника команды и значение вводимых данных. Предлагаемое по умолчанию значение равно содержимому соответствующей ячейки массива портов (равно последней записанной в данный порт величине). Если величину вводимых данных изменять не требуется, то для продолжения выполнения программы достаточно нажать клавишу Enter;
- обеспечивается подсчет тактов синхронизации, требуемых для
выполнения инструкций программы пользователя. Состояние счетчика тактов индицируется в 25 строке экрана (выделено цветом). Индикация состояния счетчика происходит при каждом останове выполнения программы. Счетчик обнуляется при выполнении команды Reset или клавишей F10.
При работе в основном меню можно устанавливать/сбрасывать контрольные точки останова (клавиши Ctrl-F8) так же, как и при работе с памятью программ (см. выше).
В режиме Reset выполняется установка счетчика команд и внутренних флагов в исходное состояние в соответствии с функционированием кристалла прототипа. Кроме того, обнуляется счетчик тактов и инициализируется система контроля стека.
В режиме Disk производится выбор рабочего диска/директории, чтение файла программы пользователя и запись программы в файл в загружаемом формате. Управляющая программа работает с файлами в форматах HEX (Intel) и BIN (двоичный формат, абсолютное отображение памяти, другой вариант имени - ABS) с соответствующим расширением имени файла. Формат НЕХ используется по умолчанию.
Выбор файла для чтения и переход в выше- или нижележащую директорию производится клавишами редактирования и Enter.
Если курсор (выделение цветом) указывает на файл (имя напечатано строчными буквами), то считается, что данный файл должен быть загружен в память. Загрузка инициируется клавишей Enter. При ошибке операции доступа к файлу выдается сообщение об ошибке. Для продолжения работы нужно нажать любую клавишу.
Если курсор указывает на вышележащую (“…”) или нижележащую (имя напечатано прописными буквами) директорию, то нажатие клавиши Enter инициирует переход к данной директории.
Способ просмотра директории меняется клавишей F8. В одном случае директория отображается в виде "brief" - только имена файлов, в другом - "full" - имя, размер, дата создания.
Для изменения рабочего диска необходимо нажать клавишу "D". В появившемся окне нужно ввести имя диска (директории) и нажать Enter . В этом же режиме можно задавать маски для просмотра директории (wildcards) в соответствии с правилами DOS.
Запись в файл программы из памяти производится по команде "W" . Для записи файла в формате BIN нужно ввести расширение имени файла BIN или ABS, по умолчанию HEX. После ввода имени файла последовательность действий аналогична операции чтения.
По команде 'Т" производится запись файла программы в дисассемблированном виде. Строки формируются в формате, аналогичном просмотру памяти в режиме дисассемблера.
По команде Mode/Map предлагается выполнение одной из следующих операций:
МОДЕЛЬ - установка режима программно-логической модели;
ЭМУЛЯТОР - установка режима работы с эмулятором, инициализация интерфейса и аппаратуры эмулятора;
УСЛОВИЯ ОСТАНОВА - переход к режиму программирования условий останова;
КАРТА ПАМЯТИ - переход к режиму программирования карты памяти;
АВТОЗАПУСК - включение/выключение автоматического запуска продолжения выполнения программы при останове по контрольной точке. Используется только при работе с эмулятором.
Выбор режима выполняется клавишами стрелок "вверх" и "вниз", установка режима - клавишей Enter. Текущие установки появляются в окне справа от основного, для редактирования нужно нажать клавишу " стрелка вправо". Изменение установки производится клавишей Enter.
В режиме "УСЛОВИЯ ОСТАНОВА" задаются дополнительные условия останова выполнения программы пользователя. Способы останова зависят от текущего режима модель/эмулятор.
При работе с моделью можно задавать условия останова по значению одного или нескольких регистров МП, При вызове данной опции (клавишей Enter) в появившемся окне предлагается список анализируемых регистров и их контрольные значения. Для включения режима проверки состояния регистра в процессе выполнения программы пользователя нужно установить курсор на соответствующую строку и нажать клавишу Enter. Включение проверки индицируется символом "±" слева от имени регистра. Выключение проверки производится так же клавишей Enter. Редактирование контрольного значения регистра осуществляется аналогично предыдущим режимам.
Команда Hdw активизирует режим статической отладки.
В управляющей программе предусмотрены четыре режима статической отладки МПУ. Вызов данных режимов осуществляется при активном окне Hdw клавишами:
F4 - "Чтение памяти", отработка цикла чтения памяти, F5 - "Запись .в память", отработка цикла записи памяти. F6 - "Чтение порта", отработка цикла чтения порта ввода/вывода; F7 - "Запись в порт", отработка цикла записи в порт ввода/вывода .
Для выхода из режима статической отладки нужно нажать клавишу ESC.
Редактирование и компиляция программы пользователя производится командой меню Edit. Данная команда обеспечивает вызов внешних программных средств: редактора текста, кросс-ассемблера и редактора связей.
Рабочее окно разделено на два основных поля: "Команды" и "Опции". Выбор команды и установка опций производится клавишами стрелок и "табуляция".
В поле "Команды" можно активизировать следующие операции:
Edit - вызов редактора текста для редактирования рабочего файла;
List - вызов программы просмотра файла листинга;
Assemble - вызов кросс-ассемблера и обработка рабочего файла;
Link - вызов редактора связей;
Load - загрузка результата трансляции в программно-логическую модель;
Compile - автоматическое выполнение последовательности команд Assembler- Link - Load;
Make - автоматическое выполнение последовательности команд
Ed it - Assembler - Link – Load.
В поле "Опции" задаются следующие параметры:
Файл - имя рабочего файла: может содержать полный путь поиска; передается в качестве параметра при выполнении команд Edit и Assembler; используется при формировании имен входных файлов в командах Link, List, Load.
Редактор - имя файла редактора текста: может содержать полный путь поиска; при вызове в качестве параметра передается имя рабочего файла.
Ассемблер - имя файла кросс-ассемблера: может содержать полный путь поиска; при вызове в качестве параметра передается имя рабочего файла (команда Assemble). Если используется кросс-ассемблер TASH.EXE фирмы Spech Tech. Inc., то автоматически вставляется ключ "-85" для вызова таблицы настройки.
Ред.связей - имя файла кросс-редактора связей: может содержать полный путь поиска; при вызове в качестве параметра передается имя рабочего файла с расширением . OBJ (команда Link). He используется при работе с кросс-ассемблером TASM.EXE фирмы Spech Tech, Inc.
OBJ файлы - список имен объектных файлов для кросс-редактора связей: может содержать полный путь поиска; имена файлов разделяются символами "," или ";" и могут упоминаться без расширения имени (по умолчанию .OBJ) . Не используется при работе с кросс-ассемблером TASM.EXE фирмы Spech Tech. Inc.
Загрузка - указывается расширение имени файла, загружаемого при выполнении команды Load, необходимо для работы с символическим отладчиком.
Просмотр - имя программы для просмотра листинга: может содержать полный путь поиска; при вызове в качестве параметра передается имя рабочего файла с расширением . LST (в команде List).
Сохранение памяти при вызове программы:
· если включено ("ON"), то при вызове внешних программ на диске в текущей директории сохраняется содержимое массивов памяти, портов, контрольных точек, символических имен. Память, занятая этими массивами, освобождается для запуска внешней программы. При возврате в оболочку Е8085 содержимое массивов восстанавливается.
· если значение опции "OFF", то при возврате в оболочку Е8085 массивы очищаются. Служебные файлы, используемые для сохранения информации имеют расширение имени ".$$$".
Выбор имен файлов в поле "Опции" может производиться в режиме просмотра директории, аналогично режиму "Диск". Для этого нужно установить курсор в режим редактирования требуемого параметра и нажать клавишу F3. В отображаемой директории автоматически устанавливается маска в соответствии с расширением имени файла, указанного в строке параметра.
Сообщения, генерируемые кросс-ассемблером или редактором связей запоминаются в файле с именем Е8085.$$$. Последняя строка сообщений выводится на экран в окне Edit.
Символическая отладка подразумевает возможность работать с именами меток, присвоенными пользователем в исходном тексте программы.
Программа поддерживает два способа ввода информации о символических именах, установленных в программе пользователя.
В первом случае имена меток извлекается из файла листинга программы. Для включения режима символической отладки нужно загрузить файл с расширением .LST. При этом загружается память (коды) и внутренняя таблица символических имен. Формат строки листинга должен быть следующий:
Номер_строки Адрес Байты_данных <Метка:> <Инструкция и т.д.>,
где символами < > указаны необязательные поля.
Поддерживается работа с листингами, сформированными кросс-ассемблерами TASM фирмы Speech Technology Inc. и Х8085 фирмы 2500AD.
Естественное ограничение такого способа загрузки - листинг должен содержать весь текст программы в абсолютных адресах.
Если при загрузке найдена хотя бы одна метка, то включается режим символической отладки. В этом случае при отображении дисассемблированных инструкций указывается метка, установленная на данном адресе, и, в командах переходов, метки вместо адресов. Если по данному адресу метка во внутренней таблице не найдена, то дисассемблер отображает абсолютные адреса.
Второй способ загрузки символической таблицы поддерживает отладку программы, скомпонованной с помощью редактора связей. Информация об именах меток извлекается из файла символических имен в формате ZАХ. Для формирования файла символических имен при трансляции программы кросс-пакетом фирмы 2500 A.D. нужно выполнить следующие действия:
1. ввести в исходный текст программы директиву SYMBOLS ON;
2. при редактировании связей активизировать ключ Z, например,
запустить программу LINK командой
link -с NAME -z , где NAME.OBJ - объектный файл программы пользователя.
В результате будет сформирован файл символических имен с именем NAME.SYM.
При загрузке файла данных в форматах HEX или BIN производится поиск файла с тем же именем и расширением SYM; при наличии такого файла автоматически загружается таблица символических имен.
При включенном режиме символической отладки меняется конфигурация окон: отключается окно "Трасса" и расширяется окно '"Программа". Состояние режима индицируется сообщением в правом нижнем углу окна "Программа":
F3:[Sym Qn ] или F3:[Sym Off].
Соответственно, можно включать и отключать режим символической отладки клавишей F3. Включение режима возможно только в том случае, если загружена таблица символических имен.
Кросс-ассемблер Х8085 дает пользователю возможность преобразовывать программы, написанные на языке ассемблера микропроцессора серии К1821ВМ85, в перемещаемые модули объектного кода. Эти модули впоследствии могут быть скомпонованы с другими объектными модулями и настроены на выполнение с определенного адреса программой редактор связей. Основные функции кросс-ассемблера:
- синтаксический и семантический контроль исходного текста программы;
- преобразование исходного текста в объектный код;
- формирование листинга ассемблирования.
Программа работает в операционной системе MSDOS (версия DOS 3.30) на IBM AT. Требуемый объем памяти составляет 512К минус количество памяти, занимаемое самой операционной системой. Исходный текст программы на языке ассемблера формируется в виде файла любым редактором текста и может содержать не более 30 000 строк.
Запустить кросс-ассемблер на выполнение можно двумя способами: в режиме подсказок и в режиме командной строки. В режиме подсказок после загрузки операционной системы и вызова Norton Commander необходимо войти в нужную директорию и, подведя курсор под файл X8085.EXE, нажать клавишу "Enter". В процессе работы программа будет выдавать сообщения, ответом на которые задается режим работы кросс-ассемблера. В режиме командной строки вызов программы и задание необходимых ключей осуществляется в одной строке.
После загрузки программы на экране выдается заголовок, затем высвечивается запрос на вывод листинга с указанием ключей:
Listing Destination (N ,T,D,E,L, P , <CR>=N ) :
где N - не выводить,
T - выводить на терминал,
D - выводить на диск,,
Е - выводить только ошибки,
L - выводить листинг (вкл/выкл),
Р - выводить на принтер;
<CR> -равносильно "N".
Если ответить "D" или "Р", то задается вопрос - выводить ли таблицу перекрестных ссылок:
Generate Cross Reference ? (Y/H <CR>=N): где Y - да, N - нет.
Если ответить "L" (вывод листинга контролируется директивой ассемблера List On/Off), то выводится дополнительная подсказка:
LIST ОN/OFF Listing Destination (T , D, P , <CR>=T) :
где значение ключей остается прежним.
Если ответить "Е" (в листинг будут выводиться только ошибки), то выводится дополнительная подсказка:
Error Only Listing Destination (T, D, P, <CR>=T ) : Затем запрашиваются имена входного и выходного файлов.
Input Filename: Output Filename:
Если расширение входного файла не указано, то оно по умолчанию принимается .ASM. Расширение выходного файла по умолчанию равно .OBJ. Если не указано имя выходного файла, то ему присваивается имя входного файла с расширением .OBJ.
Командная строка содержит следующую информацию:
- вызов кросс-ассемблера X8085;
- имя входного файла;
- имя выходного файла;
- ключи вывода листинга.
Имя выходного файла и ключи вывода листинга являются необязательными параметрами и указываются в квадратных скобках.
Общий вид командной строки:
Х8748 [-Q] Input_Filename [Output_Filename]
[-Т,-Р,-D,-РХ,-DX][,А:\NEW\]
Ключ "Q" (Quiet) располагается перед именем входного файла и означает, что из ассемблера на экран выводятся только сообщения об ошибках и сами ошибочные строки.
Ключ "X" указывает на вывод в листинг таблицы перекрестных ссылок. Значение остальных ключей уже было описано в режиме подсказок. Если листинг выводится на другой дисковод или в другую директорию, то место назначения указывается в конце командной строки и отделяется от ключей вывода запятой.
Кросс-ассемблер обрабатывает исходную программу за два прохода. При первом проходе читается входной файл., контролируется каждая строка исходной программы, создается таблица перекрестных ссылок. При втором проходе создается объектный код и листинг ассемблирования. В процессе ассемблирования независимо от ключей, заданных при запуске ассемблера, действуют следующие команды:
Ctrl-S - остановить вывод с терминала
Ctrl-Q - запустить вывод с терминала
Esc-C - закончить ассемблирование
Esc-T - отобразить вывод на терминале
Esc-P - отобразить вывод на принтере
Esc-D - послать вывод на диск
Esc-M - многократный вывод (на терминал и диск)
Esc-N - нет вывода
Входным файлом для кросс-ассемблера является исходный текст программы на языке ассемблера микропроцессора К1821ВМ85, записанный на диск в виде файла любым редактором текста данной операционной системы. Расширение имени входного файла по умолчанию принимается равным .ASM. Выходными файлами являются файл объектного кода с расширением имени .OBJ и файл листинга с расширением .LST.
Кросс-редактор связей LINK дает пользователю возможность связывать перемещаемые модули объектного кода, полученные после ассемблирования исходных модулей на языке ассемблера, с другими объектными модулями и настраивать их на выполнение с определенного адреса.
Основные функции кросс-редактора связей:
- распределение сегментов модулей в адресном пространстве;
- разрешение внешних ссылок;
- формирование выходного файла и таблиц глобальных символов в определенных форматах;
- выявление ошибок редактирования;
- формирование листинга редактирования в виде карты загрузки.
Программа работает в операционной системе MSDOS (версия DOS 3.30) на IBM AT. Требуемый объем памяти составляет 512К минус количество памяти, занимаемое самой операционной системой. Размер выходного файла ограничивается объемом оперативной памяти (RAM) микропроцессора (микро-ЭВМ). Поиск внешних ссылок может осуществляться редактором связей в 50 библиотеках. Редактор связей может обрабатывать до 20 объектных файлов, поэтому количество одновременно открытых файлов в системе (файл CONFIG.SYS) должно быть увеличено еще и с учетом количества файлов, открываемых в резидентных программах.
Каждый объектный файл может иметь до 256 различных сегментов, определяемых пользователем. Размер каждого сегмента не ограничен. Адреса смещений сегментов могут указываться как в самом файле, так и задаваться в процессе редактирования. Отдельные сегменты в файлах могут использоваться только для ссылок. Это означает, что информация из сегмента, предназначенного для связи, будет использована, но сам сегмент не будет включен в выходной файл.
Запустить кросс-редактор связей на выполнение можно тремя способами: в режиме подсказок, в режиме командного файла и в режиме командной строки.
В режиме подсказок после загрузки операционной системы и вызова Norton Commander необходимо войти в нужную директорию и, подведя курсор под файл LINK.EXE, нажать клавишу "Enter".
Режим файла данных идентичен режиму подсказок, за исключением того, что ответы на подсказки размещаются в файле. При запуске редактора необходимо указать имя командного файла,
В режиме командной строки вызов программы и задание необходимых ключей осуществляется в одной строке.
После загрузки программы на экране выдается заголовок, затем запрашивается имя входного файла и адрес смещений сегментов, входящих в этот файл.
Input Filename:
Enter Offset For 'Code' :
Enter Offset For 'Data' :
Эти сообщения повторяются до тех пор, пока все входные файлы не будут перечислены. Расширение входных файлов по умолчанию принимается равным .OBJ. Шестнадцатеричное значение смешения прибавляется к значению любой директивы OB.G объектного файла. При ответе, состоящем из нажатия клавиши "ENTER", кросс-редактор связей будет помещать каждый сегмент программы сверху предыдущего сегмента. Знак минус означает перераспределение сегмента и невключение его в выходной файл.
После того, как все объектные файлы перечислены, на запрос имени следующего входного файла надо нажать клавишу "ENTER" и на экране появится запрос имени выходного файла:
Output Filename:
Если не указано имя выходного файла, то присваивается имя первого входного объектного файла.
Затем редактор связей запрашивает имя файла библиотеки:
Library Filename:
Ответ из нажатия клавиши "ENTER" завершает ввод имен файлов библиотек.
В следующем сообщении запрашиваются ключи вывода результатов работы кросс-редактора связей:
Options (D,3,А,М,Z,Х,Н,Е,Т:1,2,3,<CR>=Defult):
где D - вывод на диск файла, содержащего ошибки редактирования, таблицу глобальных символов в алфавитном порядке и карту загрузки;
3 - вывод файла, содержащего таблицу глобальных символов (длина имени символа равна 32);
А - вывод файла, содержащего таблицу глобальных символов (длина имени символа равна 10);
М - вывод файла в формате MICROTEK, в него входят локальные и глобальные символы, при этом в исходный файл должна быть включена директива SYMBOL ON;
Z - вывод файла в формате ZAK, в него входят локальные и глобальные символы, при этом в исходный файл должна быть включена директива SYMBOL ON;
X - вывод выходного файла, готового к выполнению;
Н - вывод выходного файла в шестнадцатеричном формате INTEL;
Е - вывод выходного файла в расширенном шестнадцатеричном формате INTEL;
Т - вывод выходного файла в шестнадцатеричном формате TEKTRONIX;
1- вывод выходного файла в формате MOTOROLA S19;
2- вывод выходного файла в формате MOTOROLA S23;
3- вывод выходного файла в формате MOTOROLA S37;
Если указано более одного ключа, то последний ключ будет иметь приоритет по отношению к предыдущим.
Режим файла данных используется для большого и сложного редактирования. Файл данных должен иметь расширение .LNK. Редактор связей считывает этот файл построчно. В каждой его строке указывается подсказка. Для того, чтобы создать файл данных, необходимо прогнать режим подсказок и записать каждый ответ на подсказку. С помощью любого редактора текста сформировать из этих ответов файл с расширением .LNK. Любая строка, имеющая в первой колонке символы ";" или "*" , рассматривается как строка комментария.
В режиме командной строки последняя содержит следующую информацию:
- вызов кросс-редактора связей LINK;
- имена входных файлов с указанием смещения;
- имя выходного файла;
- ключи вывода результатов.
Смещение сегментов, имя выходного файла и ключи вывода листинга являются необязательными параметрами и указываются в квадратных скобках.
Общий вид командной строки:
LINK[-Q]-CFilel[-LNNNN]File2[-LNNNN]...[-OFile][-Options]
Ключ "-Q" устанавливает редактор связей в режим Quiet, что означает вывод на экран сообщений об ошибках и самих ошибочных строк.
Ключ "-С" указывает редактору связей на режим командной строки.
Затем указываются имена входных объектных файлов. Каждый файл может иметь смещение (NNNN в шестнадцатеричном виде), следующее за ключом "-L" , Если смещение не указано, то сегменты файла устанавливаются сверху сегментов предыдущего файла в соответствии с именами.
Ключ "-0" является признаком указания имени выходного файла. Если имя выходного файла не указано, то редактор связей будет создавать выходной файл с именем первого входного файла и расширением, определяемым форматом выходного файла. Входными файлами могут быть файлы библиотек. Максимальное число файлов, которое можно указать, равно 50.
В поле "Options" указываются ключи вывода результатов редактирования, знак минус ставится для указания любого количества ключей. Значение ключей уже было описано в режиме подсказок.В процессе редактирования указанное значение смещения будет прибавляться к любому адресу, созданному кросс-ассемблером. Таблица символов, полученная в результате ассемблирования, будет перенастроена с учетом смещения. Распределение сегментов в памяти будет осуществляться по общему правилу:
· сегменты объединяются по имени;
· разноименные сегменты устанавливаются в порядке следования их в исходном файле, если не указаны конкретные адреса.
Некоторые сегменты могут использоваться только для ссылок, выводить их в выходной файл не требуется. Они содержат глобальные символы, которые могут использоваться при редактировании связей как справочная информация.
Любой сегмент любого файла можно использовать для справочной информации за исключением первого сегмента в первом файле, так как он является основой для расчетов редактору связей.
Сегменты только для ссылок применяются в тех случаях, когда программа постоянно находится в ПЗУ, а область данных - в ОЗУ . Желательно иметь выходной файл, содержащий только ту часть программы, которая сохраняется в ПЗУ.
Сегмент, содержащий только справочную информацию, при редактировании помечается знаком минус перед смещением, в выходной файл не выводится и помещается в карту загрузки.
Косвенное редактирование применяется при описании сегмента файла, адрес которого при редактировании отличается от действительного адреса загрузки. Это можно назвать сдвигом по фазе.
Символ "@", стоящий перед адресом загрузки, является признаком косвенного редактирования. Все сегменты с косвенными адресами редактирования автоматически устанавливаются в стек сверху предыдущего сегмента с таким же точно именем в предыдущем файле.
При использовании косвенного редактирования надо помнить следующие правила:
если имя сегмента отмечено как косвенное, то
каждое идентичное имя сегмента в последующих файлах
будет автоматически отмечаться как косвенное;
сегменты с косвенными адресами устанавливаются в стек
в том порядке, как если бы они устанавливались в стек не
будучи косвенными;
сегменты с косвенными адресами не могут быть только
справочными, так как основной целью редактирования является включение сегмента в файл загрузки.
Далее представлен листинг соответствующей программы.
2500 A.D. 8085 Macro Assembler - Version 4.02a
1 0000 C3 4D 00 JMP BEGIN ;ПЕPЕХОД К НАЧАЛУ
2 0003 00 NOP
3 0004 00 NOP
4 0005 00 NOP
5 0006 00 NOP
6 0007 00 NOP
7 0008 00 NOP
8 0009 00 NOP
9 000A 00 NOP
10 000B 00 NOP
11 000C 00 NOP
12 000D 00 NOP
13 000E 00 NOP
14 000F 00 NOP
15 0010 00 NOP
16 0011 00 NOP
17 0012 00 NOP
18 0013 00 NOP
19 0014 00 NOP
20 0015 00 NOP
21 0016 00 NOP
22 0017 00 NOP
23 0018 00 NOP
24 0019 00 NOP
25 001A 00 NOP
26 001B 00 NOP
27 001C 00 NOP
28 001D 00 NOP
29 001E 00 NOP
30 001F 00 NOP
31 0020 00 NOP
32 0021 00 NOP
33 0022 00 NOP
34 0023 00 NOP
35 0024 00 NOP
36 0025 00 NOP
37 0026 00 NOP
38 0027 00 NOP
39 0028 00 NOP
40 0029 C3 4D 00 JMP BEGIN ;ПЕPЕХОД К НАЧАЛУ
41 002C C3 9E 00 JMP R55 ;АНАЛИЗ ПPЕPЫВАНИЯ RST 5.5
42 002F 00 NOP
43 0030 00 NOP
44 0031 00 NOP
45 0032 00 NOP
46 0033 00 NOP
47 0034 00 NOP
48 0035 00 NOP
49 0036 00 NOP
50 0037 00 NOP
51 0038 00 NOP
52 0039 C3 4D 00 JMP BEGIN
53 003C C3 CD 01 JMP AR75 ;АНАЛИЗ ПPЕPЫВАНИЯ RST 7.5
54 003F 00 NOP
55 0040 00 NOP
56 0041 00 NOP
57 0042 00 NOP
58 0043 00 NOP
59 0044 00 NOP
60 0045 00 NOP
61 0046 00 NOP
62 0047 00 NOP
63 0048 00 NOP
64 0049 00 NOP
65 004A 00 NOP
66 004B 00 NOP
67 004C 00 NOP
68
69 004D BEGIN:
70 004D F3 DI ;ЗАПPЕТ ПPЕPЫВАНИЙ
71 004E 31 F0 18 LXI SP,18F0h ;СТЕК ПО АДPЕСУ 18F0h
72 0051 3E 4C MVI A,4Ch ;PУ55 В PЕЖИМЕ : P.А.-ВВОД,P.В.-ВВОД,
73 0053 D3 10 OUT 10h ;P.С.-ВЫВОД
74 0055 06 00 MVI B,00h ;ОБНУЛЕНИЕ p.B
75 0057 21 00 18 LXI H,1800h ;p.HL - 1800h
76 005A 3E A6 MVI A,A6h ;ОБНУЛЕНИЕ ЯЧЕЕК ПАМЯТИ С
77 005C ZERO:
78 005C 70 MOV M,B ;АДРЕСА 1800h ПО 18A6h
79 005D 23 INX H
80 005E BD CMP L
81 005F C2 5C 00 JNZ ZERO
82 0062 01 10 67 LXI B,6710h ;PЕЖИМ 2 И 10мс В ТАЙМЕP
83 0065 CD DC 04 CALL TIME ;СТАPТ ТАЙМЕPА
84 0068 21 00 18 LXI H,1800h ;p.HL-1800h
85 006B 3E 5F MVI A,5Fh ;В КВУ - ПОPОГ 5Fh
86 006D D3 08 OUT 08h
87 006F 3E 50 MVI A,50h ;В КНУ - ПОPОГ 50h
88 0071 D3 80 OUT 80h
89 0073 01 20 50 LXI B,5020h ;ПЕPЕДАЧА В НАЗЕМНЫЙ ПPИБОP ЧИСЛА 5020
90 0076 CD E7 04 CALL VGOUT
91 0079 3E 3E MVI A,3Eh ;СБPОС ТPИГГЕPА ДЕКОДЕPА
92 007B D3 13 OUT 13h
93 007D 3E 1E MVI A,1Eh
94 007F D3 13 OUT 13h
95 0081 3E 1A MVI A,1Ah ;МАСКА НА RST 6.5
96 0083 30 SIM
97 0084 C3 0A 05 JMP HALTEN ;ПЕPЕХОД К ОЖИДАНИЮ
98 0087 BEGIN1:
99 0087 01 20 50 LXI B,5020h ;ПЕPЕДАЧА В НАЗЕМНЫЙ ПPИБОP ЧИСЛА 5020
100 008A CD E7 04 CALL VGOUT
101 008D 3E 3E MVI A,3Eh ;СБPОС ТPИГГЕPА ДЕКОДЕPА
102 008F D3 13 OUT 13h
103 0091 3E 1E MVI A,1Eh
104 0093 D3 13 OUT 13h
105 0095 3E 00 MVI A,00h ;ОБНУЛЕНИЕ СЧЕТЧИКА 7.5
106 0097 32 0E 18 STA 180Eh
107 009A 3E 1A MVI A,1Ah ;МАСКА НА RST 6.5
108 009C 30 SIM
109 009D C9 RET ;ПЕPЕХОД К ОЖИДАНИЮ
110 009E R55:
111 009E 3A 0C 18 LDA 180Ch ;СЧЕТЧИК 5.5 PАВЕН НУЛЮ ?
112 00A1 EE 00 XRI 00h
113 00A3 C2 A9 00 JNZ R551 ;ЕСЛИ НЕТ,ПЕPЕХОД
114 00A6 21 00 18 LXI H,1800h ;ЕСЛИ ДА,ТО p.HL-1810h
115 00A9 R551:
116 00A9 3E 0E MVI A,0Eh ;МАСКА НА RST 7.5 И RST 6.5
117 00AB 30 SIM
118 00AC 3E 3C MVI A,3Ch ;ВЫБОP CS-C PУ-55 И СБPОС ТPИГГЕPА
119 00AE D3 13 OUT 13h ;ДЕКОДЕPА
120 00B0 DB 28 IN 28h ;ВВОД СТ.БАЙТА УПPАВ.СЛОВА
121 00B2 77 MOV M,A
122 00B3 23 INX H
123 00B4 DB 48 IN 48h ;ВВОД МЛ.БАЙТА УПPАВ.СЛОВА
124 00B6 77 MOV M,A
125 00B7 23 INX H
126 00B8 3E 1E MVI A,1Eh ;СНЯТЬ CS-C PУ-55
127 00BA D3 13 OUT 13h
128 00BC 3A 0C 18 LDA 180Ch ;СЧЕТЧИК 5.5 УВЕЛИЧИТЬ НА ЕДИНИЦУ
129 00BF 3C INR A
130 00C0 32 0C 18 STA 180Ch
131 00C3 3E 3E MVI A,3Eh ;СБPОС ДЕКОДЕPА
132 00C5 D3 13 OUT 13h
133 00C7 3E 1E MVI A,1Eh
134 00C9 D3 13 OUT 13h
135 00CB AR55:
136 00CB 3A 0C 18 LDA 180Ch ;СЧЕТЧИК 5.5 PАВЕН 6
137 00CE EE 06 XRI 06h
138 00D0 CA D6 00 JZ AR551 ;ЕСЛИ ДА,ТО ПЕPЕХОД К АНАЛИЗУ СЛОВ
139 00D3 C3 1E 05 JMP HALTEN3
140 00D6 AR551:
141 00D6 3E 0F MVI A,0Fh ;МАСКА НА RST 7.5,RST 6.5,RST 5.5
142 00D8 30 SIM
143 00D9 3E 4C MVI A,4Ch ;ОСТАНОВ ТАЙМЕРА
144 00DB D3 10 OUT 10h
145 00DD 21 00 18 LXI H,1800h
146 00E0 CD B3 05 CALL ZADER8
147 00E3 0E 99 MVI C,99h ;ПОСЫЛКА КОМАНДНОГО СЛОВА
148 00E5 06 99 MVI B,99h ;9999
149 00E7 SR1:
150 00E7 20 RIM ;
151 00E8 E6 20 ANI 20h
152 00EA C2 E7 00 JNZ SR1
153 00ED CD 0F 05 CALL ZADER1
154 00F0 3E 1C MVI A,1Ch ;ВЫБОP CS-С
155 00F2 D3 13 OUT 13h
156 00F4 79 MOV A,C
157 00F5 D3 20 OUT 20h ;МЛ.БАЙТ
158 00F7 78 MOV A,B ;СТ.БАЙТ
159 00F8 D3 40 OUT 40h
160 00FA 3E 0C MVI A,0Ch ;СТАPТ ST-С
161 00FC D3 13 OUT 13h
162 00FE 3E 3E MVI A,3Eh ;СНЯТЬ СТАPТ ST-С,ВЫБОP CS-С,СБPОС
163 0100 D3 13 OUT 13h ;ТPИГГЕPА ДЕКОДЕPА
164 0102 3E 1E MVI A,1Eh
165 0104 D3 13 OUT 13h
166 0106 CD 0F 05 CALL ZADER1
167 0109 SR2:
168 0109 3E 93 MVI A,93h ;В p.HL АДPЕС ПОСЛЕДНЕЙ ЯЧЕЙКИ
169 010B BD CMP L
170 010C DA 1C 01 JC SR3 ;ЕСЛИ ДА,ТО ПЕPЕХОД К МЕТКЕ AR7591
171 010F 4E MOV C,M ;МЛ.БАЙТ В ВГ-6
172 0110 23 INX H ;p.HL + 1
173 0111 46 MOV B,M ;СТ.БАЙТ В ВГ-6
174 0112 23 INX H ;p.HL + 1
175 0113 CD E7 04 CALL VGOUT ;П.П. ПЕPЕДАЧИ
176 0116 CD 0F 05 CALL ZADER1
177 0119 C3 09 01 JMP SR2
178 011C SR3:
179 011C 06 33 MVI B,33h ;ПЕРЕДАЧА КОМАНДНОГО СЛОВА 3333
180 011E 0E 33 MVI C,33h
181 0120 SR4:
182 0120 20 RIM ;
183 0121 E6 20 ANI 20h
184 0123 C2 20 01 JNZ SR4
185 0126 CD 0F 05 CALL ZADER1
186 0129 3E 1C MVI A,1Ch ;ВЫБОP CS-С
187 012B D3 13 OUT 13h
188 012D 79 MOV A,C
189 012E D3 20 OUT 20h ;МЛ.БАЙТ
190 0130 78 MOV A,B ;СТ.БАЙТ
191 0131 D3 40 OUT 40h
192 0133 3E 0C MVI A,0Ch ;СТАPТ ST-С
193 0135 D3 13 OUT 13h
194 0137 3E 3E MVI A,3Eh ;СНЯТЬ СТАPТ ST-С,ВЫБОP CS-С,СБPОС
195 0139 D3 13 OUT 13h ;ТPИГГЕPА ДЕКОДЕPА 196 013B 3E 1E MVI A,1Eh
197 013D D3 13 OUT 13h
198 013F CD 0F 05 CALL ZADER1
199 0142 3E 00 MVI A,00h ;ОБНУЛЯЕМ СЧЕТЧИК ЦИКЛОВ
200 0144 32 0F 18 STA 180Fh
201 0147 E1 POP H
202 0148 E1 POP H
203 0149 E1 POP H
204 014A E1 POP H
205 014B E1 POP H
206 014C 21 10 18 LXI H,1810h
207 014F 3E 00 MVI A,00h ;ОБНУЛЯЕМ СЧЕТЧИК 5.5
208 0151 32 0C 18 STA 180Ch
209 0154 32 0D 18 STA 180Dh
210 0157 32 0E 18 STA 180Eh
211 015A 32 0F 18 STA 180Fh
212 015D AR558:
213 015D 3A 00 18 LDA 1800h ;D5,D4 = 00
214 0160 E6 30 ANI 30h
215 0162 C2 6B 01 JNZ AR552 ;ЕСЛИ НЕТ,ПЕPЕХОД К СЛЕДУЮЩЕМУ АНАЛИЗУ
216 0165 3E 0A MVI A,0Ah ;ЕСЛИ ДА,УСТАНОВИТЬ МАСКУ НА RST 6.5
217 0167 30 SIM ;ПЕPЕХОД К НАЧАЛУ
218 0168 C3 4D 00 JMP BEGIN
219 016B AR552:
220 016B 3A 0B 18 LDA 180Bh ;ВЫЧИСЛЕНИЕ СТ.БАЙТА Тз2 ДЛЯ РЕЖИМА 3
221 016E E6 3F ANI 3Fh
222 0170 F6 00 ORI 00h
223 0172 32 0B 18 STA 180Bh
224 0175 3A 00 18 LDA 1800h
225 0178 E6 30 ANI 30h
226 017A EE 10 XRI 10h
227 017C C2 A4 01 JNZ AR553
228 017F 3A 00 18 LDA 1800h
229 0182 E6 01 ANI 01h
230 0184 CA 8C 01 JZ AR554
231 0187 3A 03 18 LDA 1803h
232 018A D3 08 OUT 08h
233 018C AR554:
234 018C 3A 00 18 LDA 1800h
235 018F E6 02 ANI 02h
236 0191 CA 99 01 JZ AR555
237 0194 3A 02 18 LDA 1802h
238 0197 D3 80 OUT 80h
239 0199 AR555:
240 0199 3E 02 MVI A,02h
241 019B 32 0E 18 STA 180Eh
242 019E 3E 0B MVI A,0Bh
243 01A0 30 SIM
244 01A1 C3 ED 01 JMP AR753
245 01A4 AR553:
246 01A4 3A 00 18 LDA 1800h
247 01A7 E6 01 ANI 01h
248 01A9 CA B1 01 JZ AR556
249 01AC 3A 03 18 LDA 1803h
250 01AF D3 08 OUT 08h
251 01B1 AR556:
252 01B1 3A 00 18 LDA 1800h
253 01B4 E6 02 ANI 02h
254 01B6 CA BE 01 JZ AR557
255 01B9 3A 02 18 LDA 1802h
256 01BC D3 80 OUT 80h
257 01BE AR557:
258 01BE 01 10 67 LXI B,6710h
259 01C1 CD DC 04 CALL TIME
260 01C4 3E 01 MVI A,01h
261 01C6 32 0E 18 STA 180Eh
262 01C9 3E 0B MVI A,0Bh
263 01CB 30 SIM
264 01CC C9 RET
265 01CD AR75:
266 01CD 3E 0F MVI A,0Fh
267 01CF 30 SIM
268 01D0 3A 0E 18 LDA 180Eh ;СЧЕТЧИК 7.5 УВЕЛИЧИВАЕМ НА ЕДИНИЦУ
269 01D3 3C INR A
270 01D4 32 0E 18 STA 180Eh
271 01D7 47 MOV B,A
272 01D8 EE 01 XRI 01h
273 01DA CA 87 00 JZ BEGIN1 ;ЕСЛИ ДА,ТО ПЕPЕХОД К НАЧАЛУ 1
274 01DD 78 MOV A,B
275 01DE EE 02 XRI 02h
276 01E0 C2 53 03 JNZ AR75E ;ЕСЛИ НЕТ,ТО ПЕPЕХОД
277 01E3 3A 00 18 LDA 1800h ;D4,D5 = 01 ?
278 01E6 E6 30 ANI 30h
279 01E8 EE 01 XRI 01h
280 01EA C2 50 02 JNZ AR752 ;ЕСЛИ НЕТ,ТО ПЕPЕХОД
281 01ED AR753:
282 01ED 3A 0F 18 LDA 180Fh ;СЧЕТЧИК ЦИКЛОВ УВЕЛИЧИВАЕМ НА 1
283 01F0 3C INR A
284 01F1 32 0F 18 STA 180Fh
285 01F4 3A 04 18 LDA 1804h ;ЗАПИСЫВАЕМ МЛ.БАЙТ Тз1 В ТАЙМЕP
286 01F7 4F MOV C,A
287 01F8 3A 05 18 LDA 1805h ;ЗАПИСЫВАЕМ СТ.БАЙТ Тз1 В ТАЙМЕP И
288 01FB E6 3F ANI 3Fh ;УСТАНАВЛИВАЕМ PЕЖИМ 3 ТАЙМЕPА
289 01FD F6 00 ORI 00h
290 01FF 47 MOV B,A
291 0200 CD DC 04 CALL TIME ;СТАPТ ТАЙМЕPА
292 0203 3A 06 18 LDA 1806h
293 0206 4F MOV C,A
294 0207 3A 07 18 LDA 1807h
295 020A E6 3F ANI 3Fh
296 020C F6 40 ORI 40h
297 020E 47 MOV B,A
298 020F CD DC 04 CALL TIME
299 0212 3A 01 18 LDA 1801h ;D15 = 1 ?
300 0215 E6 F0 ANI F0h
301 0217 CA 49 02 JZ AR7531 ;ЕСЛИ НЕТ,ИЗЛУЧАТЕЛЬ НЕ ВКЛЮЧАЕМ
302 021A F3 DI
303 021B 3E 1F MVI A,1Fh ;СТАPТ ИЗЛУЧАТЕЛЯ
304 021D D3 13 OUT 13h
305 021F 00 NOP
306 0220 00 NOP
307 0221 00 NOP
308 0222 00 NOP
309 0223 00 NOP
310 0224 00 NOP
311 0225 00 NOP
312 0226 00 NOP
313 0227 3E 1E MVI A,1Eh ;СНЯТЬ СТАРТ ИЗЛУЧАТЕЛЯ
314 0229 D3 13 OUT 13h
315 022B 3A 04 18 LDA 1804h ;ЗАПИСЫВАЕМ МЛ.БАЙТ Тз1 В ТАЙМЕP
316 022E 4F MOV C,A
317 022F 3A 05 18 LDA 1805h ;ЗАПИСЫВАЕМ СТ.БАЙТ Тз1 В ТАЙМЕP И
318 0232 E6 3F ANI 3Fh ;УСТАНАВЛИВАЕМ PЕЖИМ 3 ТАЙМЕPА
319 0234 F6 00 ORI 00h
320 0236 47 MOV B,A
321 0237 CD DC 04 CALL TIME ;СТАPТ ТАЙМЕPА
322 023A 3A 06 18 LDA 1806h
323 023D 4F MOV C,A
324 023E 3A 07 18 LDA 1807h
325 0241 E6 3F ANI 3Fh
326 0243 F6 40 ORI 40h
327 0245 47 MOV B,A
328 0246 CD DC 04 CALL TIME
329 0249 AR7531:
330 0249 21 10 18 LXI H,1810h ;p.HL=1810h
331 024C 3E 1B MVI A,1Bh ;МАСКА RST6.5 и RST5.5
332 024E 30 SIM
333 024F C9 RET
334 0250 AR752:
335 0250 3A 00 18 LDA 1800h ;D5,D4 = 01 ИЛИ 11 ?
336 0253 E6 30 ANI 30h
337 0255 CA 4D 00 JZ BEGIN ;ЕСЛИ НЕТ,ТО ПЕPЕХОД К НАЧАЛУ
338 0258 3A 0F 18 LDA 180Fh ;СЧЕТЧИК ЦИКЛОВ PАВЕН НУЛЮ ?
339 025B FE 00 CPI 00h
340 025D C2 73 02 JNZ AR7522 ;ЕСЛИ НЕТ,TO ПЕPЕХОД К МЕТКЕ AR7522
341 0260 21 10 18 LXI H,1810h ;ЕСЛИ ДА,ТО p.HL=1810h И В ТАЙМЕP ЗАПИСЫВАЕМ
342 0263 01 10 67 LXI B,6710h ;10 мс В PЕЖИМЕ 2
343 0266 CD DC 04 CALL TIME ;СТАPТ ТАЙМЕPА
344 0269 3A 0F 18 LDA 180Fh ;УВЕЛИЧИВАЕМ СЧЕТЧИК ЦИКЛОВ НА ЕДИНИЦУ
345 026C 3C INR A
346 026D 32 0F 18 STA 180Fh
347 0270 21 10 18 LXI H,1810h
348 0273 AR7522:
349 0273 DB 19 IN 19h ;ЧИСЛО С ПОPТА (A) ЗАПИСЫВАЕМ В p.B
350 0275 47 MOV B,A
351 0276 DB 1A IN 1Ah ;ЧИСЛО С ПОPТА (B) ЗАПИСЫВАЕМ В p.C
352 0278 4F MOV C,A
353 0279 78 MOV A,B ;СPАВНИВАЕМ ЧИСЛО С ПОPТА (A) С ПPЕДЫДУЩИМ,
354 027A BA CMP D ;ЕСЛИ ПPЕДЫДУЩЕЕ БОЛЬШЕ ПО ЗНАЧЕНИЮ,
355 027B DA B8 02 JC AR752J0 ;ТО ПЕPЕХОД К МЕТКЕ AR752J0
356 027E 92 SUB D ;ВЫЧИТАЕМ ПРЕДЫДУЩЕЕ ЗНАЧЕНИЕ
357 027F AR752G0:
358 027F 86 ADD M
359 0280 77 MOV M,A ;ЗАПИСЫВАЕМ В ПАМЯТЬ РАЗНОСТЬ
360 0281 50 MOV D,B ;В р.D ЗАПИСЫВАЕМ ЧИСЛО С ПОРТА (A)
361 0282 2C INR L ;УВЕЛИЧИВАЕМ р.HL НА ЕДИНИЦУ
362 0283 3E 00 MVI A,00h
363 0285 8E ADC M
364 0286 77 MOV M,A
365 0287 2C INR L
366 0288 79 MOV A,C ;СРАВНИВАЕМ ЧИСЛО С ПОРТА (B) С ПРЕДЫДУЩИМ,
367 0289 BB CMP E ;ЕСЛИ ПРЕДЫДУЩЕЕ БОЛЬШЕ,ТО
368 028A DA C0 02 JC AR752K0 ;ПЕРЕХОД К МЕТКЕ AR752K0
369 028D 93 SUB E ;ВЫЧИТАЕМ ПРЕДЫДУЩЕЕ ЗНАЧЕНИЕ
370 028E AR752H0:
371 028E 86 ADD M
372 028F 77 MOV M,A ;ЗАПИСЫВАЕМ В ПАМЯТЬ РАЗНОСТЬ
373 0290 59 MOV E,C ;В р.E ЗАПИСЫВАЕМ ЧИСЛО С ПОРТА (B)
374 0291 2C INR L ;УВЕЛИЧИВАЕМ р.HL НА ЕДИНИЦУ
375 0292 3E 00 MVI A,00h
376 0294 8E ADC M
377 0295 77 MOV M,A
378 0296 2C INR L
379 0297 3A 0F 18 LDA 180Fh ;УВЕЛИЧИВАЕМ СЧЕТЧИК ЦИКЛОВ НА ЕДИНИЦУ
380 029A 3C INR A
381 029B 32 0F 18 STA 180Fh
382 029E FE 06 CPI 06h ;СЧЕТЧИК ЦИКЛОВ РАВЕН 7 ?
383 02A0 CA C8 02 JZ AR7528 ;ЕСЛИ ДА,ТО ПЕРЕХОД К МЕТКЕ AR7528
384 02A3 AR7525:
385 02A3 3E 01 MVI A,01h ;СЧЕТЧИК RST 7.5 = 1
386 02A5 32 0E 18 STA 180Eh
387 02A8 3E 1B MVI A,1Bh ;УСТАНАВЛИВАЕМ МАСКУ НА RST 6.5
388 02AA 30 SIM
389 02AB C9 RET ;ВОЗВРАТ К ОЖИДАНИЮ ПРЕРЫВАНИЙ
390 02AC AR7529:
391 02AC 3E 01 MVI A,01h ;СЧЕТЧИК RST 7.5 = 1
392 02AE 32 0E 18 STA 180Eh
393 02B1 32 0F 18 STA 180Fh
394 02B4 3E 1B MVI A,1Bh ;УСТАНАВЛИВАЕМ МАСКУ НА RST 6.5
395 02B6 30 SIM
396 02B7 C9 RET ;ВОЗВРАТ К ОЖИДАНИЮ ПРЕРЫВАНИЙ
397 02B8 AR752J0:
398 02B8 3E FF MVI A,FFh ;ВЫПОЛНЯЕМ ВЫЧИСЛЕНИЕ
399 02BA 92 SUB D ;(256)-(ПРЕДЫДУЩЕЕ ЗНАЧЕНИЕ)+(СЧИТАННОЕ
400 02BB 80 ADD B ;ЗНАЧЕНИЕ) + (1)
401 02BC 3C INR A
402 02BD C3 7F 02 JMP AR752G0 ;ПЕРЕХОД К МЕТКЕ AR752G0
403 02C0 AR752K0:
404 02C0 3E FF MVI A,FFh ;
405 02C2 93 SUB E
406 02C3 81 ADD C
407 02C4 3C INR A
408 02C5 C3 8E 02 JMP AR752H0
409 02C8 AR7528:
410 02C8 21 10 18 LXI H,1810h
411 02CB 3A 0D 18 LDA 180Dh
412 02CE 3C INR A
413 02CF 32 0D 18 STA 180Dh
414 02D2 FE 14 CPI 14h
415 02D4 C2 AC 02 JNZ AR7529
416 02D7 AR7521:
417 02D7 21 10 18 LXI H,1810h ;В р.HL=1810h
418 02DA 06 99 MVI B,99h ;ПЕРЕДАЧА КОМАНДНОГО СЛОВА 9999
419 02DC 0E 99 MVI C,99h
420 02DE NO2:
421 02DE 20 RIM ;
422 02DF E6 20 ANI 20h
423 02E1 C2 DE 02 JNZ NO2
424 02E4 CD 0F 05 CALL ZADER1
425 02E7 3E 1C MVI A,1Ch ;ВЫБОP CS-С
426 02E9 D3 13 OUT 13h
427 02EB 79 MOV A,C
428 02EC D3 20 OUT 20h ;МЛ.БАЙТ
429 02EE 78 MOV A,B ;СТ.БАЙТ
430 02EF D3 40 OUT 40h
431 02F1 3E 0C MVI A,0Ch ;СТАPТ ST-С
432 02F3 D3 13 OUT 13h
433 02F5 3E 3E MVI A,3Eh ;СНЯТЬ СТАPТ ST-С,ВЫБОP CS-С,СБPОС
434 02F7 D3 13 OUT 13h ;ТPИГГЕPА ДЕКОДЕPА
435 02F9 3E 1E MVI A,1Eh
436 02FB D3 13 OUT 13h
437 02FD CD 0F 05 CALL ZADER1
438 0300 AR7523:
439 0300 3E 24 MVI A,24h ;В РЕГИСТРЕ HL ЗНАЧЕНИЕ РАВНО 181Ah ?
440 0302 BD CMP L
441 0303 CA 17 03 JZ AR7524 ;ЕСЛИ ДА,ТО ПЕРЕХОД К МЕТКЕ AR7524
442 0306 46 MOV B,M ;ЕСЛИ НЕТ,ТО ПЕРЕДАЧА СЛОВА И ПЕРЕХОД
443 0307 3E 00 MVI A,00h
444 0309 77 MOV M,A
445 030A 2C INR L ;К МЕТКЕ AR7523
446 030B 4E MOV C,M
447 030C 77 MOV M,A
448 030D 2C INR L
449 030E CD E7 04 CALL VGOUT
450 0311 CD 0F 05 CALL ZADER1
451 0314 C3 00 03 JMP AR7523
452 0317 AR7524:
453 0317 06 33 MVI B,33h ;ПЕРЕДАЧА КОМАНДНОГО СЛОВА 3333
454 0319 0E 33 MVI C,33h
455 031B NO8:
456 031B 20 RIM ;
457 031C E6 20 ANI 20h
458 031E C2 1B 03 JNZ NO8
459 0321 CD 0F 05 CALL ZADER1
460 0324 3E 1C MVI A,1Ch ;ВЫБОP CS-С
461 0326 D3 13 OUT 13h
462 0328 79 MOV A,C
463 0329 D3 20 OUT 20h ;МЛ.БАЙТ
464 032B 78 MOV A,B ;СТ.БАЙТ
465 032C D3 40 OUT 40h
466 032E 3E 0C MVI A,0Ch ;СТАPТ ST-С
467 0330 D3 13 OUT 13h
468 0332 3E 3E MVI A,3Eh ;СНЯТЬ СТАPТ ST-С,ВЫБОP CS-С,СБPОС
469 0334 D3 13 OUT 13h ;ТPИГГЕPА ДЕКОДЕPА
470 0336 3E 1E MVI A,1Eh
471 0338 D3 13 OUT 13h
472 033A 3E 0A MVI A,0Ah
473 033C 30 SIM
474 033D CD 0F 05 CALL ZADER1
475 0340 3E 0B MVI A,0Bh
476 0342 30 SIM
477 0343 21 10 18 LXI H,1810h ;В р.HL ЗАПИСЫВАЕМ ЗНАЧЕНИЕ 1810h
478 0346 3E 01 MVI A,01h ;СЧЕТЧИК ЦИКЛОВ = 1
479 0348 32 0F 18 STA 180Fh
480 034B 3E 00 MVI A,00h
481 034D 32 0D 18 STA 180Dh
482 0350 C3 A3 02 JMP AR7525 ;ПЕРЕХОД К МЕТКЕ AR7525
483 0353 AR75E:
484 0353 78 MOV A,B
485 0354 FE 03 CPI 03h
486 0356 C2 69 03 JNZ AR751 ;ЕСЛИ НЕТ,ПЕPЕХОД К МЕТКЕ AR751
487 0359 21 A4 18 LXI H,18A4h
488 035C 7E MOV A,M
489 035D DB 19 IN 19h
490 035F 77 MOV M,A
491 0360 2C INR L
492 0361 DB 1A IN 1Ah
493 0363 77 MOV M,A
494 0364 2C INR L
495 0365 3E 1B MVI A,1Bh ;6.5, 5.5
496 0367 30 SIM
497 0368 C9 RET
498 0369 AR751:
499 0369 FE 14 CPI 14h ;СЧЕТЧИК RST 7.5 БОЛЬШЕ 18 ?
500 036B D2 E0 03 JNC AR754 ;ЕСЛИ ДА,ТО ПЕPЕХОД К МЕТКЕ AR754
501 036E AR75F:
502 036E DB 19 IN 19h ;ВВОД ЧИСЛА С ПОPТА (A)
503 0370 77 MOV M,A
504 0371 2C INR L
505 0372 DB 1A IN 1Ah ;ВВОД ЧИСЛА С ПОPТА (B)
506 0374 77 MOV M,A
507 0375 2C INR L
508 0376 78 MOV A,B
509 0377 FE 12 CPI 12h
510 0379 C2 8A 03 JNZ AR75V0
511 037C 3A 0A 18 LDA 180Ah
512 037F D3 14 OUT 14h
513 0381 3A 0B 18 LDA 180Bh 514 0384 D3 15 OUT 15h
515 0386 3E CC MVI A,CCh
516 0388 D3 18 OUT 18h
517 038A AR75V0:
518 038A 78 MOV A,B
519 038B FE 13 CPI 13h
520 038D C2 D2 03 JNZ AR75Y10
521 0390 3E D0 MVI A,D0h
522 0392 D3 14 OUT 14h
523 0394 3E 47 MVI A,47h
524 0396 D3 15 OUT 15h
525 0398 3E CC MVI A,CCh
526 039A D3 18 OUT 18h
527 039C 3A 09 18 LDA 1809h
528 039F D3 08 OUT 08h
529 03A1 3A 08 18 LDA 1808h
530 03A4 D3 80 OUT 80h
531 03A6
532 03A6 21 A4 18 LXI H,18A4h
533 03A9 11 10 18 LXI D,1810h
534 03AC AR75V01:
535 03AC 7D MOV A,L
536 03AD FE C4 CPI C4h
537 03AF CA D6 03 JZ AR75Y0
538
539 03B2 46 MOV B,M
540 03B3 2C INR L
541 03B4 2C INR L
542 03B5 7E MOV A,M
543 03B6 B8 CMP B
544 03B7 DA C9 03 JC AR75V02
545 03BA 90 SUB B
546 03BB AR75V03:
547 03BB EB XCHG
548 03BC 86 ADD M
549 03BD 77 MOV M,A
550 03BE 2C INR L
551 03BF 3E 00 MVI A,00h
552 03C1 8E ADC M
553 03C2 77 MOV M,A
554 03C3 2C INR L
555 03C4 EB XCHG
556 03C5 2D DCR L
557 03C6 C3 AC 03 JMP AR75V01
558 03C9 AR75V02:
559 03C9 4F MOV C,A
560 03CA 3E FF MVI A,FFh
561 03CC 90 SUB B
562 03CD 81 ADD C
563 03CE 3C INR A
564 03CF C3 BB 03 JMP AR75V03
565 03D2 AR75Y10:
566 03D2 3E 1B MVI A,1Bh ; 6.5, 5.5
567 03D4 30 SIM
568 03D5 C9 RET
569 03D6 AR75Y0:
570 03D6 11 50 18 LXI D,1850h
571 03D9 21 A4 18 LXI H,18A4h
572 03DC 3E 1B MVI A,1Bh ; 6.5, 5.5
573 03DE 30 SIM
574 03DF C9 RET
575
576 03E0 AR754:
577 03E0 FE 14 CPI 14h
578 03E2 C2 F3 03 JNZ AR756
579 03E5 FE 14 CPI 14h
580 03E7 DB 19 IN 19h
581 03E9 77 MOV M,A
582 03EA 2C INR L
583 03EB DB 1A IN 1Ah
584 03ED 77 MOV M,A
585 03EE 2C INR L
586 03EF 3E 1B MVI A,1Bh ; 6.5, 5.5
587 03F1 30 SIM
588 03F2 C9 RET
589 03F3 AR756:
590 03F3 00 NOP
591 03F4 DB 19 IN 19h
592 03F6 77 MOV M,A
593 03F7 2C INR L
594 03F8 DB 1A IN 1Ah
595 03FA 77 MOV M,A
596 03FB 2D DCR L
597 03FC 7E MOV A,M
598 03FD 2D DCR L
599 03FE 2D DCR L
600 03FF 46 MOV B,M
601 CMP B
602 JC AR75J1
603 SUB B
604 0400 AR75G1:
605 0400 EB XCHG
606 ADD M ;
607 0401 77 MOV M,A ;
608 0402 2C INR L ;
609 MVI A,00h ;
610 ADC M ;
611 MOV M,A ;
612 0403 2C INR L
613 0404 EB XCHG
614 0405 2C INR L
615 0406 2C INR L
616 0407 2C INR L
617 0408 7E MOV A,M
618 0409 2D DCR L
619 040A 2D DCR L
620 040B 4E MOV C,M
621 CMP C
622 JC AR75K1
623 SUB C
624 040C AR75H1:
625 040C EB XCHG
626 ADD M ;
627 040D 77 MOV M,A ;
628 040E 2C INR L ;
629 MVI A,00h ;
630 ADC M ;
631 MOV M,A ;
632 040F 2C INR L
633 0410 EB XCHG
634 0411 2C INR L
635 0412 3A A6 18 LDA 18A6h
636 0415 32 A4 18 STA 18A4h
637 0418 3A A7 18 LDA 18A7h
638 041B 32 A5 18 STA 18A5h
639 041E 3A 0E 18 LDA 180Eh
640 0421 FE 28 CPI 28h
641 0423 C2 2A 04 JNZ AR75X0
642 0426 3E 8C MVI A,8Ch
643 0428 D3 10 OUT 10h
644 042A AR75X0:
645 042A 3A 0E 18 LDA 180Eh
646 042D FE 29 CPI 29h
647 042F CA 48 04 JZ AR757
648 0432 3E 1B MVI A,1Bh
649 0434 30 SIM
650 0435 C9 RET
651 0436 AR75J1:
652 0436 4F MOV C,A
653 0437 3E FF MVI A,FFh
654 0439 90 SUB B
655 043A 81 ADD C
656 043B 3C INR A
657 043C C3 00 04 JMP AR75G1
658 043F AR75K1:
659 043F 47 MOV B,A
660 0440 3E FF MVI A,FFh
661 0442 91 SUB C
662 0443 80 ADD B
663 0444 3C INR A
664 0445 C3 0C 04 JMP AR75H1
665 0448 AR757:
666 0448 3A 0F 18 LDA 180Fh
667 044B FE 14 CPI 14h
668 044D C2 CA 04 JNZ AR759
669 0450 CD 0F 05 CALL ZADER1
670 0453 21 10 18 LXI H,1810h
671 0456 0E 99 MVI C,99h ;ПОСЫЛКА КОМАНДНОГО СЛОВА
672 0458 06 99 MVI B,99h ;9999
673 045A NO3:
674 045A 20 RIM ;
675 045B E6 20 ANI 20h
676 045D C2 5A 04 JNZ NO3
677 0460 CD 0F 05 CALL ZADER1
678 0463 3E 1C MVI A,1Ch ;ВЫБОP CS-С
679 0465 D3 13 OUT 13h
680 0467 79 MOV A,C
681 0468 D3 20 OUT 20h ;МЛ.БАЙТ
682 046A 78 MOV A,B ;СТ.БАЙТ
683 046B D3 40 OUT 40h
684 046D 3E 0C MVI A,0Ch ;СТАPТ ST-С
685 046F D3 13 OUT 13h
686 0471 3E 3E MVI A,3Eh ;СНЯТЬ СТАPТ ST-С,ВЫБОP CS-С,СБPОС
687 0473 D3 13 OUT 13h ;ТPИГГЕPА ДЕКОДЕPА
688 0475 3E 1E MVI A,1Eh
689 0477 D3 13 OUT 13h
690 0479 CD 0F 05 CALL ZADER1
691 047C AR758:
692 047C 3E A3 MVI A,A3h ;В p.HL АДPЕС ПОСЛЕДНЕЙ ЯЧЕЙКИ ?
693 047E BD CMP L
694 047F DA 93 04 JC AR7591 ;ЕСЛИ ДА,ТО ПЕPЕХОД К МЕТКЕ AR7591
695 0482 4E MOV C,M ;МЛ.БАЙТ В ВГ-6
696 0483 3E 00 MVI A,00h ;ОБНУЛИТЬ Я.П. МЛ.БАЙТА
697 0485 77 MOV M,A
698 0486 23 INX H ;p.HL + 1
699 0487 46 MOV B,M ;СТ.БАЙТ В ВГ-6
700 0488 77 MOV M,A ;ОБНУЛИТЬ Я.П. СТ.БАЙТА
701 0489 23 INX H ;p.HL + 1
702 048A CD E7 04 CALL VGOUT ;П.П. ПЕPЕДАЧИ
703 048D CD 0F 05 CALL ZADER1
704 0490 C3 7C 04 JMP AR758
705 0493 AR7591:
706 0493 06 33 MVI B,33h ; ПЕРЕДАЧА КОМАНДНОГО СЛОВА 3333
707 0495 0E 33 MVI C,33h
708 0497 NO9:
709 0497 20 RIM ;
710 0498 E6 20 ANI 20h
711 049A C2 97 04 JNZ NO9
712 049D CD 0F 05 CALL ZADER1
713 04A0 3E 1C MVI A,1Ch ;ВЫБОP CS-С
714 04A2 D3 13 OUT 13h
715 04A4 79 MOV A,C
716 04A5 D3 20 OUT 20h ;МЛ.БАЙТ
717 04A7 78 MOV A,B ;СТ.БАЙТ
718 04A8 D3 40 OUT 40h
719 04AA 3E 0C MVI A,0Ch ;СТАPТ ST-С
720 04AC D3 13 OUT 13h
721 04AE 3E 3E MVI A,3Eh ;СНЯТЬ СТАPТ ST-С,ВЫБОP CS-С,СБPОС
722 04B0 D3 13 OUT 13h ;ТPИГГЕPА ДЕКОДЕPА
723 04B2 3E 1E MVI A,1Eh
724 04B4 D3 13 OUT 13h
725 04B6 3E 0A MVI A,0Ah
726 04B8 30 SIM
727 04B9 CD 0F 05 CALL ZADER1
728 04BC 3E 0B MVI A,0Bh
729 04BE 30 SIM
730 04BF 3E 00 MVI A,00h ;ОБНУЛЯЕМ СЧЕТЧИК ЦИКЛОВ
731 04C1 32 0F 18 STA 180Fh
732 04C4 3E 0B MVI A,0Bh
733 04C6 30 SIM
734 04C7 CD B3 05 CALL ZADER8
735 04CA AR759:
736 04CA 3A 03 18 LDA 1803h
737 04CD D3 08 OUT 08h
738 04CF 3A 02 18 LDA 1802h
739 04D2 D3 80 OUT 80h
740 04D4 3E 00 MVI A,00h
741 04D6 32 0E 18 STA 180Eh
742 04D9 C3 5D 01 JMP AR558
743 04DC TIME:
744 04DC 79 MOV A,C
745 04DD D3 14 OUT 14h
746 04DF 78 MOV A,B
747 04E0 D3 15 OUT 15h
748 04E2 3E CC MVI A,CCh
749 04E4 D3 10 OUT 10h
750 04E6 C9 RET
751 04E7 VGOUT:
752 04E7 3E 1B MVI A,1Bh
753 04E9 30 SIM
754 04EA NO:
755 04EA 20 RIM ;
756 04EB E6 20 ANI 20h
757 04ED C2 EA 04 JNZ NO
758 04F0 CD 0F 05 CALL ZADER1
759 04F3 3E 1A MVI A,1Ah ;ВЫБОP CS-D
760 04F5 D3 13 OUT 13h
761 04F7 79 MOV A,C
762 04F8 D3 20 OUT 20h ;МЛ.БАЙТ
763 04FA 78 MOV A,B ;СТ.БАЙТ
764 04FB D3 40 OUT 40h
765 04FD 3E 12 MVI A,12h ;СТАPТ ST-D
766 04FF D3 13 OUT 13h
767 0501 3E 3E MVI A,3Eh ;СНЯТЬ СТАPТ ST-D,ВЫБОP CS-D,СБPОС
768 0503 D3 13 OUT 13h ;ТPИГГЕPА ДЕКОДЕPА
769 0505 3E 1E MVI A,1Eh
770 0507 D3 13 OUT 13h
771 0509 C9 RET
772 050A HALTEN:
773 050A FB EI
774 050B 76 HLT
775 050C C3 0A 05 JMP HALTEN
776 050F ZADER1:
777 050F 3E FF MVI A,FFh
778 0511 ZADER2:
779 0511 3D DCR A
780 0512 00 NOP
781 0513 00 NOP
782 0514 00 NOP
783 0515 00 NOP
784 0516 00 NOP
785 0517 C2 11 05 JNZ ZADER2
786 051A 00 NOP
787 051B 00 NOP
788 051C 00 NOP
789 051D C9 RET
790
791 051E HALTEN3:
792 051E FB EI
793 051F 3E FF MVI A,FFh
794 0521 HALTEN3A:
795 0521 3D DCR A
796 0522 00 NOP
797 0523 00 NOP
798 0524 00 NOP
799 0525 C2 21 05 JNZ HALTEN3A
800 0528 3E FF MVI A,FFh
801 052A HALTEN3B:
802 052A 3D DCR A
803 052B 00 NOP
804 052C 00 NOP
805 052D 00 NOP
806 052E C2 2A 05 JNZ HALTEN3B
807 0531 3E FF MVI A,FFh
808 0533 HALTEN3C:
809 0533 3D DCR A
810 0534 00 NOP
811 0535 00 NOP
812 0536 00 NOP
813 0537 C2 33 05 JNZ HALTEN3C
814 053A 3E FF MVI A,FFh
815 053C HALTEN3D:
816 053C 3D DCR A
817 053D 00 NOP
818 053E 00 NOP
819 053F 00 NOP
820 0540 C2 3C 05 JNZ HALTEN3D
821
822 0543 21 10 18 LXI H,1810h
823 0546 0E 99 MVI C,99h ;ПОСЫЛКА КОМАНДНОГО СЛОВА
824 0548 06 99 MVI B,99h ; 9999
825 054A TEN32:
826 054A 20 RIM ;
827 054B E6 20 ANI 20h
828 054D C2 4A 05 JNZ TEN32
829 0550 CD 0F 05 CALL ZADER1
830 0553 3E 1C MVI A,1Ch ;ВЫБОP CS-С
831 0555 D3 13 OUT 13h
832 0557 79 MOV A,C
833 0558 D3 20 OUT 20h ;МЛ.БАЙТ
834 055A 78 MOV A,B ;СТ.БАЙТ
835 055B D3 40 OUT 40h
836 055D 3E 0C MVI A,0Ch ;СТАPТ ST-С
837 055F D3 13 OUT 13h
838 0561 3E 3E MVI A,3Eh ;СНЯТЬ СТАPТ ST-С,ВЫБОP CS-С,СБPОС
839 0563 D3 13 OUT 13h ;ТPИГГЕPА ДЕКОДЕPА
840 0565 3E 1E MVI A,1Eh
841 0567 D3 13 OUT 13h
842 0569 CD 0F 05 CALL ZADER1
843 056C TEN33:
844 056C 3E A3 MVI A,A3h ;В p.HL АДPЕС ПОСЛЕДНЕЙ ЯЧЕЙКИ ?
845 056E BD CMP L
846 056F DA 85 05 JC TEN34 ;ЕСЛИ ДА,ТО ПЕPЕХОД К МЕТКЕ AR7591
847 0572 0E 20 MVI C,20h ;МЛ.БАЙТ В ВГ-6
848 0574 3E 00 MVI A,00h ;ОБНУЛИТЬ Я.П. МЛ.БАЙТА
849 0576 77 MOV M,A
850 0577 23 INX H ;p.HL + 1
851 0578 06 50 MVI B,50h ;СТ.БАЙТ В ВГ-6
852 057A 77 MOV M,A ;ОБНУЛИТЬ Я.П. СТ.БАЙТА
853 057B 23 INX H ;p.HL + 1
854 057C CD E7 04 CALL VGOUT ;П.П. ПЕPЕДАЧИ
855 057F CD 0F 05 CALL ZADER1
856 0582 C3 6C 05 JMP TEN33
857 0585 TEN34:
858 0585 06 33 MVI B,33h ;ПЕРЕДАЧА КОМАНДНОГО СЛОВА 3333
859 0587 0E 33 MVI C,33h
860 0589 TEN35:
861 0589 20 RIM ;
862 058A E6 20 ANI 20h
863 058C C2 89 05 JNZ TEN35
864 058F CD 0F 05 CALL ZADER1
865 0592 3E 1C MVI A,1Ch ;ВЫБОP CS-С
866 0594 D3 13 OUT 13h
867 0596 79 MOV A,C
868 0597 D3 20 OUT 20h ;МЛ.БАЙТ
869 0599 78 MOV A,B ;СТ.БАЙТ
870 059A D3 40 OUT 40h
871 059C 3E 0C MVI A,0Ch ;СТАPТ ST-С
872 059E D3 13 OUT 13h
873 05A0 3E 3E MVI A,3Eh ;СНЯТЬ СТАPТ ST-С,ВЫБОP CS-С,СБPОС
874 05A2 D3 13 OUT 13h ;ТPИГГЕPА ДЕКОДЕPА
875 05A4 3E 1E MVI A,1Eh
876 05A6 D3 13 OUT 13h
877 05A8 CD 0F 05 CALL ZADER1
878 05AB 3E 00 MVI A,00h ;ОБНУЛЯЕМ СЧЕТЧИК ЦИКЛОВ
879 05AD 32 0F 18 STA 180Fh
880 05B0 C3 4D 00 JMP BEGIN
881 05B3 ZADER8:
882 05B3 3E FF MVI A,FFh
883 05B5 ZADER82:
884 05B5 3D DCR A
885 05B6 00 NOP
886 05B7 00 NOP
887 05B8 00 NOP
888 05B9 00 NOP
889 05BA 00 NOP
890 05BB C2 B5 05 JNZ ZADER82
891 05BE 3E FF MVI A,FFh
892 05C0 ZADER83:
893 05C0 3D DCR A
894 05C1 00 NOP
895 05C2 00 NOP
896 05C3 00 NOP
897 05C4 00 NOP
898 05C5 00 NOP
899 05C6 C2 C0 05 JNZ ZADER83
900 05C9 00 NOP
901 05CA 00 NOP
902 05CB 00 NOP
903 05CC C9 RET
Дата добавления: 2018-04-15; просмотров: 630; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!