Описание прог Artist, Art Studio, Gens3-Mons3, Gens4, Hisoft C v1.1, Hisoft Pascal v1.4, Tasword2 и TLW 1969 г.

Mons-3 - монитор системного программиста.



                    4. МОНИТОР NONS3
                    ----------------

                 4.1. ЗАГРУЗКА МОНИТОРА

     МОДУЛЬ MONS3 ЯВЛЯЕТСЯ ПЕРЕМЕЩАЕМЫМ:  ВЫ  МОЖЕТЕ  ЗАГРУЗИТЬ
ЕГО ПО ЛЮБОМУ АДРЕСУ, И ЗАТЕМ СТАРТОВАТЬ ЕГО ПО ЭТОМУ АДРЕСУ.

     ЕСЛИ ВЫ ПОВТОРНО ХОТИТЕ ВОЙТИ В МОНИТОР MONS3 ИЗ BASIC, ТО
ДОЛЖНЫ ПРИ СТАРТЕ УКАЗАТЬ АДРЕС НА 29 (ДЕСЯТИЧНОЕ) БОЛЬШЕ,  ЧЕМ
АДРЕС ЗАГРУЗКИ.

   ПРИМЕР: ВАМ НАДО ЗАГРУЗИТЬ МОНИТОР ПО АДРЕСУ 9000 (49152).
           LOAD "MONS3" CODE 49152
           RANDOMIZE USR 49152

     ДЛЯ ПОВТОРНОГО ВВОДА ИЗ BASIC НАДО УКАЗАТЬ АДРЕС 49181.

     РАЗМЕР MONS3 СОСТАВЛЯЕТ 5К, НО НАДО РАССЧИТЫВАТЬ  ДЛЯ  ЗАГ-
РУЗКИ ОКОЛО 6К, ТАК КАК МОНИТОР СТРОИТ В ПАМЯТИ  СВОИ  АДРЕСНЫЕ
ТАБЛИЦЫ И СВОЙ ВНУТРЕННИЙ СТЕК. ТАК ЧТО MONS3 ДОСТАТОЧНО  АВТО-
НОМНЫЙ МОДУЛЬ.

      ПОСЛЕ ЗАГРУЗКИ ПОЯВИТСЯ СООБЩЕНИЕ:

     "* MOBS3 COPYRIGHT HISOFT 1983 *", А ЧЕРЕЗ  НЕСКОЛЬКО  СЕ-
КУНД ОНО СМЕНИТСЯ ЭКРАНОМ (СМ. ПРИЛОЖЕНИЕ D), KOTOРЫЙ ОТОБРАЖА-
ЕТ СОДЕРЖИМОЕ РЕГИСТРОВ И ФЛАГОВ Z80 ПЛЮС 24Х БАЙТОВУЮ  ОБЛАСТЬ
ПАМЯТИ, В ЦЕНТРЕ КОТОРОЙ ОТМЕЧАЕТСЯ ЗНАКАМИ "<" И ">"БАЙТ АДРЕ-
СУЕМЫЙ ТЕКУЩИМ ЗНАЧЕНИЕМ УКАЗАТЕЛЯ ПАМЯТИ  (НАЧАЛЬНОЕ  ЗНАЧЕНИЕ
АДРЕСА НОЛЬ), ВЕРХНЯЯ СТРОКА СОДЕРЖИТ  ДИСАССЕМБЛИРОВАННЫЙ  КОД
ПО АДРЕСУ УКАЗАТЕЛЯ ПАМЯТИ.

     ПРИ ВХОДЕ В MONS3ВСЕ АДРЕСА, ПО УМОЛЧАНИЮ, ОТОБРАЖАЮТСЯ  В
ШЕСТНАДЦАТИРИЧНОМ ВИДЕ, НО МОЖНО ИХ ОТОБРАЗИТЬ И  В  ДЕСЯТИЧНОМ
ФОРМАТЕ, ИСПОЛЬЗУЯ КОМАНДУ "SYMBOL SHIFT И 3", ОДНАКО  ВВОДИТСЯ
АДРЕСА ДОЛЖНЫ ТОЛЬКО В ШЕСТНАДЦАТИРИЧНОМ ФОРМАТЕ.

     КОМАНДЫ ВВОДЯТСЯ С КЛАВИАТУРЫ ПОСЛЕ УКАЗАТЕЛЯ ">". НЕКОТО-
РЫЕ КОМАНДЫ ВВОДЯТСЯ СОВМЕСТНО С "SIMBOL SHIFT". В ЭТОМ  ОПИСА-
НИИ ДАЛЕЕ ВЕЗДЕ НАЖАТИЕ КЛАВИШИ "SIMBOL  SHIFT"  БУДЕТ  ОБОЗНА-
ЧАТЬСЯ ЗНАКОМ "", НАПРИМЕР, ЗАПИСЬ "Z" ОЗНАЧАЕТ "SIMBOL  SHIFT"
И "Z" НАЖАТЫЕ ВМЕСТЕ.

     КОМАНДЫ ВЫПОЛНЯЮТСЯ НЕПОСРЕДСТВЕННО И НЕ ТРЕБУЮТ  ДОПОЛНИ-
ТЕЛЬНОГО НАЖАТИЯ КЛАВИШИ "ЕNTER", ОШИБОЧНЫЕ КОМАНДЫ ПРОСТО  ИГ-
НОРИРУЮТСЯ, ОСНОВНОЙ ЭКРАН ОБНОВЛЯЕТСЯ ПОСЛЕ КАЖДОГО ВЫПОЛНЕНИЯ
КОМАНДЫ.

     МНОГИЕ КОМАНДЫ ТРЕБУЮТ ВВОДА ШЕСТНАДЦАТИРИЧНЫХ ЧИСЕЛ,  ПРИ
ЭТОМ НАБОР ЦИФР АВТОМАТИЧЕСКИ ПРЕКРАЩАЕТСЯ ПРИ ВВОДЕ ПЕРВОГО НЕ
ШЕСТНАДЦАТИРИЧНОГО СИМВОЛА (Т.Е.КРОМЕ 0..9,А..F) ТАКИМ  ОБРАЗОМ
МОЖНО  ЗАВЕРШИТЬ  НАБОР  ЧИСЛА,НЕОБХОДИМО  ПОМНИТЬ  ЧТО  СИМВОЛ
""(ПОДЧЕРКИВАНИЕ) СЛУЖИТ ДЛЯ ОТОБРАЖЕНИЯ ПРОБЕЛА,ГДЕ ЭТО  НЕОБ-
ХОДИМО,ЕСЛИ ПРИМЕНЯТЬ ЗНАК "-"(МИНУС),ТО ЧИСЛО ЗАПИШЕТСЯ В  ПА-
МЯТЬ В ДОПОЛНИТЕЛЬНОМ ФОРМАТЕ , Т.Е.1800 ДАЕТ Е800 ,ЕСЛИ  БУДЕТ
НАБРАНО БОЛЬШЕ 4Х ЦИФР,ТО ВОЗЬМУТСЯ ТОЛЬКО СТАРШИЕ 4 ЦИФРЫ.

     ЕСЛИ ВЫ ЖЕЛАЕТЕ ВЕРНУТЬСЯ В BASIC ИЗ МОНИТОРА  MONS3  НАДО
ПРОСТО НАЖАТЬ "CAPS SHIFT" И "1".

     ВАЖНО ПОМНИТЬ ,ЧТО MONS3  ЗАПРЕЩАЕТ  (МАСКИРУЕТ)ПРЕРЫВАНИ-
Я,ЧТО НЕОБХОДИМО ДЛЯ КОРРЕКТНОГО ВЫПОЛНЕНИЯ ИМИ СВОИХ ФУНКЦИЙ,И
ИХ НЕЛЬЗЯ РАЗРЕШАТЬ В ТЕЧЕНИЕ РАБОТЫ MONS3.
              4.2.ДОСТУПНЫЕ КОМАНДЫ.

     SIMBOL SHIFT И 3 - ИЗМЕНЯЕТ ОСНОВАНИЕ СИСТЕМЫ СЧИСЛЕНИЯ  С
ШЕСТНАДЦАТИРИЧНОЙ НА ДЕСЯТИЧНУЮ И НАОБОРОТ,ПРИ ОТОБРАЖЕНИИ  АД-
РЕСОВ.

     SIMBOL SHIFT И 4 - ОТОБРАЗИТ  СТРАНИЦУ  ДИСАССЕМБЛИРОВАНИЯ
НАЧИНАЯ С АДРЕСА СОДЕРЖАЩЕГОСЯ  В  УКАЗАТЕЛЕ.ПОВТОРНОЕ  НАЖАТИЕ
"4" ВОЗВРАЩАЕТ К ОСНОВНОМУ ЭКРАНУ.НАЖАТИЕ ДРУГОЙ КЛАВИШИ ВЫДАЕТ
СЛЕДУЮЩУЮ СТРАНИЦУ.

     CAPS SHIFT И 7 - УМЕНЬШЕНИЕ УКАЗАТЕЛЯ ПАМЯТИ НА ЕДИНИЦУ.

     CAPS SHIFT И 5 - УМЕНЬШЕНИЕ УКАЗАТЕЛЯ ПАМЯТИ НА 8 .ИСПОЛЬ-
ЗУЕТСЯ ДЛЯ БЫСТРОГО ВОЗВРАТА НАЗАД.

     CAPS SHIFT И 8 - УВЕЛИЧЕНИЕ УКАЗАТЕЛЯ ПАМЯТИ НА 8.

     ","(ЗАПЯТАЯ) - ЗАМЕНЯЕТ ЗНАЧЕНИЕ УКАЗАТЕЛЯ ПАМЯТИ  ТАК,ЧТО
ОН СОДЕРЖИТ АДРЕС СОДЕРЖАЩИЙСЯ В СТЕКЕ (ОТОБРАЖЕННЫЙ В  SP).ЭТО
ИСПОЛЬЗУЕТСЯ ДЛЯ ПРОСМОТРА СОДЕРЖИМОГО ПО  АДРЕСУ  ВОЗВРАТА  ИЗ
ВЫЗЫВАЕМОЙ ПРОГРАММЫ.

     "G" - ПОИСК ОБЛАСТИ ПАМЯТИ ПО ОБРАЗЦУ,УКАЗАННОМУ В СТРОКЕ.
ПОСЛЕ СИМВОЛА ":"ВЫ ВВОДИТЕ ЗНАЧЕНИЕ БАЙТА,КОТОРЫЙ НУЖНО  НАЙТИ
И НАЖИМАЙТЕ "ENTER",ИЩЕТСЯ   ПЕРВОЕ   ВХОЖДЕНИЕ   В   УКАЗАННЫЙ
БАЙТ,НАЧИНАЯ С АДРЕСА,ЗАДАННОГО УКАЗАТЕЛЕМ ПАМЯТИ.

     НАПРИМЕР:НАДО НАЙТИ ПЕРВОЕ ВХОЖДЕНИЕ В СТРОКУ 3FFF(2  БАЙ-
ТА),НАЧИНАЯ С АДРЕСА 8000.ДЕЛАЕТЕ СЛЕДУЮЩЕЕ:

М:8000 "ENTER" - УСТАНОВИТЬ УКАЗАТЕЛЬ ПАМЯТИ НА 8000.

     G:3F "ENTER" - УСТАНОВИТЬ ЗНАЧЕНИЕ ПЕРВОГО  БАЙТА  ИСКОМОЙ
СТРОКИ.

     FF "ENTER" - УСТАНОВИТЬ  ЗНАЧЕНИЕ  ВТОРОГО  БАЙТА  ИСКОМОЙ
СТРОКИ.

       "ENTER" - ЗАВЕРШИТЬ НАБОР СТРОКИ.

     ПОСЛЕ ПОСЛЕДНЕГО "ENTER"ИЛИ ЛЮБОГО  НЕ  ШЕСТНАДЦАТИРИЧНОГО
СИМВОЛА ВЫПОЛНЯЕТСЯ КОМАНДА "G".

     "Н" - ПРЕОБРАЗОВАТЬ ДЕСЯТИЧНОЕ ЧИСЛО  В  ШЕСТНАДЦАТИРИЧНО-
Е.ДЛЯ ВОЗВРАТА В КОМАНДНЫЙ РЕЖИМ ЛЮБУЮ КЛАВИШУ.

            НАПРИМЕР:

     Н:41472 = 420 (ЗДЕСЬ ПРОБЕЛ ИСПОЛЬЗУЕТСЯ КАК ТЕРМИНАТОР)

     "I" - "РАЗУМНОЕ" КОПИРОВАНИЕ ИСПОЛЬЗУЕТСЯ  ДЛЯ  КОПИРОВАНИЯ
УЧАСТКА ПАМЯТИ В ДРУГОЕ МЕСТО ПАМЯТИ."РАЗУМНОСТЬ" ЗАКЛЮЧАЕТСЯ В
ТОМ,ЧТО КОПИРОВАНИЕ НЕ ВЫПОЛНЯЕТСЯ ,ЕСЛИ НОВЫЙ УЧАСТОК ПЕРЕКРЫ-
ВАЕТСЯ     СТАРЫМ.ПО     КОМАНДЕ     "I"ВЫВОДЯТСЯ     ПОДСКАЗКИ
"FIRST:","LAST:",НАЧАЛЬНЫЙ И КОНЕЧНЫЙ АДРЕСА КОПИРУЕМОГО  УЧАС-
ТКА, А ЗАТЕМ "ТО:" - АДРЕС ОБЛАСТИ КУДА ОСУЩЕСТВЛЯЕТСЯ  КОПИРО-
ВАНИЕ,ЕСЛИ "FIRST" БОЛЬШЕ "LAST",ТО ВЫПОЛНЕНИЕ КОМАНДЫ  ПРЕКРА-
ЩАЕТСЯ.

     "J" - ВЫПОЛНЕНИЕ ПРОГРАММЫ В МАШИННЫХ КОДАХ  С  УКАЗАННОГО
АДРЕСА ПОСЛЕ СИМВОЛА ":" ВВОДИТСЯ ШЕСТНАДЦАТИРИЧНЫЙ АДРЕС,КОТО-
РЫЙ ВВОДИТСЯ ВО ВНУТРЕННИЙ СТЕК,ЭКРАН  ОЧИЩАЕТСЯ  И  НАЧИНАЕТСЯ
ВЫПОЛНЕНИЕ КОДОВ С УКАЗАННОГО АДРЕСА.ЕСЛИ ПОСЛЕ ВЫПОЛНЕНИЯ ЭТОЙ
ПРОГРАММЫ ВЫ ХОТИТЕ ВЕРНУТЬСЯ В  MONS3,  TO  ДОЛЖНЫ  УСТАНОВИТЬ
ТОЧКУ ПРЕРЫВАНИЯ (СМ.КОМАНДУ "W"),ИЗ КОТОРОЙ БУДЕТ  ВОЗВРАТ  НА
ЭКРАН.ЭТУ ПРОГРАММУ МОЖНО  ПРЕРВАТЬ  И  РАНЬШЕ,ИСПОЛЬЗУЯ  "CAPS
SHIFT И 5" ПОМНИТЕ,ЧТО КОМАНДА "J" ИЗМЕНЯЕТ  СОДЕРЖИМОЕ  РЕГИС-
ТРОВ ПРОЦЕССОРА,ПОЭТОМУ,ЕСЛИ ВЫ  ХОТИТЕ  ИСПОЛЬЗОВАТЬ  РЕГИСТРЫ
ПРОЦЕССОРА,ТО ПОЛЬЗУЙТЕСЬ КОМАНДОЙ "SIMBOL SHIFT K".

     "SIMBOL SHIFT И К" - ПРОДОЛЖИТ ВЫПОЛНЕНИЕ КОМАНДЫ С  АДРЕ-
СА, СОДЕРЖАЩЕГОСЯ В ПРОГРАММНОМ СЧЕТЧИКЕ  (РС).ЭТА  КОМАНДА  ИС-
ПОЛЬЗУЕТСЯ СОВМЕСТНО С "W".

     НАПРИМЕР,ВЫ ВЫПОЛНЯЕТЕ ПО ШАГАМ ("Z") ПРОГРАММУ  ПРИВЕДЕН-
НУЮ НИЖЕ,И ОСТАНОВИЛИ НА АДРЕСЕ 892D  .ВАС  ИНТЕРЕСУЕТ  ВХОД  В
ПРОГРАММУ ПО АДРЕСУ 9000.НО ВАМ НАДО ПРОСМОТРЕТЬ КАК УСТАНОВЯТ-
СЯ ФЛАГИ ПОСЛЕ ВЫЗОВА ПОДПРОГРАММЫ ПО АДРЕСУ 8800.

     891Е      3FFF                  LD              A,-1
     8920      CD0090                CALL            9000
     8923      2A0080                LD              HL,(8000)
     8936      7E                    LD              A,(HL)
     8927      111488                LD              DE,8814
     892A      CD0088                CALL            8800
     892D      2003                  CR              NZ,LAB1
     892F      320280                LD              (8002),A
     8932      211488    LAB1        LD              HL,8814

     ДЛЯ ЭТОГО СЛУЧАЯ СДЕЛАЕМ СЛЕДУЮЩЕЕ:УСТАНОВИМ ТОЧКУ  ПРЕРЫ-
ВАНИЯ , ИСПОЛЬЗУЯ КОМАНДУ "W" ПО АДРЕСУ 892D (ВСПОМНИМ,ЧТО  "M"
ИСПОЛЬЗУЕТСЯ ДЛЯ УСТАНОВКИ УКАЗАТЕЛЯ ПАМЯТИ  ),ЗАТЕМ  ИСПОЛЬЗУЮ
КОМАНДУ "К" ,ПРОДОЛЖИМ ВЫПОЛНЕНИЕ С АДРЕСА СОДЕРЖАЩЕГОСЯ  В  РС
,КОТОРЫЙ В НАШЕМ СЛУЧАЕ БУДЕТ  8920.ВЫПОЛНЕНИЕ  ПРОДОЛЖИТСЯ  ДО
АДРЕСА УСТАНОВЛЕННОГО В ТОЧКЕ ВОЗВРАТА (892В).В ЭТОЙ ТОЧКЕ ЭКРАН
БУДЕТ ЗАМЕНЕН И МОЖНО ИЗМЕНИТЬ ЗНАЧЕНИЕ ФЛАГОВ И Т.Д. ЗАТЕМ  ВЫ
МОЖЕТЕ ПРОДОЛЖИТЬ ПОШАГОВОЕ  ВЫПОЛНЕНИЕ  ПРОГРАММЫ,Т.Е."К"  ИС-
ПОЛЬЗУЕТСЯ ДЛЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ В КОДАХ БЕЗ ПРЕДВАРИТЕЛЬНОЙ
УСТАНОВКИ СТЕКА И ИЗМЕНЕНИЯ  СОДЕРЖИМОГО  РЕГИСТРОВ  ПРОЦЕССОРА
КАК В КОМАНДЕ "J".

     "L" - ЛИСТИНГ ДАМПА УЧАСТКА ПАМЯТИ,НАЧИНАЯ С АДРЕСА СОДЕР-
ЖАЩЕГОСЯ В УКАЗАТЕЛЕ ПАМЯТИ.ПО КОМАНДЕ "L"  ОЧИЩАЕТСЯ  ЭКРАН  И
ОТОБРАЖАЕТСЯ В ШЕСТНАДЦАТИРИЧНОМ И СИМВОЛЬНОМ ВИДЕ 80 БАЙТ  ПА-
МЯТИ,НАЧИНАЯ С ТЕКУЩЕГО ЗНАЧЕНИЯ В УКАЗАТЕЛЕ ПАМЯТИ.АДРЕС МОЖЕТ
ОТОБРАЖАТЬСЯ В ШЕСТНАДЦАТИРИЧНОМ И ДЕСЯТИЧНОМ ВИДЕ (СМ."3").ЭК-
РАН СОДЕРЖИТ 20 СТРОК ПО 4 БАЙТА В КАЖДОЙ,КОДЫ НЕ ИМЕЮЩИЕ  СИМ-
ВОЛЬНОГО ЭКВИВАЛЕНТА (0..31) ОТОБРАЖАЮТСЯ В ВИДЕ ТОЧКИ.НАЖАТИЕМ
ЛЮБОЙ КЛАВИШИ (КРОМЕ "CAPS SHIFT И 1")ВЫДАЕТСЯ СЛЕДУЮЩАЯ  СТРА-
НИЦА,"CAPS SHIFT И 5" ВОЗВРАЩАЕТ К ОСНОВНОМУ ЭКРАНУ.

     "М" - УСТАНАВЛИВАЕТ УКАЗАТЕЛЬ ПАМЯТИ В ТРЕБУЕМОЕ СОСТОЯНИ-
Е.ПОСЛЕ УКАЗАТЕЛЯ ":" НАБИРАЕТСЯ ШЕСТНАДЦАТИРИЧНЫЙ  АДРЕС,КОТО-
РЫЙ ЗАМЕНИТ ТЕКУЩИЙ. ОСНОВНОЙ ЭКРАН ОБНОВЛЯЕТСЯ АВТОМАТИЧЕСКИ.

     "N" - НАЙТИ СЛЕДУЮЩЕЕ ВХОЖДЕНИЕ В ШЕСТНАДЦАТИРИЧНУЮ  СТРО-
КУ, УКАЗАННУЮ В КОМАНДЕ "G".
     "O" - СЛУЖИТ ДЛЯ УСТАНОВКИ УКАЗАТЕЛЯ ПАМЯТИ НА АДРЕС,  ПО-
ЛУЧЕННЫЙ ИЗ КОМАНДЫ ПЕРЕХОДА. НАПРИМЕР, УКАЗАТЕЛЬ СОДЕРЖИТ АДРЕС
6800, ПО КОТОРОМУ РАЗМЕЩЕНЫ ДАННЫЕ 16, А ПО АДРЕСУ  НА  ЕДИНИЦУ
МЕНЬШЕ (67FF) СОДЕРЖИТСЯ 20, ЧТО ИНТЕРПРЕТИРУЕТСЯ  КАК  КОМАНДА
"JR NZ,+24, ДЛЯ НАХОЖДЕНИЯ АДРЕСА ПЕРЕХОДА ПО НЕНУЛЕВОМУ  УСЛО-
ВИЮ ДОСТАТОЧНО НАЖАТЬ "О" И СООТВЕТСТВЕННО ИЗМЕНИТСЯ СОДЕРЖИМОЕ
ЭКРАНА, ЧТО И ТРЕБОВАЛОСЬ ПО ПЕРЕХОДУ.
     ПОМНИТЕ, ЧТО СМЕЩЕНИЕ  БОЛЬШЕ  7F  (127)  ИНТЕРПРЕТИРУЕТСЯ
МИКРОПРОЦЕССОРОМ КАК ОТРИЦАТЕЛЬНОЕ ЧИСЛО.(СМ. КОМАНДУ "U").

     "P" - ЗАПОЛНЯЕТ ПАМЯТЬ В УКАЗАННЫХ ГРАНИЦАХ ЗАДАННЫМ  БАЙ-
ТОМ. ЗАПРАШИВАЕТСЯ "FIRST:","LAST:","WISH:".

        НАПРИМЕР:

FIRST: 7000 "ENTER"
LAST:  77FF "ENTER"
WISH:  55   "ENTER"

     ПАМЯТЬ ОТ 7000 ДО 77FF БУДЕТ ЗАПОЛНЕНА БАЙТОМ 55 ("U").
     ЕСЛИ НАЧАЛЬНЫЙ АДРЕС БОЛЬШЕ КОНЕЧНОГО, ТО  ВЫПОЛНЕНИЕ  КО-
МАНДЫ ПРЕКРАЩАЕТСЯ.

     "Q" - ПЕРЕКЛЮЧЕНИЕ НА АЛЬТЕРНАТИВНЫЕ РЕГИСТРЫ.
     ВНАЧАЛЕ НА ЭКРАНЕ ОТОБРАЖАЕТСЯ СОДЕРЖИМОЕ СТАНДАРТНЫХ  РЕ-
ГИСТРОВ (AF,HL, DE,BC)< ПО КОМАНДЕ "Q" ПРОИСХОДИТ ЗАМЕНА НА СО-
ДЕРЖИМОЕ АЛЬТЕРНАТИВНЫХ РЕГИСТРОВ (AF',HL',DE',BC'). ПОВТОРНОЕ
НАЖАТИЕ "Q" ВОЗВРАЩАЕТ К СТАНДАРТНЫМ РЕГИСТРАМ.

     SIMBOL SHIFT И Т - УСТАНАВЛИВАЕТ ТОЧКУ ПРЕРЫВАНИЯ ПОСЛЕ
ТЕКУЩЕЙ КОМАНДЫ И ПРОДОЛЖАЕТ ВЫПОЛНЕНИЕ. НАПРИМЕР:

      9000      87           ОR          А
      9001      С20098       COLL        NZ, 9800
      :         :            :           :
      9800      21FFFF       LD          HL,-1

     ВЫ ВЫПОЛНЯЕТЕ ПО ШАГАМ ЭТУ ПРОГРАММУ И ПРИШЛИ  В  ТОЧКУ  С
АДРЕСОМ 9001 С НУЛЕВЫМ СОДЕРЖАНИЕМ РЕГИСТРА А. ЕСЛИ ВЫ ПРИМЕНИ-
ТЕ "Z" ДЛЯ ПРОДОЛЖЕНИЯ ПО ШАГОВОГО ВЫПОЛНЕНИЯ, ТО ВЫ  ПЕРЕЙДЕТЕ
К АДРЕСУ 9800. ЕСЛИ ВЫ НЕ ХОТИТЕ ПЕРЕХОДИТЬ К ПРОГРАММЕ ПО  АД-
РЕСУ 9800 ИСПОЛЬЗУЙТЕ КОМАНДУ "T", УПРАВЛЕНИЕ ПЕРЕЙДЕТ НА  СЛЕ-
ДУЮЩУЮ КОМАНДУ ПО АДРЕСУ 9004. ПОМНИТЕ  "Т"  ВВОДИТ  ПРЕРЫВАНИЕ
ПОСЛЕ ТЕКУЩЕЙ ИНСТРУКЦИИ И ЗАТЕМ ВЫХОДИТ НА  КОМАНДУ  "K"  (СМ.
КОМАНДУ "K").

     "Т" - ДИСАССЕМБЛИРОВАНИЕ БЛОКА ДАННЫХ С ВОЗМОЖНОСТЬЮ ВЫВОД
НА ПРИНТЕР. КОМАНДА ЗАПРАШИВАЕТ "FIRST" И  "LAST"  ДЛЯ  ЗАДАНИЯ
АДРЕСОВ. ПОСЛЕ ЭТОГО ЗАПРАШИВАЕТСЯ "PRINTER?", ОТВЕТ "Y" (ТОЛЬ-
КО ЗАГЛАВНАЯ БУКВА "Y") ВЫЗОВЕТ ВЫВОД НА ПРИНТЕР, ЛЮБОЙ  ДРУГОЙ
ОТВЕТ ВЫЗЫВАЕТ ВЫВОД НА ЭКРАН. СЛЕДУЮЩИЙ ВОПРОС "TEXT:", ЗАПРА-
ШИВАЕТ ШЕСТНАДЦАТИРИЧНЫЙ АДРЕС НАЧАЛА ТЕКСТОВОГО ФАЙЛА,  ПОЛУ-
ЧЕННОГО В РЕЗУЛЬТАТЕ ДИСАССЕМБЛИРОВАНИЯ. ЕСЛИ ВЫ НЕ ХОТИТЕ  ЭТО
ДЕЛАТЬ, ПРОСТО НАЖМИТЕ КЛАВИШУ "ENTER" ПОСЛЕ ЗАПРОСА.  В  ПРО-
ТИВНОМ СЛУЧАЕ БУДЕТ СТРОИТСЯ ФАЙЛ ДИСАССЕМБЛИРОВАНИЯ В  ФОРМАТЕ
ТРЕБУЕМОМ ДЛЯ GENS3. АДРЕС ВЫДАННЫЙ РЕДАКТОРОМ GENS3, ПО КОМАН-
ДЕ "X", ЕСТЬ АДРЕС НАЧАЛА ТЕКСТОВОГО ФАЙЛА. ЕСЛИ  НА  НЕКОТОРОЙ
СТАДИИ ДИСАССЕМБЛИРОВАНИЯ MONS3 ПРЕРЫВАЕТСЯ, ТО НАЖМИТЕ ЛЮБУЮ
КЛАВИШУ ДЛЯ ВОЗВРАТА К ОСНОВНОМУ ЭКРАНУ. ЕСЛИ ВЫ  ЗАДАЛИ  АДРЕС
ТЕКСТОВОГО ФАЙЛА, ТО ДОЛЖНЫ ОТВЕТИТЬ НА ВОПРОС  "WORK  SPACE:",
НАЧАЛО РАБОЧЕЙ ОБЛАСТИ ДЛЯ ПОСТРОЕНИЯ ПРОСТЕЙШЕЙ ТАБЛИЦЫ СИМВО-
ЛОВ ДЛЯ МЕТОК СОЗДАВАЕМЫХ ДИСАССЕМБЛЕРОМ, ПРИБЛИЗИТЕЛЬНО ТРЕБУ-
ЕТСЯ 2 БАЙТА НА КАЖДУЮ МЕТКУ. ПО УМОЛЧАНИЮ БЕРЕТСЯ АДРЕС  6000.
ПОСЛЕ ЭТОГО ВЫ ОТВЕЧАЕТЕ НА ВОПРОСЫ "FIRST:" И "LAST:" (ВКЛЮЧИ-
ТЕЛЬНО), ДЛЯ ЗНАЧЕНИЯ НЕКОТОРОЙ ОБЛАСТИ ДАННЫХ, КОТОРАЯ  ИСКЛЮ-
ЧАЕТСЯ ИЗ ДИСАССЕМБЛИРОВАННОГО БЛОКА. ЭТО МОГУТ БЫТЬ НЕКОТОРЫЕ
ДАННЫЕ, КОТОРЫЕ НЕ МОГУТ БЫТЬ ИНТЕРПРЕТИРОВАНЫ КАК  ИНСТРУКЦИЯ
Z80. ОНИ ДИСАССЕМБЛИРУЮТСЯ КАК ИНСТРУКЦИЯ КАК "DFB", ЕСЛИ  ЗНА-
ЧЕНИЕ БАЙТА ЛЕЖАТ В ДИАПАЗОНЕ ОТ 32 ДО 127 ( 20 ДО 7F) ЭТО  ИН-
ТЕРПРЕТИРУЕТСЯ КАК КОД ASCII. ЕСЛИ ВЫ  ЖЕЛАЕТЕ  СПЕЦИФИЦИРОВАТЬ
ЭТУ ОБЛАСТЬ, ПРОСО НАЖМИТЕ "ENTER" НА ОБА ЗАПРОСА. КОМАНДА  "Т"
ИСПОЛЬЗУЕТ ОБЛАСТЬ В КОНЦЕ MONS3 ДЛЯ ХРАНЕНИЯ АДРЕСОВ  ОБЛАСТЕЙ
ДАННЫХ, ТАК ЧТО МОЖНО УСТАНОВИТЬ НЕСКОЛЬКО ОБЛАСТЕЙ ДАННЫХ  (ПО
4 БАЙТА НА ОБЛАСТЬ). ПОМНИТЕ, ЧТО "Т" УНИЧТОЖАЕТ  РАННЕЕ  УСТА-
НОВЛЕННУЮ СТРОЧКУ ПРЕРЫВАНИЯ (СМ. КОМАНДУ "W").

     ЭКРАН ОЧИЩАЕТСЯ (ЕСЛИ УСТАНОВЛЕН ТЕКСТОВЫЙ ФАЙЛ, ТО С  НЕ-
КОТОРОЙ ЗАДЕРЖКОЙ) И НАЧИНАЕТСЯ ВЫВОД ЛИСТИНГА  НА  ЭКРАН  ИЛИ
ПРИНТЕР. ВЫ МОЖЕТЕ ПРИОСТАНОВИТЬ ВЫВОД  НАЖАВ  В  КОНЦЕ  СТРОКИ
"ENTER" ИЛИ "SPARCE". НАЖАТИЕ "CAPS SHIFT И 5" ВОЗВРАЩАЕТ К ОС-
НОВНОМУ ЭКРАНУ. НАЖАТИЕ ЛЮБОЙ ДРУГОЙ КЛАВИШИ (КРОМЕ "CAPS SHIFT
И 1") ПРОДОЛЖАЕТ ДИСАССЕМБЛИРОВАНИЕ. ЕСЛИ ВСТРЕЧАЕТСЯ НЕ ДОПУС-
ТИМЫЙ КОД, ТО ДИСАССЕМБЛЕР ВСТАВЛЯЕТ ИНСТРУКЦИЮ "NOP", ОТМЕЧЕН-
НУЮ ЗВЕЗДОЧКОЙ ("*"), ПОСЛЕ КОДА ОПЕРАЦИИ.

     ПО ЗАВЕРШЕНИИ ДИСАССЕМБЛИРОВАНИЯ ВЫВОД ОСТАНАВЛИВАЕТСЯ  И,
ЕСЛИ БЫЛ УСТАНОВЛЕН ТЕКСТОВЫЙ ФАЙЛ, ВЫДАЕТСЯ  СООБЩЕНИЕ:  "END"
OF TEXT XXXXX", ГДЕ "XXXXX" - ДЕСЯТИЧНЫЙ ИЛИ  ШЕСТНАДЦАТИРИЧНЫ
АДРЕС, КОТОРЫЙ ДОЛЖЕН БЫТЬ ВВЕДЕН В GENS3 КАК  КОНЕЦ  ИСХОДНОГО
ТЕКСТА. ПО ЗАВЕРШЕНИЮ ДИСАССЕМБЛИРОВАНИЯ НАЖМИТЕ ЛЮБУЮ  КЛАВИШУ
ДЛЯ ПЕРЕХОДА К ОСНОВНОМУ ЭКРАНУ ИЛИ "CAPS SHIFT И 1"  ДЛЯ  ВОЗ-
ВРАТА В BASIC.

     ДИСАССЕМБЛЕР ГЕНЕРИРУЕТ МЕТКИ В ФОРМЕ LXXXX,  ГДЕ  XXXX  -
АБСОЛЮТНЫЙ ШЕСТНАДЦАТИРИЧНЫЙ АДРЕС. МЕТКА  ЛЕЖИТ  ЗА  ПРЕДЕЛАМИ
ДИСАССЕМБЛИРУЕМОГО БЛОКА, ТО МЕТКА НЕ ГЕНЕРИРУЕТСЯ, А ДИСАССЕМ-
БЛИРУЕТСЯ КАК АБСОЛЮТНЫЙ АДРЕС.

          Т
          FIRST: 88         "ENTER"
          LAST : 9E         "ENTER"
          PRINTER? Y
          TEXT              "ENTER"
          FIRST: 95
          LAST : 9E         "ENTER"
          FIRST:            "ENTER"
          LAST :            "ENTER"
          008B   FE16       CP        16
          008D   3801       JP       C,L0090
          008F   23         INC      HL
          0090   27         SCE
          0091   225DSC     LD       ( SC5D),HL
          0094   C9         RET
          0095   BFS24E     DEF8     BF,"R","N"
          0098   S4494E     DEFB     C4,"I","N"
          009B   4B4559     DEFB     "K","E","Y"
          009E   A4         DEFB     F4

     "U" - ИСПОЛЬЗУЕТСЯ С КОМАНДОЙ "О". ВСПОМНИМ,  ЧТО  КОМАНДА
"О" ЗАМЕНЯЕТ ОТОБРАЖАЕМУЮ ПАМЯТЬ ПО АДРЕСУ ИЗ КОМАНД  ПЕРЕХОДОВ
JR ИЛИ DJNZ, "U" ИСПОЛЬЗУЕТСЯ ДЛЯ ВОЗВРАТА НАЗАД ПО  АДРЕСУ  ИЗ
КОТОРОГО БЫЛ ВЫХОД ПО "О".

      ПРИМЕР:        7200         47         71F3
                     7201         20         714F
                    <7202         F2>       <71FS F5
                     7203         06         71F6
                     ЭКРАН 1                 ЭКРАН 2

     ВЫ НА ЭКРАНЕ 1 И ЖЕЛАЕТЕ ПЕРЕЙТИ ПО КОМАНДЕ 20А2, И ТАК ВЫ
НАЖИМАЕТЕ "О" И ПЕРЕХОДИТЕ К ЭКРАНУ 2, ИССЛЕДОВАВ КОМАНДУ ПО АД-
РЕСУ 71F5, ВЫ ЖЕЛАЕТЕ ВЕРНУТСЯ В ИСХОДНУЮ  ТОЧКУ,  НАЖИМАЕТЕ  В
"U" И ПОЛУЧАЕТЕ ЭКРАН 1. ПОМНИТЕ, ЧТО КОМАНДУ "U" МОЖНО  ПРИМЕ-
НЯТЬ ТОЛЬКО ДЛЯ ВОЗВРАТА ПОСЛЕ КОМАНДЫ "O".

     "W" - УСТАНАВЛИВАЕТ ТОЧКУ ПРЕРЫВАНИЯ ПО  АДРЕСУ  УКАЗАТЕЛЯ
ПАМЯТИ. ТОЧКА ПРЕРЫВАНИЯ ЭТО ПРОСТО ИНСТРУКЦИЯ "CALL" ДЛЯ ВХОДА
В ПРОГРАММУ MONS3, ОТОБРАЖАЮЩУЮ ОСНОВНОЙ ЭКРАН.  ЭТО  ПОЗВОЛЯЕТ
ПРОГРАММИСТУ УСТАНОВИТЬ ВЫПОЛНЕНИЕ ПРОГРАММЫ И ИЗМЕНИТЬ СОДЕРЖИМОЕ
РЕГИСТРОВ, ФЛАГОВ И ИЛИ ОБЛАСТЕЙ ПАМЯТИ.

     НАПРИМЕР ВЫ ЖЕЛАЕТЕ ОСТАНОВИТЬ ПРОГРАММУ В ТОЧКЕ С АДРЕСОМ
9876. ДЛЯ ЧЕГО, ИСПОЛЬЗУЯ КОМАНДУ "М", УСТАНОВИТЕ УКАЗАТЕЛЬ  ПА-
МЯТИ НА АДРЕС 9876, А ЗАТЕМ, ИСПОЛЬЗУЮ  "W"  УСТАНОВИТЕ  ТОЧКУ
ПРЕРЫВАНИЯ ПО АДРЕСУ. ТРИ БАЙТА ПРОГРАММЫ ПО ЭТОМУ АДРЕСУ ЗАПО-
МИНАЮТСЯ, И НА ИХ МЕСТО ЗАПИСЫВАЕТСЯ ИНСТРУКЦИЯ "CALL", КОТОРАЯ
ОСТАНОВИТ ВЫПОЛНЕНИЕ В  ЭТОЙ  ТОЧКЕ  И  ВЫДАЕТ  ОСНОВНОЙ  ЭКРАН
MONS3.

     ПРИМЕЧАНИЕ: MONS3 ИСПОЛЬЗУЕТ ОБЛАСТЬ В КОНЦЕ СВОЕГО  РАЗМЕ-
ЩЕНИЯ, ГДЕ ХРАНЯТСЯ АДРЕСА В ПОРЯДКЕ ЗАПОМИНАНИЯ  ИНФОРМАЦИИ  О
ТОЧКАХ ПРЕРЫВАНИЯ, ВЫ МОЖЕТЕ УСТАНОВИТЬ СТОЛЬКО ТОЧЕК ПРЕРЫВА-
НИЯ СКОЛЬКО ДОСТУПНО ПАМЯТИ. НА КАЖДУЮ ТОЧКУ ПРЕРЫВАНИЯ  ТРЕБУ-
ЕТСЯ 5 БАЙТ. ПОСЛЕ ВЫПОЛНЕНИЯ  ПРЕРЫВАНИЯ  MONS3  АВТОМАТИЧЕСКИ
ВОССТАНАВЛИВАЕТ В ЭТОЙ ТОЧКЕ ПРЕЖНЕЕ СОДЕРЖАНИЕ ПАМЯТИ.  КОМАНДА
"Т" ТАКЖЕ ПОЛЬЗУЕТСЯ ЭТОЙ ОБЛАСТЬЮ ПАМЯТИ. САМА ТОЧКА  ПРЕРЫВА-
НИЯ СОДЕРЖИТ 3 БАЙТА ИНСТРУКЦИИ "CALL".

     РАССМОТРИМ ПРОГРАММУ:

        8000            3Е      8008            00
        8001            01      8009            00
        8002            18      800А            06
        8003            06      800B            02
       >8004            AF      800C            18
        8005            0Е      800D            F7
        8006            FF      800Е            06
        8007            01      800F            44

     ЕСЛИ ВЫ УСТАНОВИТЕ ТОЧКУ ПРЕРЫВАНИЯ ПО АДРЕСУ 8004 И  НАЧ-
НЕТЕ ВЫПОЛНЕНИЕ С АДРЕСА 8000, ТО РЕГИСТР "A" У ВАС БУДЕТ  ЗАГ-
РУЖЕН ЗНАЧЕНИЕ 1 И ВЫПОЛНЕНИЕ ПЕРЕЙДЕТ В  ТОЧКУ  800А,  РЕГИСТР
"B" ЗАГРУЗИТСЯ ЗНАЧЕНИЕМ 2 И ВЫПОЛНЕНИЕ ПЕРЕЙДЕТ В ТОЧКУ  8005,
НО ЗНАЧЕНИЮ ПО АДРЕСУ 8005  БЫЛО  ПЕРЕПИСАНО  ПРИ  УСТАНОВЛЕНИИ
МЛАДШЕГО БАЙТА ТОЧКИ ПРЕРЫВАНИЯ, ТАКИМ ОБРАЗОМ МЫ  БУДЕМ  ИМЕТЬ
НЕ ВЕРНЫЕ КОДЫ. НАДО ПОМНИТЬ О ВОЗМОЖНОСТИ ТАКОЙ СИТУАЦИИ И  ПО-
ПЫТАТЬСЯ ВЫПОЛНИТЬ ЭТУ ПРОГРАММУ ПО ШАГАМ (СМ.КОМАНДУ Z).

     "X" - ИСПОЛЬЗУЕТСЯ ДЛЯ ИЗМЕНЕНИЯ СОДЕРЖИМОГО УКАЗАТЕЛЯ ПА-
МЯТИ ПО НАЗНАЧЕНИЮ АБСОЛЮТНОГО АДРЕСА  В  ИНСТРУКЦИИ  "CALL"  И
"JP". ПО КОМАНДЕ ЗАМЕНЯЮТСЯ ДВА БАЙТА ПО АДРЕСУ УКАЗАТЕЛЯ ПАМЯ-
ТИ И УКАЗАТЕЛЯ ПАМЯТИ +1. ПОМНИТЕ, ЧТО МЛАДШАЯ ПОЛОВИНА  АДРЕСА
СОДЕРЖИТСЯ В ПЕРВОМ БАЙТЕ, А СТАРШАЯ ПОЛОВИНА ВО ВТОРОМ, В  СО-
ОТВЕТСТВИИ С ФОРМАТОМ INTEL. НАПРИМЕР, ВЫ  ЖЕЛАЕТЕ  ПРОСМОТРЕТЬ
ПРОГРАММУ, ВЫЗЫВАЕМУЮ В КОМАНДЕ CD0563, УСТАНОВИТЕ КОМАНДОЙ "M"
УКАЗАТЕЛЬ ПАМЯТИ, ТАК ЧТОБЫ ОН ВСТАЛ НА АДРЕС ИНСТРУКЦИИ "CALL"
И НАЖМИТЕ "X", ЭКРАН ИЗМЕНЯЕТСЯ ТАК, ЧТО ЦЕНТР (УКАЗАТЕЛЬ  ПА-
МЯТИ ) БУДЕТ ПО АДРЕСУ 6305 (СМ.КОМАНДУ "U" СОВМЕСТНО С "X").

     "Y" - ВВОДИТ КОДЫ АSCII ПО УКАЗАТЕЛЮ ПАМЯТИ.  КОМАНДА  "Y"
ДАЕТ ВАМ НОВУЮ СТРОКУ, НА КОТОРУЮ ВЫ МОЖЕТЕ ВВОДИТЬ ASCII  СИМ-
ВОЛЫ ПРЯМО С КЛАВИАТУРЫ, ШЕСТНАДЦАТЕРИЧНЫЕ КОДЫ  ЭТИХ  СИМВОЛОВ
БУДУТ ВВОДИТСЯ В ПАМЯТЬ, НАЧИНАЯ С ТЕКУЩЕГО ЗНАЧЕНИЯ  УКАЗАТЕЛЯ
ПАМЯТИ. НАБОР СТРОКИ ЗАВЕРШИТЬСЯ ПО "CAPS SHIFT И 5". ДЛЯ  УДА-
ЛЕНИЯ СИМВОЛОВ В СТРОКЕ МОЖНО ИСПОЛЬЗОВАТЬ "DELETE". ПОСЛЕ  ЗА-
ВЕРШЕНИЯ НАБОРА ЭКРАН ЗАМЕНИТСЯ ТАК, ЧТО УКАЗАТЕЛЬ ПАМЯТИ УСТА-
НОВИТСЯ ПОСЛЕ ВВЕДЕННОЙ ВАМИ СТРОКИ.

     "SIMBOL SHIFT И Z" - ШАГОВОЕ ВЫПОЛНЕНИЕ ПРОГРАММЫ.

     ПЕРЕД ИСПОЛЬЗОВАНИЕМ "Z" (ИЛИ "T") ПРОГРАММНЫЙ СЧЕТЧИК "PC"
И УКАЗАТЕЛЬ ПАМЯТИ ДОЛЖНЫ БЫТЬ УСТАНОВЛЕНЫ В АДРЕС  ИНСТРУКЦИИ
С КОТОРОЙ ВЫ ЖЕЛАЕТЕ НАЧАТЬ ШАГОВОЕ ВЫПОЛНЕНИЕ. "Z" ПРОСТО  ВЫ-
ПОЛНЯЕТ ОЧЕРЕДНУЮ ИНСТРУКЦИЮ И СООТВЕТСТВУЮЩИМ ОБРАЗОМ ИЗМЕНЯЕТ
ОСНОВНОЙ ЭКРАН. ПОМНИТЕ, ЧТО ШАГОВОЕ ВЫПОЛНЕНИЕ  МОЖНО  ОСУЩЕС-
ТВИТЬ КАК В "RAM", ТАК И В "ROM", НО ПРЕРЫВАНИЕ ПРИ ЭТОМ ДОЛЖНЫ
БЫТЬ ЗАМАСКИРОВАНЫ.

     ПРИМЕР: ДОПУСТИМ У ВАС ИМЕЕТСЯ ТРИ СЕКЦИИ ПРОГРАММЫ ПРИВЕ-
ДЕННОЙ НИЖЕ. ПЕРВАЯ СЕКЦИЯ - ЭТО  ГОЛОВНАЯ  ПРОГРАММА.  КОТОРАЯ
ЗАВЕРШАЕТ РЕГИСТРОВЫЕ ПАРЫ "HL" И "DE" ЧИСЛАМИ И ЗАТЕМ ВЫЗЫВАЕТ
ПОДПРОГРАММУ (ВТОРАЯ СЕКЦИЯ) ДЛЯ ИХ ПЕРЕМНОЖЕНИЯ (РЕЗУЛЬТАТ  В
"HL") И, НАКОНЕЦ, ВЫЗЫВАЕТ ПРОГРАММУ  "AOUT"  (ТРЕТЬЯ  СЕКЦИЯ),
ДЛЯ ВЫВОДА РЕЗУЛЬТАТА НА ЭКРАН.

7080    2А0072          LD          HL,(7200)       ; SECTION 1
7083    ЕDSB0272        LD          DE,(7202)
7087    CD0071          CALL        MULT
708A    7C              LD          A,H
708B    CD1D71          CALL        AOUT
708E    7D              LD          A,L
708F    CD1D71          CALL        AOUT
7092    210000          LD          HL,0

7100    AF       MULT   XOR         A               ; SECTION 2
7101    ED52            SBC         HL,DE
7103    19              ADD         HL,DE
7104    3001            JR          NC,MUL
7006    EB              EX          DE,HL
7107    B2       MU1    OR          D
7108    37              SCF
7109    C0              RET         NZ
710A    B3              OR          E
710B    5A              LD          E,D
710C    2007            JR          NZ,MU4
710E    EB              EX          DE,HL
710F    C9              RET
7110    EB       MU2    EX          DE,HL
7111    19              ADD         HL,DE
7112    EB              EX          DE,HL
7113    29       MU3    ADD         HL,HL
7114    D8              RET         C
7115    1F       MU4    RRA
7116    30BF            JR          NC,MU3
7118    B7              OR          A
7119    20F5            JR          NZ,MU2
711B    19              ADD         HL,DE
711C    C9              RET

711D    F5       AOUT   PUSH        AF              ;SECNION 3
711E    0F              RRCA
711F    0F              RRCA
7120    0F              RRCA
7121    0F              RRCA
7122    CD2671          CALL        NIBLE
7125    F1              POP         AF
7126    E60F     NIBLE  ANT         %1111
7128    C690            ADD         A, 90
712A    27              DAA
712B    CE40            ADC         A, 40
712D    27              DAA
712E    FD213A5C        LD          IY, 5C3A
7132    D7              RST         10
7133    C9              RET

7200    1B2A            DEFW        10779
7202    0300            DEFW        3

  ИССЛЕДУЕМ ЭТУ ПРОГРАММУ ИСПОЛЬЗУЯ ШАГОВОЕ ВЫПОЛНЕНИЕ:

  М:7080   "ENTER"    УСТАНОВИТЬ УКАЗАТЕЛЬ ПАМЯТИ В 7080
  7080 .              УСТАНОВИТЬ ПРОГРАММНЫЙ СЧЕТЧИК В 7080
  Z                   ШАГ
  Z                   ШАГ
  М:7115   "ENTER"    ПЕРЕХОД НА ПРЕДВОРИТ. ОБРАБОТКУ ЧИСЕЛ
  W                   УСТАНОВИТЬ ТОЧКУ ПРЕРЫВАНИЯ
  К                   ПРОДОЛЖИТЬ ВЫПОЛНЕНИЕ С 7100
                      ТОЧКА ПРЕРЫВАНИЯ
  Z                   ШАГ
  Z                   СЛЕДУЮЩИЙ УСЛОВНЫЙ ПЕРЕХОД
  Z                   ШАГ
  Z                   ШАГ
  Z                   ШАГ
  Z                   ШАГ
  Z                   ШАГ
  Z                   ШАГ
  Z                   ВОЗВРАТ ИМЯ ПОДПРОГРАММЫ УМНОЖЕНИЯ
  Z                   ШАГ
  М:7128              УСТАНОВИТЬ УКАЗАТЕЛЬ ПАМЯТИ НА
                      ИНТЕРЕСУЮЩИЙ БАЙТ
  W                   УСТАНОВИТЬ ТОЧКУ ПРЕРЫВАНИЯ
  К                   ПРОДОЛЖИТЬ ВЫПОЛНЕНИЕ С 711D
                      ТОЧКА ПРЕРЫВАНИЯ
  Z                   ШАГ
  Z                   ШАГ
  Z                   ШАГ
  Z                   ШАГ
  ,                   ПРОСМОТР АДРЕСА ВОЗВРАТА
  W                   УСТАНОВКА ТОЧКИ ПРЕРЫВАНИЯ
  К                   И ПРОДОЛЖЕНИЕ
  Z                   ШАГ
  ,                   ВОЗВРАТ ИЗ ПОДПРОГРАММЫ ВЫВОДА НА ЭКРАН
  W                   УСТАНОВИТЬ ТОЧКУ ПРЕРЫВАНИЯ
  К
  Z                   ШАГ
  Т                   ВЫЗОВ "LOUT"

     "SIMBOL SHIET И Р" - ЭТА КОМАНДА ТАКЖЕ КАК И  "L"  ВЫВОДИТ
ДАМП ПАМЯТИ НО НА ПРИНТЕР. ПОМНИТЕ, ЧТО ПРИ ОКОНЧАНИИ ОЧЕРЕДНОЙ
СТРАНИЦЫ ВЫ МОЖЕТЕ ВВЕСТИ "CAPS SHIFT И 5" ДЛЯ ВОЗВРАТА К ОСНОВ-
НОМУ ЭКРАНУ ИЛИ ЛЮБУЮ  ДРУГУЮ  КЛАВИШУ  (ЗА  ИСКЛЮЧЕНИЕМ  "CAPS
SHIFT И 1" ДЛЯ ВЫВОДА СЛЕДУЮЩЕЙ СТРАНИЦЫ.

     "ИЗМЕНЕНИЯ ПАМЯТИ" - СОДЕРЖИМОЕ АДРЕСОВ ЗАДАВАЕМЫХ  УКАЗА-
ТЕЛЕЙ ПАМЯТИ МОЖЕТ БЫТЬ ИЗМЕНЕНО ВВОДОМ  ШЕСТНАДЦАТЕРИЧНЫХ  ЧИ-
СЕЛ. ВВОДЯТСЯ ТОЛЬКО ДВЕ ПОСЛЕДНИХ ЦИФРЫ.

ПРИМЕРЫ:

F2  "ENTER"      ВВОДИТСЯ F2 И УКАЗАТЕЛЬ ПАМЯТИ ИЗМЕНЯЕТСЯ НА 1.
123 "CAPS SHIFT 8"  ВВОДИТСЯ 23 И УКАЗАТЕЛЬ ПАМЯТИ ИЗМЕНЯЕТСЯ
                     НА 8.
8CO              ВВОДИТСЯ 8C И УКАЗАТЕЛЬ ПАМЯТИ ИЗМЕНЯЕТСЯ (ТАК
                КАК ИСПОЛЬЗОВАНА КОМАНДА "О") ПО ОТНОСИТЕЛЬНОМУ
                СМЕЩЕНИЮ 8С.
2А5D            ВВОДИТСЯ 5D,НО УКАЗАТЕЛЬ ПАМЯТИ НЕ ИЗМЕНЯЕТСЯ,
                Т.К. ПРОБЕЛ ("") НЕ ЯВЛЯЕТСЯ КОМАНДОЙ.

     "ИЗМЕНЕНИЕ РЕГИСТРОВ" - ЕСЛИ ШЕСТНАДЦАТИРИЧНОЕ ЧИСЛО  ВВО-
ДИТСЯ ПОСЛЕ УКАЗАТЕЛЯ ">" И ЗАВЕРШАЕТСЯ ТОЧКОЙ ".", ТО ЭТО ЧИС-
ЛО БУДЕТ ВВЕДЕНО В РЕГИСТР 780, НЕПОСРЕДСТВЕННО АДРЕСУЕМЫЙ РАС-
ПОЛОЖЕННЫМ СПРАВА УКАЗАТЕЛЕМ "->". ПОМНИТЕ, ЧТО НЕВОЗМОЖНО  АД-
РЕСОВАТЬ (А ТАКЖЕ ИЗМЕНИТЬ) УКАЗАТЕЛЬ СТЕКА  "SP"  ИЛИ  РЕГИСТР
"IR". ПРИМЕРЫ:

        .       УКАЗАТЕЛЬ НА "IY"
        .       УКАЗАТЕЛЬ НА "IX"
        0.      УСТАНОВИТЬ "IX" В 0
        .       УКАЗАТЕЛЬ НА "HL"
        123     УСТАНОВИТЬ 123 В "HL"
        .       УКАЗАТЕЛЬ НА "DE"
        .       УКАЗАТЕЛЬ НА "BС"
        Е2А7    УСТАНОВИТЬ Е2А7 В "BС"
        .       УКАЗАТЕЛЬ НА "AF"
        FF00    УСТАНОВИТЬ В "А"  FF И СБРОСИТЬ ВСЕ ФЛАГИ
        .       УКАЗАТЕЛЬ НА "PC"
        8000.   УСТАНОВИТЬ 8000 В "PC"

     ПОМНИТЕ, ЧТО "." МОЖЕТ БЫТЬ ТАКЖЕ ИСПОЛЬЗОВАНА ДЛЯ ИЗМЕНЕ-
НИЯ АЛЬТЕРНАТИВНОГО НАБОРА, ЕСЛИ ОН  ОТОБРАЖАЕТСЯ.  ИСПОЛЬЗУЙТЕ
КОМАНДУ "Q" ДЛЯ ПЕРЕКЛЮЧЕНИЯ НА АЛЬТЕРНАТИВНЫЙ НАБОР РЕГИСТРОВ.


                ПРИЛОЖЕНИЕ  А
                -------------
        СПИСОК ОШИБОК ТРАНСЛЯЦИИ
        -----------------------

* ERORRS * 1  -  ОШИБКА В СТРОКЕ ТЕКСТА ПРОГРАММЫ.
* ERORRS * 2  -  МНЕМОНИКА НЕ РАСПОЗНАНА.
* ERORRS * 3  -  НЕДОПУСТИМОЕ ВЫРАЖЕНИЕ.
* ERORRS * 4  -  ПОВТОРНОЕ ОПРЕДЕЛЕНИЕ СИМВОЛА.
* ERORRS * 5  -  СТРОКА СОДЕРЖИТ НЕ ПРИГОДНЫ ДЛЯ ДАННОГО
                 КОНТЕКСТА ЗНАК.

* ERORRS * 6  -  ОДИН ИЗ ОПЕРАНДОВ В ДАННОЙ СТРОКЕ НЕ ПРИГОДЕН
* ERORRS * 7  -  ИСПОЛЬЗОВАНИЕ ЗАРЕЗЕРВИРОВАННОГО СЛОВА В КА-
                 ЧЕСТВЕ СИМВОЛА.

* ERORRS * 8  -  НЕВЕРНЫЙ СИМВОЛ РЕГИСТРА.
* ERORRS * 9  -  В СТРОКЕ СЛИШКОМ МНОГО ОБОЗНАЧЕНИЯ РЕГИСТРОВ.
* ERORRS * 10 -  ПРЕВЫШЕНО МАКСИМАЛЬНО ДОПУСТИМОЕ ЗНАЧЕНИЕ ВЫ-
                 РАЖЕНИЯ.

* ERORRS * 11 -  НЕ ВЕРНАЯ ИНСТРУКЦИЯ JP (IX+D) ИЛИ JP (IY+D).
* ERORRS * 12 -  ОШИБКА В ДИРЕКТИВЕ АССЕМБЛЕРА
* ERORRS * 13 -  НЕДОПУСТИМАЯ ССЫЛКА ВПЕРЕД, Т.Е. В ДИРЕКТИВЕ
                 EQU ИСПОЛЬЗОВАН НЕ ОПРЕДЕЛЕННЫЙ СИМВОЛ.

* ERORRS * 14 -  ДЕЛЕНИЕ НА НУЛЬ.
* ERORRS * 15 -  ПЕРЕПОЛНЕНИЕ В ОПЕРАНДЕ УМНОЖЕНИЯ.

BAD MEMORI    -  ДЛЯ ДАЛЬНЕЙШЕГО ВВОДА ТЕКСТА НЕ ХВАТАЕТ ПАМЯ-
                 ТИ НЕОБХОДИМО ЗАПИСАТЬ ТЕКСТОВЫЙ ФАЙЛ ИЛИ ЕГО
                 ЧАСТЬ НА ЛЕНТУ.

BAD ORG       -  ИСПОЛЬЗОВАНИЕ В КАЧЕСТВЕ ПАРАМЕТРА ДИРЕКТИВЫ
                 ORG АДРЕСА ПРИХОДЯЩЕГОСЯ НА КОДЫ GENS3, ТЕК-
                 СТОВЫЙ ФАЙЛ ИЛИ ТАБЛИЦУ СИМВОЛОВ. УПРАВЛЕНИЕ
                  ВОЗВРАЩАЕТСЯ РЕДАКТОРУ.

OUT OF TABL SPACE  -  ВОЗНИКАЕТ ВО ВРЕМЯ ПЕРВОГО ПРОХОДА ПРИ
                      НЕХВАТКЕ ПАМЯТИ, ВЫВЕДЕННОЙ ПОД ТАБЛИЦУ
                      СИМВОЛОВ. УПРАВЛЕНИЕ ВОЗВРАЩАЕТСЯ РЕ-
                      ДАКТОРУ.


                ПРИЛОЖЕНИЕ  8
                -------------
СПИСОК ЗАРЕЗЕРВИРОВАННЫХ СЛОЕВ, МНЕМОНИК, КОМАНД, ДИРЕКТИВ
----------------------------------------------------------
                GENS3
                -----

**********************************************************
*                                                        *
* ВНИМАНИЕ! ПРИМЕНЕНИЕ ПРОПИСНЫХ БУКВ В ПРИВЕДЕННЫХ НИЖЕ *
*           ЗАРЕЗЕРВИРОВАННЫХ СЛОВАХ, МНЕМОНИКАХ,КОМАНДАХ*
*                      И ДИРЕКТИВАХ                       *
*                                                        *
*               Н Е Д О П У С Т И М О ! ! !              *
*                                                        *
**********************************************************

                B1. ЗАРЕЗЕРВИРОВАННЫЕ СЛОВА.
              -------------------------------

А    B    C    D    E    H    L    J    R    S    AF    AF
BC   DE   HL   IX   IY   SP   NC   Z    NZ    M   PE    PO

                B2. МНЕМОНИЧЕСКИЕ ОБОЗНАЧЕНИЯ КОМАНД Z80.
              ---------------------------------------------

АDC     ADD     AND     BIT     CALL    CCF     CP      CPD
CPRD    CPI     CPIR    CPL     DAA     DEC     DI      DJNZ
EI      EX      EXX     HALT    IM      IN      INC     IND
INDR    INI     INIR    JP      JR      LD      LDD     LDDR
LDI     LDIR    NEG     NOP     OTDR    OTIR    OUT     OUTD
OOT     I       POP     PUSH    REG     RET     RETI    REIN
RL      RLA     RLC     RLCA    RLD     RR      RRA     RRC
RRCA    RRD     RST     SBC     SCF     SET     SLA     SPA
SRL     SUB     XOR

                 B3. ДИРЕКТИВА АССЕМБЛЕРА.
               ----------------------------

DEFB    DEFM    DEFS    DEFW    ELSE    END     ENT
EQU     IF      ORG

                 B4. КОМАНДЫ АССЕМБЛЕРА.
               ---------------------------

*D      *E      *H      *L      *S      *C      *F

                    ПРИЛОЖЕНИЕ С.
                  -----------------

                   РАБОЧИЙ ПРИМЕР.
                 -------------------

     ЕСЛИ ВЫ НОВИЧОК В ПРОГРАММИРОВАНИИ  НА  АССЕМБЛЕРЕ,  ВНИМА-
ТЕЛЬНО ПРОРАБОТАЙТЕ ПРИВЕДЕННЫЕ НИЖЕ  ПРИМЕРЕ.  ЗАПОМНИТЕ,  ЧТО
"ENTER" ИСПОЛЬЗУЕТСЯ ДЛЯ ОБОЗНАЧЕНИЯ НАЖАТИЯ КЛАВИШИ "ENTER" НА
КЛАВИАТУРЕ.

                   РАБОЧИЙ ПЛАН.

     1. НАПИСАТЬ ПРОГРАММУ УМНОЖЕНИЯ И ЗАПИСАТЬ  ЕЕ  НА  ЛЕНТУ,
        ИСПОЛЬЗУЯ КОМАНДУ РЕДАКТОРА "Р" ТАК, ЧТОБЫ ЛЕГКО  БЫЛО
        ИСПРАВЛЯТЬ ВСЕ ВОЗМОЖНЫЕ ОШИБКИ.
     2. ОТЛАДИТЬ ПРОГРАММУ УМНОЖЕНИЯ, РЕДАКТИРУЯ ЕЕ ПРИ НЕОБХО-
        ДИМОСТИ.
     3. ЗАПИСАТЬ ОТЛАЖЕННУЮ ПРОГРАММУ НА ЛЕНТУ,  ИСПОЛЬЗУЯ  КО-
        МАНДУ РЕДАКТОРА "T", ЧТОБЫ ЭТА ПРОГРАММА МОГЛА ВКЛЮЧАТЬ
        В  ДРУГИЕ ПРОГРАММЫ.

     СНАЧАЛА ВВЕДИТЕ GENS3: LOAD "" CODE 24064 ; И  НА  ЗАПРОС:
BUFFER SIZE ? ; ОТВЕТЕ :1 "ENTER", ТЕМ САМЫМ СОЗДАВ БУФЕР  РАЗ-
МЕРОМ 256 БАЙТ. УКАЗАТЕЛЬ ">" ГОВОРИТ, ЧТО ВЫ НАХОДИТЕСЬ В  РЕ-
ЖИМЕ РЕДАКТОРА И МОЖЕТЕ ПРИСТУПАТЬ К ВВОДУ ТЕКСТА ПРОГРАММЫ.

             НАПИСАНИЕ ПРОГРАММЫ УМНОЖЕНИЯ.

     ДЛЯ ВВОДА ТЕКСТА ПРОГРАММЫ ИСПОЛЬЗУЕТСЯ КОМАНДА  РЕДАКТОРА
"I". УПРАВЛЯЮЩАЯ ФУНКЦИЯ "CI" (ЗНАК ТАБУЛЯЦИИ) ПРИМЕНЯЕТСЯ  ДЛЯ
ПОЛУЧЕНИЯ ТАБУЛИРОВАННОГО ЛИСТИНГА.


**************************************************************
*                                                            *
* ВНИМАНИЕ! АДРЕСА, УКАЗЫВАЕМЫЕ В ЭТОМ ПРИЛОЖЕНИИ, МОГУТ НЕ *
*           СООТВЕТСТВОВАТЬ АДРЕСАМ В ВАШЕЙ КОМП'ЮТЕРЕ, ОНИ  *
*           ДАНЫ ТОЛЬКО ДЛЯ ПРИМЕРА.                         *
*                                                            *
**************************************************************

        I 10,10 "ENTER"
10  ;  A FAST INTEGER MULTIPLY                  "ENTER"
20  ;  ROUTINE. MULTIPLIES HL                   "ENTER"
30  ;  BY DE. RETURN THE RESULT                 "ENTER"
40  ;  IN HL. C FLA SET ON FN                   "ENTER"
50  ;  OVERFOW.                                 "ENTER"
60                                              "ENTER"
70  ;  ORG        7F00                          "ENTER"
80                                              "ENTER"
90  ;  MULT     OR      A                       "ENTER"
100             SBC     HL,DE   ; HL > DE       "ENTER"
110             ADD     HL,DE                   "ENTER"
130             JR      NC,MUL  ; YES           "ENTER"
140 ;MUL        OR      D                       "ENTER"
150             SCF             ; OVERFLOW IF   "ENTER"
160             RET     NZ      ; DE > 255      "ENTER"
170             OR      E       ; TIMES 0       "ENTER"
180             LD      E,D                     "ENTER"
190             JR      NZ,MU5  ; NO            "ENTER"
200             EX      DE,HL   ; 0             "ENTER"
210             RET                             "ENTER"
220                                             "ENTER"
230 ;  MINE ROUTINE                             "ENTER"
240                                             "ENTER"
250 MU2         EX      DE,HL                   "ENTER"
260             ADD     HL,DE                   "ENTER"
270             EX      DE,HL                   "ENTER"
280 MU3         ADD     HL,HL                   "ENTER"
290             RET     C        ; OVERFLOW     "ENTER"
300 MU4         RRA                             "ENTER"
310             JR      NC,MU3                  "ENTER"
320             JR      A                       "ENTER"
330             JR      NZ,MU2                  "ENTER"
340             ADD     HL,DE                   "ENTER"
350             RET                             "ENTER"
360 CC
> P 10,350
>

     В РЕЗУЛЬТАТЕ ТЕКСТ ПРОГРАММЫ БУДЕТ СОЗДАН  И  СОХРАНЕН  НА
ЛЕНТЕ. НЕ ЗАБУДЬТЕ ВКЛЮЧИТЬ МАГНИТОФОН В  РЕЖИМ  "ЗАПИСЬ"  ПЕРЕД
ВЫПОЛНЕНИЕМ КОМАНДЫ "Р".

                ОТЛАДКА ПРОГРАММЫ.

     СНАЧАЛА ПРОВЕРИМ, НЕТ ЛИ В  ПРОГРАММЕ  ОШИБОК  ТРАНСЛЯЦИИ,
БЕЗ ВЫДАЧИ ЛИСТИНГА ДЛЯ ЭТОГО ИСПОЛЬЗУЕМ РЕЖИМ  ТРАНСЛЯТОРА  "6"
(ТРАНСЛЯЦИЯ БЕЗ ВЫДАЧИ ЛИСТИНГА И РЕГЕНЕРАЦИИ ОБ'ЕКТНЫХ КОДОВ).

> А              "ENTER"
TABLE SIZE:      "ENTER" (РАЗМЕР ТАБЛИЦЫ СИМВОЛОВ ПО УМОЛЧАНИЮ)
ОРTIONS : 6
                 * HISOFT GENS3 ASSEMBLER *
                   COPYRIGHT HISOFT 1983
                    ALL RIGHTS RESERVED
                    PASS 1 ERORRS : 00
                    PASS 2 ERORRS : 00
                 * WARNING * MU5 ABSENT
                 TABLE  USED 74 FROM 161

        В СТРОКЕ 190 ИМЕЮТСЯ ОШИБКИ: ВМЕСТО МU4 НАБРАНО МU5.
ИСПРАВИМ ЭТУ ОШИБКУ:

>F190,190,MU5,MU4
  190   JR      NZ       (ТЕПЕРЬ ИСПОЛЬЗУЕМ ПОДКОМАНДУ "S")
>

     ПРОАССЕМБЛИРОВАВ ПРОГРАММУ ВТОРИЧНО, УБЕДИМСЯ В ОТСУТСТВИИ
ОШИБОК. ТЕПЕРЬ НЕОБХОДИМО НАПИСАТЬ ПРОГРАММУ ДЛЯ ПРОВЕРКИ  ПРА-
ВИЛЬНОСТИ РАБОТЫ ПРОГРАММЫ УМНОЖЕНИЯ.

>N 300,10    (ПЕРЕНУМЕРАЦИЯ)                           "ENTER"
>I 10,10                                               "ENTER"

 10 ; THE MULT ROUNINE                                 "ENTER"
 20 ; TEST CODES                                       "ENTER"
 30                                                    "ENTER"
 40      LD       HL,50                                "ENTER"
 50      LD       DE,20                                "ENTER"
 60      CALL     MULT           ; MULTIPLY            "ENTER"
 70      LD       A,H            ; O/P RESULT          "ENTER"
 80      CALL     AOUT                                 "ENTER"
 90      LD       A,L                                  "ENTER"
 100     CALL     AOUT                                 "ENTER"
 110     RET                     ; RETURN NO EDITOR    "ENTER"
 120                                                   "ENTER"
 130 ; ROUTINE TO C/P A IN HEХ                         "ENTER"
 140                                                   "ENTER"
 150 AOUT          PUSH     AF                         "ENTER"
 160               RRCA                                "ENTER"
 170               RRCA                                "ENTER"
 180               RRCA                                "ENTER"
 190               RECA                                "ENTER"
 200               CALL     NIBLE                      "ENTER"
 210               POP      AF                         "ENTER"
 220 NIBLE         AND      %1111                      "ENTER"
 230               ADD      A, 90                      "ENTER"
 240               DAA                                 "ENTER"
 250               ADC      A, 40                      "ENTER"
 260               DAA                                 "ENTER"
 270               LD       TY, 5C3A  ; FOR ROM        "ENTER"
 280               RST       10       ; ROM CALL       "ENTER"
 290               RAT                                 "ENTER"
 300 CC
 >

     ТЕПЕРЬ ПРОАССЕМБЛИРУЕМ ПЕРВИЧНУЮ ПРОГРАММУ  ВМЕСТЕ  С  ПОД-
ПРОГРАММОЙ УМНОЖЕНИЯ:

        >А                   "ENTER"
        TABLE SIZE :         "ENTER"
        OPTIONS  : 6         "ENTER"


           ****************************
           *                          *
           *      ЗАСТАВКА GENS3      *
           *                          *
           ****************************

     7EAC       190     RECA
     * ERORR    * 02   (НАЖМИТЕ ЛЮБУЮ КЛАВИШУ ДЛЯ ПРОДОЛЖЕНИЯ)
     PASS 1     EROORS : 01
     NFBLE USED  : 88     FROM     210
     >

     В ПРОГРАММЕ ОДНА ОШИБКА - В СТРОКЕ 190 ВМЕСТО RRCA НАБРАНО
RECA. ИСПРАВИМ ЭТУ ОШИБКУ:

        >Е190                     "ENTER"
        190          RECA
ПРОГРАММЫ. ЭТО ДОСТИГАЕТСЯ ПРИ ПОМОЩИ ДИРЕКТИВЫ ENT:)"ENTER"

        >300            ЕNТ         <АДРЕС>           "ENTER"

     ТЕПЕРЬ ПРОАССЕМБЛИРУЕМ СНОВА И ПОЛУЧИМ:4 (БЕЗ ЛИС-
ТИНГА). ПРОГРАММА БУДЕТ ОТТРАНСЛИРОВАНА ВЕРНО. ДОПУСТИМ, ЧТО  ЭТО
ТАК, И МЫ МОЖЕМ ПРОВЕРИТЬ РОГРАММTABLE USED 88 FROM  211ТЬ  РЕ-
ДАКТОРУ АДРЕС НАЧАЛ EXECUTES : 32416

     ИЛИ ЧТО НИБУДЬ ПОДОБНОЕ, ПОСЛЕ ЧЕГО МОЖНО ВЫПОЛНИТЬ  ПРОГ-
РАММУ, ИСПОЛЬЗУЯ КОМАНДУ РЕДАКТОРА "R". В РЕЗУЛЬТАТЕ ВЫПОЛНЕНИЯ
ПРОГРАММЫ (УМНОЖЕНИЯ 20 НА 50) ОЖИДАЕМ ПОЛУЧИТЬ 1000 ИЛИ 03Е8 В
ШЕСТНАДЦАТИРИЧНОЙ СИСТЕМЕ СЧИСЛЕНИЯ.

        >R
        0032>

     НЕ РАБОТАЕТ! ПОЧЕМУ? ПОСМОТРИТЕ СТРОКИ 380-500 (L380,500).
ВЫ УВИДИТЕ В СТРОКЕ 430 ИНСТРУКЦИЮ "ОR D", ЗА  КОТОРОЙ  СЛЕДУЕТ
"RET NZ". KОГДА ВЫПОЛНЯЕТСЯ ЛОГИЧЕСКОЕ ОR МЕЖДУ АККУМУЛЯТОРОМ И
РЕГИСТРОМ D В СЛУЧАЕ  НЕ  НУЛЕВОГО  РЕЗУЛЬТАТА  УСТАНАВЛИВАЕТСЯ
ФЛАГ "С". ЦЕЛЬ ЭТИХ ДЕЙСТВИЙ - УБЕДИТЬСЯ,ЧТО DE  <  256,  ЧТОБЫ
ПРИ УМНОЖЕНИИ НЕ ПРОИЗОШЛО ПЕРЕПОЛНЕНИЯ. ЭТО УСЛОВИЕ ВЫПОЛНЯЕТ-
СЯ, ЕСЛИ "А" ТАКЖЕ РАВЕН 0. ПОЭТОМУ  ПРЕДВАРИТЕЛЬНО  НЕОБХОДИМО
ОЧИСТИТЬ АККУМУЛЯТОР, ИНАЧЕ ПОЛУЧИМ НЕ ПРЕДСКАЗУЕМОЕ ПЕРЕПОЛНЕ-
НИЕ. ПРОСМАТРИВАЯ ПРОГРАММУ, ЗАМЕТИМ, ЧТО В СТРОКЕ 380  "ОR  А"
МОЖНО ЗАМЕТИТЬ НА "XOR A", УСТАНОВИВ ФЛАГИ ДЛЯ ИНСТРУКЦИИ  "SBC
HL,DE" И ОБНУЛИВ АККУМУЛЯТОР.

        >Е380                "ENTER"
        380 MULT          OR        A
        380          I   (РЕЖИМ ВСТАВКИ)   Х "ENTER"   "ENTER"

     АССЕМБЛИРУЕМ СЛОВА (РЕЖИМ 4). ЗАПУСКАЕМ ПРОГРАММУ, ИСПОЛЬ-
ЗУЯ "R". ОТВЕТ БУДЕТ ПРАВИЛЬНЫЙ : 3Е8.

     ВЫ МОЖЕТЕ УБЕДИТЬСЯ В ПРАВИЛЬНОЙ РАБОТЕ ПРОГРАММЫ,  РЕДАК-
ТИРУЯ СТРОКИ 20 И 40 ДЛЯ ДЛЯ УМНОЖЕНИЯ РАЗЛИЧНЫХ ЧИСЕЛ И  ЗАТЕМ
ТРАНСЛИРУЯ И ЗАПУСКАЯ ЕЕ.

     В ЗАВЕРШЕНИИ ВЫ МОЖЕТЕ ЗАПИСАТЬ ПРОГРАММУ НА ЛЕНТУ В  ФОР-
МАТЕ, ДОПУСКАЮЩЕМ ДАЛЬНЕЙШЕЕ "ВКЛЮЧЕНИЕ" ТЕКСТА В ДРУГИЕ ПРОГ-
РАММЫ.

        >Т 300,999,МULТ         "ЕNTЕR"

     ВНИМАНИЕ! ЗАПУСКАТЬ МАГНИТОФОН В РЕЖИМЕ "ЗАПИСЬ"  НЕОБХО-
ДИМО ДО НАЖАТИЯ "ЕNTER".


                  ПРИЛОЖЕНИЕ D
                -----------------

ПРИМЕР ОСНОВНОГО ЭКРАНА:

710С            2007             JR
PC   710C           20 07 EB C9  EB 19 EB
SP   D0AF           8A 70 06 03  0A 03 0D
IY   0F6A           0D 11 0C 0F  09 18 18
IX   DO0F           04 03 04 00  00 00 1B
HL   2A18           DF FE 29 28  02 CF 02
DE   0000           F3 AF 11 FF  FF C3 CB
BC   0004           FF C3 CB 11  2F 5D 5C
AF   0304                V
IR   3F7C

7100   AF           7108  37     7110  EB
7101   ED           7109  C0     7111  19
7102   52           710A  83     7112  EB
7103   19           710B  5A     7113  29
7104   30          >710C  20<    7114  D8
7105   EB           710E  E8     7116  30
7107   B2           710F  09     7117  EB
 >

     ПРИМЕР СООТВЕТСТВУЕТ ПРИМЕРУ ИЗ ОПИСАНИЯ  КОМАНДЫ  "SIMBOL
SHIFT И Z". СПРАВА ОТ СОДЕРЖИМОГО РЕГИСТРОВ ОТОБРАЖАЕТСЯ 7  БАЙТ
ПАМЯТИ ПО АДРЕСУ СОДЕРЖАЩЕМУСЯ В СООТВЕТСТВУЮЩЕМ РЕГИСТРЕ.  РЕ-
ГИСТР ФЛАГОВ ДЕКОДИРУЕТСЯ И ОТОБРАЖАЕТСЯ В ВИДЕ СООТВЕТСТВУЮЩИХ
БИТОВ - ФЛАГОВ. УКАЗАТЕЛЬ РЕГИСТРОВ " "  УКАЗЫВАЕТ  НА  ТЕКУЩИЙ
АДРЕСУЕМЫЙ РЕГИСТР (СМ. "ИЗМЕНЕНИЕ РЕГИСТРОВ"), КОМАНДА ВВОДИТ-
СЯ В НИЖНЕЙ СТРОКЕ ПОСЛЕ УКАЗАТЕЛЯ ">".



СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Nonsense - вывод и печать спрайтов на спектруме.
Оттяг - Тест "Ты случайно не тупая задница".
NEWS - О новинках на игровом рынке: ЧЕРНЫЙ ВОРОН новые миссии, THE CEZAR, DILLER, BABYLON, SUPER LASER SQUAD.
ZXNet - Гейтование почты с новой сети SuperNet.
Авторы

В этот день...   25 апреля