ОПЕРАЦИОННАЯ СИСТЕМА ФОДОС-2 АССЕМБЛЕР РУКОВОДСТВО ПРОГРАММИСТА 589.7545471.00042-01 33 02 ЛИСТОВ 49 1985 АННОТАЦИЯ НАСТОЯЩИЙ ДОКУМЕНТ ЯВЛЯЕТСЯ РУКОВОДСТВОМ ПРОГРАММИСТА И ОПЕРАТОРА ПО РАБОТЕ С ТРАНСЛЯТОРОМ АССЕМБЛЕР (МАСRО). ТРАНСЛЯТОР ПРЕДНАЗНАЧЕН ДЛЯ ПЕРЕВОДА ПРОГРАММ С ЯЗЫКА АССЕМБЛЕР В ПРОГРАММУ НА МАШИННОМ ЯЗЫКЕ С ИНФОРМАЦИЕЙ ДЛЯ ПРОГРАММЫ РЕДАКТОР СВЯЗЕЙ. ДОКУМЕНТ СОДЕРЖИТ СВЕДЕНИЯ ОБ ОСНОВНЫХ ХАРАКТЕРИСТИКАХ ТРАНСЛЯТОРА, СТРУКТУРЕ ВХОДНЫХ И ВЫХОДНЫХ ДАННЫХ И СПОСОБЕ ИСПОЛЬЗОВАНИЯ. ПЕРЕД ИСПОЛЬЗОВАНИЕМ НАСТОЯЩЕГО ДОКУМЕНТА РЕКОМЕНДУЕТСЯ ОЗНАКОМИТЬСЯ СО СЛЕДУЮЩИМИ ДОКУМЕНТАМИ: [1] , [2]. 1. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ ПРОГРАММЫ ДАННЫЙ ДОКУМЕНТ ЯВЛЯЕТСЯ РУКОВОДСТВОМ ПРОГРАММИСТА ДЛЯ ТРАНСЛЯЦИИ ПРОГРАММ, НАПИСАННЫХ НА ЯЗЫКЕ АССЕМБЛЕР ОПЕРАЦИОННОЙ СИСТЕМЫ ФОДОС-2. РЕЗУЛЬТАТОМ ТРАНСЛЯЦИИ МОЖЕТ БЫТЬ: 1) ОБ'ЕКТНЫЙ МОДУЛЬ (ДОСТУПНЫЙ МАШИНЕ ЛОГИЧЕСКИЙ ЭКВИВАЛЕНТ ИСХОДНОГО МОДУЛЯ); 2) ЛИСТИНГ ИСХОДНОГО МОДУЛЯ; 3) ЛИСТИНГ ФАЙЛА ТАБЛИЦЫ ПЕРЕКРЕСТНЫХ ССЫЛОК; 4) ЛИСТИНГ ТАБЛИЦЫ СОДЕРЖАНИЙ; 5) ЛИСТИНГ ТАБЛИЦЫ ИМЕН. ДЛЯ РАБОТЫ С АССЕМБЛЕРОМ (MACRO) ПОЛЬЗОВАТЕЛЬ ДОЛЖЕН ЗНАТЬ КАК: 1) ВЫЗВАТЬ И ЗАКОНЧИТЬ РАБОТУ С ТРАНСЛЯТОРОМ MACRO, А ТАКЖЕ ОБЩИЙ ФОРМАТ КОМАНДНОЙ СТРОКИ ТРАНСЛЯТОРА; 2) ВЫВОДИТЬ ВРЕМЕННЫЕ РАБОЧИЕ ФАЙЛЫ НА УСТРОЙСТВА, КОТОРЫЕ НЕ ПРИНЯТЫ ПО УМОЛЧАНИЮ, ЕСЛИ НЕОБХОДИМО; 3) ИСПОЛЬЗУЮТСЯ ПЕРЕКЛЮЧАТЕЛИ СПЕЦИФИКАЦИИ ФАЙЛА ДЛЯ ЗАПРЕЩЕНИЯ ДЕЙСТВИЯ ДИРЕКТИВ УПРАВЛЕНИЯ ФАЙЛОМ В ИСХОДНОМ МОДУЛЕ; 4) ИНТЕРПРЕТИРУЮТСЯ КОДЫ ОШИБОК. АССЕМБЛЕР (MACRO) ПРЕДНАЗНАЧЕН ДЛЯ АВТОМАТИЗАЦИИ ПРОГРАММИРОВАНИЯ НА УРОВНЕ МАШИННО-ОРИЕНТИРОВАННОГО ЯЗЫКА. ТРАНСЛЯТОР ПЕРЕВОДИТ ПРОГРАММУ, НАПИСАННУЮ НА ЯЗЫКЕ АССЕМБЛЕР (ИСХОДНЫЙ МОДУЛЬ), В ОБ'ЕКТНУЮ ПРОГРАММУ. ТРАНСЛЯЦИЯ ОСУЩЕСТВЛЯЕТСЯ ЗА ДВА ПРОХОДА. ДЛЯ ТРАНСЛЯЦИИ ПРОГРАММ С ПОМОЩЬЮ АССЕМБЛЕРА НЕОБХОДИМО, ЧТОБЫ ИСХОДНЫЕ МОДУЛИ НАХОДИЛИСЬ НА УСТРОЙСТВАХ С ФАЙЛОВОЙ СТРУКТУРОЙ. МИНИМАЛЬНЫЙ ОБ'ЕМ ОПЕРАТИВНОЙ ПАМЯТИ ДЛЯ РАБОТЫ АССЕМБЛЕРА - 32К БАЙТ. 2. ХАРАКТЕРИСТИКИ ПРОГРАММЫ 2.1. РЕЖИМ РАБОТЫ РЕЖИМ ТРАНСЛЯЦИИ ЗАДАЕТСЯ ВВЕДЕНИЕМ С ТЕРМИНАЛА КОМАНДНОЙ СТРОКИ. ФОРМАТ КОМАНДНОЙ СТРОКИ: ОБСПФ,[ЛИСТСПФ],[ПССПФ] [/ПРК] = ВХОДСПФ,...,ВХОДСПФ [/ПРК] ГДЕ ОБСПФ - СПЕЦИФИКАЦИЯ ОБ'ЕКТНОГО ФАЙЛА (УСТРОЙСТВО, ИМЯ И ТИП ФАЙЛА). УСТРОЙСТВА ТТ: И LР: ДЛЯ ПОЛУЧЕНИЯ ОБ'ЕКТНОГО ФАЙЛА НЕ ИСПОЛЬЗУЮТСЯ; ЛИСТСПФ - СПЕЦИФИКАЦИЯ ФАЙЛА ЛИСТИНГА И ТАБЛИЦЫ ИМЕН; ПССПФ - СПЕЦИФИКАЦИЯ ВРЕМЕННОГО ФАЙЛА ПЕРЕКРЕСТНЫХ ССЫЛОК (CREF). ЕСЛИ ПССПФ НЕ УКАЗАН, ЛИСТИНГ ТАБЛИЦЫ ПЕРЕКРЕСТНЫХ ССЫЛОК ВСЕ РАВНО СОЗДАЕТСЯ; /ПРК - ОДИН ИЛИ НЕСКОЛЬКО ПЕРЕКЛЮЧАТЕЛЕЙ (ТАБЛ. 2); ВХОДСПФ - СПЕЦИФИКАЦИЯ ВХОДНОГО ФАЙЛА (ИСХОДНОГО ИЛИ ФАЙЛА МАКРОБИБЛИОТЕКИ ПОЛЬЗОВАТЕЛЯ). В КОМАНДНОЙ СТРОКЕ МОЖНО УКАЗАТЬ ДО ШЕСТИ ВХОДНЫХ ФАЙЛОВ. ЗНАЧЕНИЯ ЭЛЕМЕНТОВ СПЕЦИФИКАЦИЙ ФАЙЛОВ ПО УМОЛЧАНИЮ ПРИВЕДЕНЫ В ТАБЛ. 1. ТАБЛИЦА 1 ЗНАЧЕНИЯ ЭЛЕМЕНТОВ СПЕЦИФИКАЦИЙ ФАЙЛОВ ПО УМОЛЧАНИЮ ------------------------------------------------------------------- ! ФАЙЛ ! УСТРОЙСТВО ! ИМЯ ФАЙЛА ! ТИП ФАЙЛА ! ------------------------------------------------------------------- !ОБ'ЕКТНЫЙ ! DK: !НЕОБХОДИМО ! .OBJ ! ! ! !УКАЗАТЬ ! ! !ЛИСТИНГА !УСТРОЙСТВО,НАЗНА- !ТО ЖЕ ! .LST ! ! !ЧЕННОЕ ДЛЯ ОБ'ЕКТ-! ! ! ! !НОГО МОДУЛЯ ! ! ! !ПЕРЕКРЕСТНЫХ ! DK: ! CREF ! .ТМР ! !ССЫЛОК ! ! ! ! !ИСХОДНЫЙ !ДЛЯ ПЕРВОГО ФАЙЛА ! НЕОБХОДИМО ! .МАС ! ! !DK: !УКАЗАТЬ ! ! ! !ДЛЯ ПОСЛЕДУЮЩИХ - ! ! ! ! !ТО ЖЕ, ЧТО ДЛЯ ! ! ! ! !ПРЕДЫДУЩЕГО ! ! ! !СИСТЕМНАЯ ! SY: ! SYSMAC ! .SML ! !МАКРО- ! ! ! ! !БИБЛИОТЕКА ! ! ! ! !МАКРО- !ДЛЯ ПЕРВОГО ФАЙЛА ! НЕОБХОДИМО ! .MLB ! !БИБЛИОТЕКА !DK: !УКАЗАТЬ ! ! !ПОЛЬЗОВАТЕЛЯ !ДЛЯ ПОСЛЕДУЮЩИХ - ! ! ! ! !ТО ЖЕ, ЧТО ДЛЯ ! ! ! ! !ПРЕДЫДУЩЕГО ! ! ! ------------------------------------------------------------------- СПЕЦИФИКАЦИИ ВЫХОДНЫХ ФАЙЛОВ (ОБ'ЕКТНОГО ФАЙЛА, ФАЙЛА ЛИСТИНГА, ВРЕМЕННОГО ФАЙЛА ПЕРЕКРЕСТНЫХ ССЫЛОК) НЕ ОБЯЗАТЕЛЬНЫ. Т.Е. СИСТЕМА НЕ СОЗДАЕТ ВЫХОДНОЙ ФАЙЛ, ЕСЛИ КОМАНДНАЯ СТРОКА НЕ СОДЕРЖИТ СПЕЦИФИКАЦИЮ ДАННОГО ФАЙЛА. ЧАСТЬ СПЕЦИФИКАЦИИ ФАЙЛА МОЖНО НЕ УКАЗЫВАТЬ - СМ. ТАБЛ. 1. СИСТЕМА ОПРЕДЕЛЯЕТ, КАКОЙ ВЫХОДНОЙ ФАЙЛ ДОЛЖЕН БЫТЬ СОЗДАН ПРИ ТРАНСЛЯЦИИ ПО ПОЛОЖЕНИЮ СПЕЦИФИКАЦИИ ФАЙЛА В КОМАНДНОЙ СТРОКЕ. ЕСЛИ КАКОЙ-ЛИБО ВЫХОДНОЙ ФАЙЛ НЕ НАДО СОЗДАВАТЬ, В КОМАНДНОЙ СТРОКЕ НА МЕСТЕ СПЕЦИФИКАЦИИ ДАННОГО ФАЙЛА СЛЕДУЕТ УКАЗАТЬ ЗАПЯТУЮ, НО НЕ ТРЕБУЕТСЯ СТАВИТЬ ЗАПЯТУЮ ПОСЛЕ СПЕЦИФИКАЦИИ ПОСЛЕДНЕГО НУЖНОГО ВЫХОДНОГО ФАЙЛА. 2.2. ВРЕМЕННЫЙ РАБОЧИЙ ФАЙЛ ЕСЛИ ПРИ ТРАНСЛЯЦИИ ТАБЛИЦЕ ИМЕН НЕОБХОДИМА ОБЛАСТЬ ПАМЯТИ БОЛЬШЕГО РАЗМЕРА, ЧЕМ ЕЙ ОТВОДИТСЯ, СИСТЕМА АВТОМАТИЧЕСКИ СОЗДАЕТ ВРЕМЕННЫЙ РАБОЧИЙ ФАЙЛ WRK.TMP ДЛЯ РАСШИРЕНИЯ ОБЛАСТИ ТАБЛИЦЫ ИМЕН. ПО УМОЛЧАНИЮ ФАЙЛ WRK.TMP СОЗДАЕТСЯ НА УСТРОЙСТВЕ DK:. ЧТОБЫ НАЗНАЧИТЬ ДРУГОЕ УСТРОЙСТВО ПО УМОЛЧАНИЮ ДЛЯ СОЗДАНИЯ ВРЕМЕННОГО РАБОЧЕГО ФАЙЛА, СЛЕДУЕТ ПОДАТЬ КОМАНДУ: .ASSIGN УСТ: TMP ГДЕ УСТ: - ПОСТОЯННОЕ ИМЯ УСТРОЙСТВА ФАЙЛОВОЙ СТРУКТУРЫ, КУДА БУДЕТ ВЫВОДИТЬСЯ ФАЙЛ WRK.TMP. ПОСЛЕ ДАННОЙ КОМАНДЫ СИСТЕМА СОЗДАЕТ ФАЙЛ WRK.TMP НА УКАЗАННОМ УСТРОЙСТВЕ. 2.3. ПЕРЕКЛЮЧАТЕЛИ ИСПОЛЬЗУЯ ПЕРЕКЛЮЧАТЕЛИ ПРОГРАММЫ АССЕМБЛЕР, ПОЛЬЗОВАТЕЛЬ МОЖЕТ ЗАПРЕТИТЬ ДЕЙСТВИЕ ДИРЕКТИВ ЯЗЫКА АССЕМБЛЕР ИСХОДНОЙ ПРОГРАММЫ. ПЕРЕКЛЮЧАТЕЛИ, ДОПУСТИМЫЕ В КОМАНДНОЙ СТРОКЕ, ПРИВЕДЕНЫ В ТАБЛ. 2. ТАБЛИЦА 2 ПЕРЕКЛЮЧАТЕЛИ ПРОГРАММЫ АССЕМБЛЕР -------------------------------------------------------- ! КЛЮЧ ! НАЗНАЧЕНИЕ ! !------------------------------------------------------! ! /L:APГ ! ОПРЕДЕЛЯЕТ ФОРМАТ И СОДЕРЖАНИЕ ЛИСТИНГА;! ! ! ЗАПРЕЩАЕТ ДИРЕКТИВУ .NLISТ ИСХОДНОЙ ! ! ! ПРОГРАММЫ ! ! /N:АPГ ! ОПРЕДЕЛЯЕТ ФОРМАТ И СОДЕРЖАНИЕ ЛИСТИНГА;! ! ! ЗАПРЕЩАЕТ ДИРЕКТИВУ .LISТ ИСХОДНОЙ ! ! ! ПРОГРАММЫ ! ! /Е:АРГ ! РАЗРЕШАЕТ ОПРЕДЕЛЕННЫЕ ФУНКЦИИ ПРИ ! ! ! ТРАНСЛЯЦИИ И ПРИ ФОРМИРОВАНИИ ОБ'ЕКТНОГО ! ! ! МОДУЛЯ; ЗАПРЕЩАЕТ ДИРЕКТИВУ .DSABL ! ! ! ИСХОДНОЙ ПРОГРАММЫ ! ! /D:АРГ ! ЗАПРЕЩАЕТ ОПРЕДЕЛЕННЫЕ ФУНКЦИИ ПРИ ! ! ! ТРАНСЛЯЦИИ И ПРИ ФОРМИРОВАНИИ ОБ'ЕКТНОГО ! ! ! МОДУЛЯ; ЗАПРЕЩАЕТ ДИРЕКТИВУ .ЕNABL ! ! ! ИСХОДНОЙ ПРОГРАММЫ ! ! /М ! УКАЗЫВАЕТ, ЧТО ВХОДНОЙ ФАЙЛ ЯВЛЯЕТСЯ ! ! ! ФАЙЛОМ МАКРОБИБЛИОТЕКИ ! ! /С:АРГ ! ОПРЕДЕЛЯЕТ СОДЕРЖАНИЕ ТАБЛИЦЫ ! ! ! ПЕРЕКРЕСТНЫХ ССЫЛОК ! -------------------------------------------------------- ПРИМЕЧАНИЕ. ПЕРЕКЛЮЧАТЕЛЬ /М ДЕЙСТВУЕТ ТОЛЬКО НА ТОТ ФАЙЛ, ЗА СПЕЦИФИКАЦИЕЙ КОТОРОГО ОН СЛЕДУЕТ В КОМАНДНОЙ СТРОКЕ. ВСЕ ДРУГИЕ ПЕРЕКЛЮЧАТЕЛИ ПРОГРАММЫ АССЕМБЛЕР МОГУТ БЫТЬ УКАЗАНЫ В ЛЮБОМ МЕСТЕ КОМАНДНОЙ СТРОКИ. ПРИМЕРЫ: 1Н *DK:BINF.OBJ,LP:=DK:SRC.MAC ПО ДАННОЙ КОМАНДНОЙ СТРОКЕ ТРАНСЛИРУЕТСЯ ФАЙЛ SRC.MAC И СОЗДАЕТСЯ ОБ'ЕКТНЫЙ ФАЙЛ DK:BINF.OBJ, ЛИСТИНГ ВЫВОДИТСЯ НА LP:. 2. *,LP:/C=DK:SRC.MAC ПО ДАННОЙ КОМАНДНОЙ СТРОКЕ НА LP: ВЫВОДИТСЯ ЛИСТИНГ, ВКЛЮЧАЯ ВРЕМЕННЫЙ ФАЙЛ ПЕРЕКРЕСТНЫХ ССЫЛОК. ЮНИЖЕ ОПИСАНЫ ВСЕЮПЕРЕКЛЮЧАТЕЛИ ПРОГРАММЫ АССЕМБЛЕР.@ Ю Р.3.1. ПЕРЕКЛЮЧАТЕЛИ УПРАВЭЕНИЯ ЛИСТИНГОЩ (/L:АРГ И /N:АРГ) ПЕРЕКЛЮЧАТЕЛИ /L:АРГ И Ю/N:АРГ ОПРЕДЕЛЯЮТ ФОРМАТ И СОДЕРЖАНИЕ ЛИСТИНГА. АРГУМЕНТЫ ПЕРЕКЛЮЧАТЕЛЕЙ ПРИВЕДЕНЫ В ТАБЛ. 3. ИСПОЛЬЗУЯ ДАННЫЕ ПЕРЕКЛЮЧАТЕЛИ, МОЖНО ЗАПРЕТИТЬ ВО ВРЕМЯ ТРАНСЛЯЦИИ ДЕЙСТВИЕ ДИРЕКТИВ ИСХОДНОЙ ПРОГРАММЫ .LIST И .NLIST С ОПРЕДЕЛЕННЫМИ АРГУМЕНТАМИ: ПЕРЕКЛЮЧАТЕЛЬ /L:АРГ ЗАПРЕЩАЕТ ДЕЙСТВИЕ ДИРЕКТИВЫ .LIST АРГ. ЮАРГУМЕНТЫ ПЕРЕКЛЮЧАТЕЛЯ И АРГУМЕНТЫ ДИРЕКТИВЫ В ЭТОМ СЛУЧАЕЮ ДОЛЖНЫ СОВПАДАТЬ. Ю ОПИСАНИЕ ДИРЕКТИВ .LIST И .NLIST ПРИВЕДЕНО В ДОКУМЕНТЕ [2] . ```` ПЕРЕКЛЮЧАТЕЛИ УПРАВЛЕНИЯЮЛИСТИНГОМ МОГУТ ИСПОЛЬЗОВАТЬСЯ БЕЗ АРГУМЕНТОВ: ПОЮ/L ЗАПРЕЩАЕТСЯ ДЕЙСТВИЕ ДИРЕКТИВ НLIST И НNLIST,`КОТОРЫЕ НЕ ИМЕЮТЮАРГУМЕНТОВ; ПО /N СИСТЕМА ВКЛЮЧАЕТ В ЛИСТИНГ ТОЛЬКО ТАБЛИЦУ ИМЕН, ТАБЛИЦУ СОДЕРЖАНИЯ И СООБЩЕНИЯЮОБЮОШИБКАХ. ПРИМЕР. *I,LP:/L:MEB/N:SYM=FILE ПО ДАННОЙ КОМАНДНОЙ СТРОКЕ ТРАНСЛИРУЕТСЯ ФАЙЛ FILE.MAC И НА LP: `ВЫВОДИТСЯ ЛИСТИНГ (С ШИРИНОЙ СТРОКИ 1С2 СИМВОЛА), БЕЗ ТАБЛИЦЫ ИМЕН (ПО /N:SYM), НО ВКЛЮЧАЯ ОПЕРАТОРЫ МАКРОРАСШИРЕНИЙ, ПОРОЖДАЮЩИЕ ОБ'ЕКТНЫЕ КОДЫ (ПО /L:MEB), И СОЗДАЕТСЯ ОБ'ЕКТНЫЙ ФАЙЛ I.OBJ. ` ТАБЛИЦА 3 АРГУМЕНТЫ ПЕРЕКЛЮЧАТЕЛЕЙ ОL:АРГ И /N:АРГ ------------------------------------------------------------------------- ! ! ДЕЙСТВИЕ ! ! ! АPГУМЕНТ ! ПО ! НАЗНАЧЕНИЕ ! ! !УМОЛЧАНИЮ ! ! ------------------------------------------------------------------------- ! SEQ !РАЗРЕШАЕТ ! ВКЛЮЧАТЬ В ЛИСТИНГ ПОРЯДКОВЫЕ НОМЕРА ! ! ! ! СТРОК ИСХОДНОЙ ПРОГРАММЫ ! ! LOC ! -"- ! ПЕЧАТЬ ЗНАЧЕНИЯ СЧЕТЧИКА АДРЕСА ! ! BIN ! -"- ! ПЕЧАТЬ ОБ'ЕКТНЫХ КОДОВ В ВОСЬМЕРИЧНОМ ВИДЕ ! ! BEX ! -"- ! ПЕЧАТЬ ОБ'ЕКТНЫХ КОДОВ В ВОСЬМЕРИЧНОМ ! ! ! ! ВИДЕ, РАСПОЛОЖЕННЫХ НА НЕСКОЛЬКИХ СТРОКАХ ! ! SRC ! -"- ! ПЕЧАТЬ ОПЕРАТОРОВ ИСХОДНОЙ ПРОГРАМMЫ ! ! COM ! -"- ! ПЕЧАТЬ КОММЕНТАРИЯ ! ! MD ! -"- ! ПЕЧАТЬ МАКРООПРЕДЕЛЕНИЙ И РАСШИРЕНИЙ ! ! ! ! ОБЛАСТЕЙ ПОВТОРЕНИЙ ! ! MC ! -"- ! ПЕЧАТЬ МАКРОКОМАНДЫ РАСШИРЕНИЙ ! ! ! ! ОБЛАСТЕЙ ПОВТОРЕНИЙ ! ! ME !ЗАПРЕЩАЕТ ! ПЕЧАТЬ МАКРОРАСШИРЕНИЙ ! ! MEB !ЗАПРЕЩАЕТ ! ПЕЧАТЬ ОПЕРАТОРОВ МАКРОРАСШИРЕНИЙ, ! ! ! ! ПОРОЖДАЮЩИХ ОБ'ЕКТНЫЕ КОДЫ ! ! CND !РАЗРЕШАЕТ ! ПЕЧАТЬ БЛОКОВ УСЛОВНОЙ ТРАНСЛЯЦИИ ! ! LD !ЗАПРЕЩАЕТ ! ДЕЙСТВИЕ ДИРЕКТИВ .LIST И .NLIST ! ! ! ! ИСХОДНОЙ ПРОГРАММЫ, В КОТОРЫХ НЕТ АРГУМЕНТОВ ! ! TOC !РАЗРЕШАЕТ ! ПЕЧАТЬ ТАБЛИЦЫ СОДЕРЖАНИЯ ! ! TTM !ПЕЧАТЬ В ! УПРАВЛЯТЬ ФОРМАТОМ ПЕЧАТИ ОБ'ЕКТНЫХ ! ! !СТРОКУ ! КОДОВ И ТАБЛИЦЫ ИМЕН (СМ. РИС. 1) ! ! ! ! ПРИВЕДЕН ФОРМАТ, ЗАДАННЫЙ ПЕРЕКЛЮЧАТЕЛЕМ /L:TTM ! ! SYM ! -"- ! ПЕЧАТЬ ТАБЛИЦЫ ИМЕН ! ------------------------------------------------------------------------- 2.3.2. ПЕРЕКЛЮЧАТЕЛИ УПРАВЛЕНИЯ ФУНКЦИЯМИ (/D:АРГ И /E:АРГ) ПЕРЕКЛЮЧАТЕЛИ /D:АРГ И /E:АРГ ПОЗВОЛЯЮТ РАЗРЕШАТЬ ИЛИ ЗАПРЕЩАТЬ ОПРЕДЕЛЕННЫЕ ФУНКЦИИ ВО ВРЕМЯ ТРАНСЛЯЦИИ И, ТАКИМ ОБРАЗОМ, ВЛИЯТЬ НА ФОРМУ И СОДЕРЖАНИЕ ДВОИЧНОГО ОБ'ЕКТНОГО ФАЙЛА. АРГУМЕНТЫ ПЕРЕКЛЮЧАТЕЛЕЙ ПРИВЕДЕНЫ В ТАБЛ. 4. ИСПОЛЬЗУЯ ДАННЫЕ ПЕРЕКЛЮЧАТЕЛИ, МОЖНО ЗАПРЕТИТЬ ДЕЙСТВИЕ ДИРЕКТИВ ИСХОДНОЙ ПРОГРАММЫ .ENABLE И .DSABL С ОПРЕДЕЛЕННЫМИ АРГУМЕНТАМИ: - ПЕРЕКЛЮЧАТЕЛЬ /E:АРГ ЗАПРЕЩАЕТ ДЕЙСТВИЕ ДИРЕКТИВЫ .DSABLE АРГ; - ПЕРЕКЛЮЧАТЕЛЬ /D:АРГ ЗАПРЕЩАЕТ ДЕЙСТВИЕ ДИРЕКТИВЫ .ENABLE АРГ. АРГУМЕНТЫ ПЕРЕКЛЮЧАТЕЛЯ И АРГУМЕНТЫ ДИРЕКТИВЫ В ЭТОМ СЛУЧАЕ ДОЛЖНЫ СОВПАДАТЬ. ОПИСАНИЕ ДИРЕКТИВ .ENABLE И .DSABLE СМ. В [2]. ПРИМЕР. *,LP:=SRCPRG.MAC/E:CDR ПО ДАННОЙ КОМАНДНОЙ СТРОКЕ ТРАНСЛИРУЕТСЯ ФАЙЛ SRCPRG.MAC, ЛИСТИНГ ВЫВОДИТСЯ НА LP:. ВСЯ ИСХОДНАЯ ИНФОРМАЦИЯ ЗА 72 КОЛОНКОЙ РАССМАТРИВАЕТСЯ КАК КОММЕНТАРИЙ. ТАБЛИЦА 4 АРГУМЕНТЫ ПЕРЕКЛЮЧАТЕЛЕЙ /E:АРГ И /D:АРГ ------------------------------------------------------------------------- !АРГУМЕНТ ! ДЕЙСТВИЕ ! ! ! ! ПО ! НАЗНАЧЕНИЕ ! ! ! УМОЛЧАНИЮ ! ! ------------------------------------------------------------------------- ! ABS ! ЗАПРЕЩАЕТ ! ВЫВОД В АБСОЛЮТНОМ ДВОИЧНОМ ФОРМАТЕ ! ! AMA ! ЗАПРЕЩАЕТ ! АБСОЛЮТНЫЕ АДРЕСА (КОД МЕТОДА ! ! ! ! АДРЕСАЦИИ 67) ТРАНСЛИРОВАТЬ КАК ! ! ! ! ОТНОСИТЕЛЬНЫЕ (КОД МЕТОДА АДРЕСАЦИИ 37) ! ! CDR ! ЗАПРЕЩАЕТ ! РАССМАТРИВАТЬ ИНФОРМАЦИЮ ЗА 72 КО- ! ! ! ! ЛОНКОЙ КАК КОММЕНТАРИЙ ! ! CRF ! РАЗРЕШАЕТ ! ВЫВОД ЛИСТИНГА ТАБЛИЦЫ ПЕРЕКРЕСТНЫХ ССЫЛОК ! ! FPT ! ЗАПРЕЩАЕТ ! УСЕЧЕНИЕ ЧИСЕЛ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ ! ! ! ! БЕЗ ОКРУГЛЕНИЯ (/E:FPT); С ОКРУГЛЕНИЕМ (/D:FPT) ! ! GBL ! РАЗРЕШАЕТ ! НЕОПРЕДЕЛЕННЫЕ ИМЕНА ТРАНСЛИРОВАТЬ ! ! ! ! КАК ГЛОБАЛЬНЫЕ ! ! LC ! РАЗРЕШАЕТ ! ПРИЕМ ВХОДНОЙ ИНФОРМАЦИИ, СОДЕРЖА- ! ! ! ! ЩЕЙ БУКВЫ РУССКОГО АЛФАВИТА ! ! LCM ! ЗАПРЕЩАЕТ ! ЗАВИСИМОСТЬ УСЛОВНЫХ ДИРЕКТИВ ! ! ! ! .IF IDM И .IF DIF ОТ ВЕРХНЕГО И ! ! ! ! И НИЖНЕГО РЕГИСТРОВ ! ! LSB ! ЗАПРЕЩАЕТ ! ВРЕМЕННО ПРЕРВАТЬ БЛОК ЛОКАЛЬНЫХ ! ! ! ! МЕТОК НОВОЙ ПРОГРАММНОЙ СЕКЦИЕЙ, А ! ! ! ! ЗАТЕМ ПРОДОЛЖИТЬ ПРЕРВАННЫЙ БЛОК ! ! ! ! ЛОКАЛЬНЫХ ИМЕН ! ! MCL ! ЗАПРЕЩАЕТ ! ПОИСК МАКРООПРЕДЕЛЕНИЯ ВО ВСЕХ ! ! ! ! МАКРОБИБЛИОТЕКАХ, ЕСЛИ В ИСХОДНОМ ! ! ! ! ФАЙЛЕ ВСТРЕТИЛСЯ КОД НЕОПРЕДЕЛЕННОЙ ! ! ! ! ОПЕРАЦИИ ! ! PNC ! РАЗРЕШАЕТ ! ВКЛЮЧЕНИЕ ДВОИЧНЫХ КОДОВ В ОБ'ЕКТНЫ МОДУЛЬ ! ! REG ! РАЗРЕШАЕТ ! ПЕРЕОПРЕДЕЛЕНИЕ РЕГИСТРОВ, НАЗНАЧЕН- ! ! ! ! НЫХ ПО УМОЛЧАНИЮ ! ------------------------------------------------------------------------- 2.3.3. ПЕРЕКЛЮЧАТЕЛЬ ОПРЕДЕЛЕНИЯ ФАЙЛА МАКРОБИБЛИОТЕКИ (/M) ПЕРЕКЛЮЧАТЕЛЬ /M В КОМАНДНОЙ СТРОКЕ СЛЕДУЕТ ЗА СПЕЦИФИКАЦИЕЙ ФАЙЛА, К КОТОРОМУ ОН ПРИМЕНЯЕТСЯ, И УКАЗЫВАЕТ, ЧТО ФАЙЛ, ЗА КОТОРЫМ /M СЛЕДУЕТ, ЯВЛЯЕТСЯ ФАЙЛОМ МАКРОБИБЛИОТЕКИ. ПЕРЕКЛЮЧАТЕЛЬ /M НЕ ИМЕЕТ АРГУМЕНТОВ. ЕСЛИ КОМАНДНАЯ СТРОКА НЕ СОДЕРЖИТ СПЕЦИФИКАЦИЮ СИСТЕМНОЙ МАКРОБИБЛИОТЕКИ SYSMAC.SML СИСТЕМА АВТОМАТИЧЕСКИ ВКЛЮЧАЕТ ЕЕ В КОМАНДНУЮ СТРОКУ ПЕРВЫМ ВХОДНЫМ ФАЙЛОМ. ЕСЛИ В ИСХОДНОМ ФАЙЛЕ ВСТРЕЧАЕТСЯ МАКРОКОМАНДА, АССЕМБЛЕР ПРОСМАТРИВАЕТ ВСЕ МАКРОБИБЛИОТЕКИ В ПОРЯДКЕ ИХ ПОЯВЛЕНИЯ В КОМАНДНОЙ СТРОКЕ. ЕСЛИ МАКРООПРЕДЕЛЕНИЕ ДЛЯ МАКРОКОМАНДЫ С ОПРЕДЕЛЕННЫМ ИМЕНЕМ СОДЕРЖИТСЯ В ДВУХ ИЛИ БОЛЕЕ БИБЛИОТЕКАХ, МАКРООПРЕДЕЛЕНИЕ ДЛЯ ДАННОЙ МАКРОКОМАНДЫ ВЫБИРАЕТСЯ ИЗ БИБЛИОТЕКИ, КОТОРАЯ В СТРОКЕ КОМАНДЫ БЫЛА УКАЗАНА САМОЙ ПРАВОЙ. ЕСЛИ МАКРОБИБЛИОТЕКА ПОЛЬЗОВАТЕЛЯ СОДЕРЖИТ МАКРООПРЕДЕЛЕНИЕ С ИМЕНЕМ, СОВПАДАЮЩИМ СО СТАНДАРТНЫМ ИМЕНЕМ МАКРООПРЕДЕЛЕНИЯ СИСТЕМНОЙ МАКРОБИБЛИОТЕКИ, ТО ПРЕИМУЩЕСТВО ИМЕЕТ МАКРОБИБЛИОТЕКА ПОЛЬЗОВАТЕЛЯ. ПРИМЕР. *ВЫХОДСПФ=ALIB.MLB/M,BLIB.MLB/M,XIZ ПРЕДПОЛОЖИМ, ИСХОДНЫЙ ФАЙЛ XIZ.MAC СОДЕРЖИТ МАКРОКОМАНДЫ .MCALL .BIG, А ФАЙЛЫ МАКРОБИБЛИОТЕК ALIB И BLIB СОДЕРЖАТ РАЗЛИЧНЫЕ МАКРООПРЕДЕЛЕНИЯ МАКРОКОМАНДЫ .BIG. СИСТЕМА БУДЕТ ВКЛЮЧАТЬ В ФАЙЛ РАСШИРЕНИЯ МАКРОКОМАНДЫ .BIG ИЗ БИБЛИОТЕКИ BLIB. 2.3.4. ПЕРЕКЛЮЧАТЕЛЬ УПРАВЛЕНИЯ ПЕЧАТЬЮ ТАБЛИЦЫ ПЕРЕКРЕСТНЫХ ССЫЛОК (/C:АРГ) ПЕРЕКЛЮЧАТЕЛЬ /C:АРГ ПРЕДНАЗНАЧЕН ДЛЯ УПРАВЛЕНИЯ ПЕЧАТЬЮ ТАБЛИЦЫ ПЕРЕКРЕСТНЫХ ССЫЛОК (CREF), Т.Е. ПЕРЕКЛЮЧАТЕЛЬ /C:АРГ ОПРЕДЕЛЯЕТ СОДЕРЖАНИЕ ДАННОЙ ТАБЛИЦЫ. АРГУМЕНТЫ ПЕРЕКЛЮЧАТЕЛЯ ПРИВЕДЕНЫ В ТАБЛ. 5. ОБЫЧНО /C:АРГ СЛЕДУЕТ В КОМАНДНОЙ СТРОКЕ ЗА СПЕЦИФИКАЦИЕЙ ФАЙЛА ЛИСТИНГА, НО ТАКЖЕ МОЖЕТ БЫТЬ УКАЗАН В ЛЮБОМ МЕСТЕ КОМАНДНОЙ СТРОКИ. ТАБЛИЦА ПЕРЕКРЕСТНЫХ ССЫЛОК (CREF) СОДЕРЖИТ ВСЕ ИЛИ ЧАСТЬ ИМЕН ИСХОДНОЙ ПРОГРАММЫ. ЕСЛИ КОМАНДНАЯ СТРОКА НЕ СОДЕРЖИТ СПЕЦИФИКАЦИЮ ФАЙЛА ТАБЛИЦЫ ПЕРЕКРЕСТНЫХ ССЫЛОК, СИСТЕМА СОЗДАЕТ ВРЕМЕННЫЙ ФАЙЛ CREF.TMP НА DK:. ПОСЛЕ ТОГО, КАК ПОЛУЧЕНА ТАБЛИЦА ПЕРЕКРЕСТНЫХ ССЫЛОК, ВРЕМЕННЫЙ ФАЙЛ СТИРАЕТСЯ АВТОМАТИЧЕСКИ. ЕСЛИ НЕОБХОДИМО ВЫВЕСТИ ФАЙЛ CREF НА ДРУГОЕ УСТРОЙСТВО, СЛЕДУЕТ УКАЗАТЬ В КОМАНДНОЙ СТРОКЕ УСТ:ПССПФ (УСТ - ИМЯ УСТРОЙСТВА, КУДА БУДЕТ ВЫВОДИТСЯ ФАЙЛ CREF; ПССПФ - СПЕЦИФИКАЦИЯ ФАЙЛА CREF). ИСПОЛЬЗУЯ КОМАНДУ .ASSIGN УСТ:CF, МОЖНО НАПРАВИТЬ ВЫВОД ФАЙЛА CREF.TMP НА НУЖНОЕ УСТРОЙСТВО, НЕ УКАЗЫВАЯ КАЖДЫЙ РАЗ ПРИ ТРАНСЛЯЦИИ ЕГО В КОМАНДНОЙ СТРОКЕ. ЕСЛИ ЖЕ ПССПФ В КОМАНДНОЙ СТРОКЕ ВСЕ ЖЕ УКАЗЫВАЕТСЯ, ТО ТАБЛИЦА ПЕРЕКРЕСТНЫХ ССЫЛОК ВЫВОДИТСЯ НА УКАЗАННОЕ УСТРОЙСТВО ФАЙЛОМ, ИМЯ КОТОРОГО ЗАДАНО В ПССПФ. ЕСЛИ ЛИСТИНГ НАДО ВЫВЕСТИ НА МТ:, ПО КОМАНДЕ LOAD СЛЕДУЕТ ЗАГРУЗИТЬ ДРАЙВЕР MT: В ПАМЯТЬ, А ЗАТЕМ ВЫПОЛНЯТЬ ТРАНСЛЯЦИЮ. ПРИМЕР. *,LP:,RK1:TEMP.TMP=SOURCE/C ПО ДАННОЙ КОМАНДНОЙ СТРОКЕ ЛИСТИНГ ТРАНСЛЯЦИИ ВЫВОДИТСЯ НА LP:, ТАБЛИЦА ПЕРЕКРЕСТНЫХ ССЫЛОК ФАЙЛОМ TEMP.TMP НА RK1:. ТАБЛИЦА 5 АРГУМЕНТЫ ПЕРЕКЛЮЧАТЕЛЯ /C ------------------------------------------------------------ ! АРГУМЕНТ ! РАЗДЕЛ ТАБЛИЦЫ ПЕРЕКРЕСТНЫХ ССЫЛОК ! ------------------------------------------------------------ ! C ! ИМЕНА ПРОГРАММНЫХ СЕКЦИЙ ! ! E ! ОШИБКИ (СГРУППИРОВАННЫЕ ПО ТИПАМ ОШИБОК) ! ! M ! ИМЕНА МАКРОКОМАНД ! ! P ! ПОСТОЯННЫЕ ИМЕНА (ВКЛЮЧАЯ КОМАНДЫ И ДИРЕКТИВЫ)! ! R ! ИМЕНА РЕГИСТРОВ ! ! S ! ИМЕНА, ОПРЕДЕЛЕННЫЕ ПОЛЬЗОВАТЕЛЕМ ! ------------------------------------------------------------ ПРИМЕЧАНИЕ. ПЕРЕКЛЮЧАТЕЛЬ /C БЕЗ АРГУМЕНТОВ ЭКВИВАЛЕНТЕН /C:S:M:E. ЕСЛИ НЕОБХОДИМО В ТАБЛИЦУ ПЕРЕКРЕСТНЫХ ССЫЛОК ВКЛЮЧИТЬ ОПРЕДЕЛЕННЫЕ РАЗДЕЛЫ, ТО С ПЕРЕКЛЮЧАТЕЛЕМ /C УКАЗЫВАЮТ СООТВЕТСТВУЮЩИЕ АРГУМЕНТЫ. ТАБЛИЦА ПЕРЕКРЕСТНЫХ ССЫЛОК НЕ СОЗДАЕТСЯ, ЕСЛИ НЕ УКАЗАН ПЕРЕКЛЮЧАТЕЛЬ /C, ДАЖЕ ЕСЛИ В КОМАНДНОЙ СТРОКЕ УКАЗАНА СПЕЦИФИКАЦИЯ ФАЙЛА CREF. 3. ОБРАЩЕНИЕ К ПРОГРАММЕ ДЛЯ ВЫЗОВА АССЕМБЛЕРА MACRO С СИСТЕМНОГО УСТРОЙСТВА СЛЕДУЕТ ПОДАТЬ С ТЕРМИНАЛА КОМАНДУ R MACRO ПОСЛЕ ТОГО, КАК МОНИТОР НАПЕЧАТАЕТ НА ТЕРМИНАЛЕ ТОЧКУ. ПОСЛЕ ВЫЗОВА АССЕМБЛЕР ПЕЧАТАЕТ ЗВЕЗДОЧКУ И ОЖИДАЕТ ВВОДА КОМАНДНОЙ СТРОКИ. ЕСЛИ В ЭТО ВРЕМЯ НАЖАТЬ КЛАВИШУ <ВК> , ТО АССЕМБЛЕР ПЕЧАТАЕТ НОМЕР СВОЕЙ ВЕРСИИ. ДЛЯ ВЫХОДА ИЗ MACRO И ПЕРЕДАЧИ УПРАВЛЕНИЯ МОНИТОРУ СЛЕДУЕТ ПОДАТЬ КОМАНДУ СУ/С, ЕСЛИ MACRO ОЖИДАЕТ ВВОДА С ТЕРМИНАЛА, ИЛИ ДВАЖДЫ СУ/С, ЕСЛИ MACRO ВЫПОЛНЯЕТ ОПЕРАЦИЮ. ДЛЯ ПОВТОРНОГО ПУСКА MACRO СЛЕДУЕТ ПОДАТЬ КОМАНДУ REENTER. ПОСЛЕ ВЫПОЛНЕНИЯ ОПЕРАЦИИ MACRO ПЕЧАТАЕТ ЗВЕЗДОЧКУ И ОЖИДАЕТ ВВОДА КОМАНДНОЙ СТРОКИ. ПРИМЕЧАНИЕ. ВЫЗВАТЬ АССЕМБЛЕР MACRO МОЖНО ТАКЖЕ ПО КОМАНДЕ МОНИТОРА MACRO (СМ. [1] ). 4. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ ПРОГРАММА НА ИСХОДНОМ ЯЗЫКЕ МОЖЕТ СОСТОЯТЬ ИЗ ОДНОГО ИЛИ НЕСКОЛЬКИХ МОДУЛЕЙ. КАЖДЫЙ МОДУЛЬ ТРАНСЛИРУЕТСЯ НЕЗАВИСИМО. РЕЗУЛЬТАТОМ ТРАНСЛЯЦИИ ЯВЛЯЕТСЯ ОБ'ЕКТНЫЙ МОДУЛЬ, ЛИСТИНГ И ТАБЛИЦА ПЕРЕКРЕСТНЫХ ССЫЛОК. ОБ'ЕКТНЫЕ МОДУЛИ ОБРАБАТЫВАЮТСЯ ПРОГРАММОЙ РЕДАКТОР СВЯЗЕЙ ДЛЯ ПОЛУЧЕНИЯ ЗАГРУЗОЧНОГО МОДУЛЯ. 4.1. ИСХОДНЫЙ МОДУЛЬ ИСХОДНЫЙ МОДУЛЬ ПРЕДСТАВЛЯЕТ СОБОЙ ПОСЛЕДОВАТЕЛЬНОСТЬ ОПЕРАТОРОВ НА ЯЗЫКЕ АССЕМБЛЕР. ОПИСАНИЕ ФОРМАТОВ ОПЕРАТОРОВ ПРИВЕДЕНО В ДОКУМЕНTЕ [2]. 4.2. ОБ'ЕКТНЫЙ МОДУЛЬ ОБ'ЕКТНЫЙ МОДУЛЬ, ПОЛУЧЕННЫЙ В РЕЗУЛЬТАТЕ ТРАНСЛЯЦИИ ВЫДАЕТСЯ В ФОРМАТЕ, ДОПУСТИМОМ ДЛЯ РАБОТЫ В СИСТЕМЕ ФОДОС-2. ОБ'ЕКТНЫЙ МОДУЛЬ СОСТОИТ ИЗ ОТФОРМАТИРОВАННЫХ ДВОИЧНЫХ БЛОКОВ. ФОРМАТ ДВОИЧНОГО БЛОКА: -------------------------------- ! ПРИЗНАК НАЧАЛА БЛОКА ! ! (МЛАДШИЙ БАЙТ - 1) ! !------------------------------! ! ПРИЗНАК НАЧАЛА БЛОКА ! ! (СТАРШИЙ БАЙТ - 0) ! !------------------------------! ! КОЛИЧЕСТВО БАЙТОВ В БЛОКЕ ! ! (МЛАДШИЙ БАЙТ) ! !------------------------------! ! КОЛИЧЕСТВО БАЙТОВ В БЛОКЕ ! ! (СТАРШИЙ БАЙТ) ! !------------------------------! ! БЛОК ИНФОРМАЦИИ ! !------------------------------! ! БАЙТ КОНТРОЛЬНОЙ СУММЫ ! -------------------------------- ЧАСТЬ ДВОИЧНОГО БЛОКА - "БЛОК ИНФОРМАЦИИ" СОДЕРЖИТ ФАКТИЧЕСКИ ИНФОРМАЦИЮ ОБ'ЕКТНОГО МОДУЛЯ. СИСТЕМА ФОДОС-2 ИСПОЛЬЗУЕТ 8 ТИПОВ БЛОКОВ ИНФОРМАЦИИ. ТАБЛ. 6 СОДЕРЖИТ ОПИСАНИЕ 8 ТИПОВ БЛОКОВ ИНФОРМАЦИИ. ТАБЛИЦА 6 ------------------------------------------------- ! КОД ТИПА ! ТИП БЛОКА ! ! БЛОКА ! ! ------------------------------------------------- ! 3 ! ДВОИЧНЫЙ ТЕКСТ ПРОГРАММЫ (TXT) ! ! 4 ! СЛОВАРЬ ПЕРЕМЕЩЕНИЯ (RLD) ! ! 5 ! СЛОВАРЬ ВНУТРЕННИХ ИМЕН (ISD) ! ! 6 ! КОНЕЦ ОБ'ЕКТНОГО МОДУЛЯ (ENDMOD) ! ! 7 ! ЗАГОЛОВОК БИБЛИОТЕКИ ! ! 10 ! КОНЕЦ БИБЛИОТЕЧНОГО ФАЙЛА ! ------------------------------------------------- В ДАЛЬНЕЙШЕМ ДВОИЧНЫЙ БЛОК, СОДЕРЖАЩИЙ СЛОВАРЬ ГЛОБАЛЬНЫХ ИМЕН, БУДЕМ НАЗЫВАТЬ БЛОК GSD, ТАКЖЕ И ВСЕ ТИПЫ БЛОКОВ (БЛОК ENDGSD, БЛОК TXT, БЛОК RLD, БЛОК ISD, БЛОК ENDMOD, БЛОК ЗАГОЛОВКА БИБЛИОТЕКИ, БЛОК КОНЦА БИБЛИОТЕКИ). ФОРМАТ ОБ'ЕКТНОГО МОДУЛЯ: ---------------------- ! БЛОК GSD ! !--------------------! ! БЛОК RLD ! !--------------------! ! БЛОК GSD ! !--------------------! ! БЛОК TXT ! !--------------------! ! БЛОК TXT ! !--------------------! ! БЛОК RLD ! !--------------------! . . . ---------------------- ! БЛОК GSD ! !--------------------! ! БЛОК ENDGSD ! !--------------------! ! БЛОК ISD ! !--------------------! ! БЛОК ISD ! !--------------------! ! БЛОК TXT ! !--------------------! ! БЛОК TXT ! !--------------------! ! БЛОК TXT ! !--------------------! ! БЛОК RLD ! !--------------------! ! БЛОК ENDMOD ! !--------------------! ОБ'ЕКТНЫЙ МОДУЛЬ ДОЛЖЕН НАЧИНАТЬСЯ С БЛОКА GSD И ЗАКАНЧИВАТЬСЯ БЛОКОМ ENDMOD. ДОПОЛНИТЕЛЬНЫЕ БЛОКИ GSD МОГУТ ВСТРЕЧАТЬСЯ В ЛЮБОМ МЕСТЕ В ФАЙЛЕ, НО ПЕРЕД БЛОКОМ ENDGSD. БЛОК ENDGSD ДОЛЖЕН БЫТЬ ДО БЛОКА ENDMOD. ПО КРАЙНЕЙ МЕРЕ, ОДИН БЛОК RLD ДОЛЖЕН ПРЕДШЕСТВОВАТЬ БЛОКУ TXT. ДОПОЛНИТЕЛЬНЫЕ БЛОКИ TXT И RLD МОГУТ ВСТРЕЧАТЬСЯ В ЛЮБОМ МЕСТЕ ФАЙЛА. БЛОКИ ISD ТАКЖЕ МОГУТ ВСТРЕЧАТЬСЯ В ЛЮБОМ МЕСТЕ ФАЙЛА МЕЖДУ БЛОКАМИ GSD И БЛОКАМИ ENDMOD. ПЕРВЫЙ БАЙТ БЛОКА ИНФОРМАЦИИ - КОД ТИПА БЛОКА (СМ. ТАБЛ. 6). 4.2.1. БЛОК СЛОВАРЯ ГЛОБАЛЬНЫХ ИМЕН (GSD) БЛОК GSD СОДЕРЖИТ ИНФОРМАЦИЮ, НЕОБХОДИМУЮ ДЛЯ ПРИСВОЕНИЯ АДРЕСОВ ИМЕНАМ И РАСПРЕДЕЛЕНИЯ ПАМЯТИ ЗАДАЧИ. КАЖДОМУ ИМЕНИ В БЛОКЕ ИНФОРМАЦИИ СООТВЕТСТВУЕТ ЗАПИСЬ ИЗ ЧЕТЫРЕХ СЛОВ, СОДЕРЖАЩАЯ ИМЯ В КОДЕ RADIX-50 (2 СЛОВА), КОД ТИПА ЗАПИСИ И ЗНАЧЕНИЕ ИМЕНИ. ФОРМАТ БЛОКА ИНФОРМАЦИИ GSD: ------------------------------ ! 0 !КОД ТИПА БЛОКА! ! !ИНФОРМАЦИИ = 1! !----------------------------! ! ИМЯ В КОДАХ RADIX-50 ! ! 2 СЛОВА ! !----------------------------! ! КОД ТИПА ! ФЛАГ ! ! ЗАПИСИ ! ! !----------------------------! ! ЗНАЧЕНИЕ ИМЕНИ ! !----------------------------! ! ИМЯ В КОДАХ RADIX-50 ! ! 2 СЛОВА ! !----------------------------! ! КОД ТИПА ! ФЛАГ ! ! ЗАПИСИ ! ! !----------------------------! ! ЗНАЧЕНИЕ ИМЕНИ ! !----------------------------! . . . ------------------------------ ! ИМЯ В КОДАХ RADIX-50 ! ! 2 СЛОВА ! !----------------------------! ! КОД ТИПА ! ФЛАГ ! ! ЗАПИСИ ! ! !----------------------------! ! ЗНАЧЕНИЕ ИМЕНИ ! !----------------------------! БЛОК ИНФОРМАЦИИ БЛОКА GSD ПОСТРОЕН ТАКИМ ОБРАЗОМ, ЧТО СНАЧАЛА СЛЕДУЕТ ИНФОРМАЦИЯ ОБ АБСОЛЮТНОЙ СЕКЦИИ И ОБО ВСЕХ ЕЕ ГЛОБАЛЬНЫХ ИМЕНАХ; ЗАТЕМ ИНФОРМАЦИЯ ОБ ОТНОСИТЕЛЬНОЙ СЕКЦИИ (ЕСЛИ ОНА ЕСТЬ В ПРОГРАММЕ) И ПЕРЕЧИСЛЯЮТСЯ ВСЕ ГЛОБАЛЬНЫЕ ИМЕНА ДАННОЙ СЕКЦИИ. ЕСЛИ В ПРОГРАММЕ НЕСКОЛЬКО ПРОГРАММНЫХ СЕКЦИЙ, ТО ИНФОРМАЦИЯ ОБ ЭТИХ СЕКЦИЯХ В БЛОКЕ GSD СЛЕДУЕТ В ТОМ ПОРЯДКЕ, В КАКОМ ПРОГРАММНЫЕ СЕКЦИИ ВСТРЕЧАЮТСЯ В ПРОГРАММЕ. ПЕРВЫЙ БЛОК GSD СОДЕРЖИТ ИНФОРМАЦИЮ ОБ ИМЕНИ МОДУЛЯ. ТИПЫ ЗАПИСЕЙ И СООТВЕТСТВУЮЩИЕ ИМ КОДЫ ПРИВЕДЕНЫ В ТАБЛ. 7. ТАБЛИЦА 7 --------------------------------------------------------! ! КОД ТИПА ! ЗНАЧЕНИЕ ! ! ЗАПИСИ ! ! !-------------------------------------------------------! ! 0 ! ИМЯ МОДУЛЯ ! ! 1 ! ИМЯ СЕКЦИИ УПРАВЛЕНИЯ (CSECT) ! ! 2 ! ВНУТРЕННЕЕ СИМВОЛИЧЕСКОЕ ИМЯ ! ! 3 ! АДРЕС СМЕЩЕНИЯ ! ! 4 ! ГЛОБАЛЬНОЕ СИМВОЛИЧЕСКОЕ ИМЯ ! ! 5 ! ИМЯ ПРОГРАММНОЙ СЕКЦИИ ! ! 6 ! ИДЕНТИФИКАЦИЯ ВЕРСИИ ПРОГРАММЫ (IDENT) ! ! 7 ! ОПИСАНИЕ МАССИВА ОТОБРАЖЕНИЯ (VSECT) ! --------------------------------------------------------- НИЖЕ ОПИСАНЫ ВСЕ ТИПЫ ЗАПИСЕЙ ДЛЯ БЛОКОВ GSD. 4.2.1.1. ИМЯ МОДУЛЯ (КОД ТИПА ЗАПИСИ - 0) ЗАПИСЬ ИМЕНИ МОДУЛЯ ОБ'ЯВЛЯЕТ ИМЯ ОБ'ЕКТНОГО МОДУЛЯ. В КАЖДОМ ОБ'ЕКТНОМ МОДУЛЕ МОЖЕТ ВСТРЕЧАТЬСЯ ТОЛЬКО ОДНО ОБ'ЯВЛЕНИЕ КАЖДОГО МОДУЛЯ. ФОРМАТ ЗАПИСИ ИМЕНИ МОДУЛЯ: -------------------------- ! ИМЯ ! !------- МОДУЛЯ ---------! ! (В КОДЕ RADIX-50) ! !------------------------! ! 0 ! 0 ! !------------------------! ! 0 ! -------------------------- 4.2.1.2. ИМЯ СЕКЦИИ УПРАВЛЕНИЯ (КОД ТИПА ЗАПИСИ - 1) ЗАПИСЬ ИМЕНИ СЕКЦИИ УПРАВЛЕНИЯ ОБ'ЯВЛЯЕТ ИМЯ СЕКЦИИ УПРАВЛЕНИЯ. РЕДАКТОР СВЯЗЕЙ РЕДАКТИРУЕТ СЕКЦИЮ УПРАВЛЕНИЯ .ASECT И .CSECT (С ИМЕНЕМ ИЛИ БЕЗ НЕГО) В ОТНОСИТЕЛЬНУЮ ПРОГРАММНУЮ СЕКЦИЮ С ПРИЗНАКАМИ, УКАЗАННЫМИ НИЖЕ. ФОРМАТ ОПЕРАТОРА .PSECT ДЛЯ НЕИМЕНОВАННОЙ ОТНОСИТЕЛЬНОЙ СЕКЦИИ: .PSECT, RW,I, LCL, REL, CON ФОРМАТ ОПЕРАТОРА .PSECT ДЛЯ ИМЕНОВАННОЙ ОТНОСИТЕЛЬНОЙ СЕКЦИИ: .PSECT ИМЯ, RW, I, GBL, REL, OUR ФОРМАТ ОПЕРАТОРА .PSECT ДЛЯ АБСОЛЮТНОЙ СЕКЦИИ: .PSECT .ABS., RW, I, GBL, ABS, OUR ФОРМАТ ЗАПИСИ ИМЕНИ СЕКЦИИ УПРАВЛЕНИЯ: ------------------------------- ! ИМЯ СЕКЦИИ УПРАВЛЕНИЯ ! !------ (В КОДЕ RADIX-50) ----! ! ! !-----------------------------! ! 1 ! НЕ ИСПОЛЬЗУЕТСЯ ! !-----------------------------! ! МАКСИМАЛЬНАЯ ДЛИНА ! ! ------------------------------- 4.2.1.3. ВНУТРЕННЕЕ ИМЯ (КОД ТИПА ЗАПИСИ - 2) ЗАПИСЬ ВНУТРЕННЕГО СИМВОЛИЧЕСКОГО ИМЕНИ ОБ'ЯВЛЯЕТ ИМЯ, ВНУТРЕННЕЕ ПО ОТНОШЕНИЮ К МОДУЛЮ. Т.К. РЕДАКТОР СВЯЗЕЙ НЕ СОЗДАЕТ ТАБЛИЦУ ВНУТРЕННИХ ИМЕН, ТО ПРИ РЕДАКТИРОВАНИИ ЗАПИСИ ВНУТРЕННИХ ИМЕН ИГНОРИРУЮТСЯ РЕДАКТОРОМ СВЯЗЕЙ. ФОРМАТ ЗАПИСИ ВНУТРЕННЕГО ИМЕНИ: ------------------------------- ! ВНУТРЕННЕЕ ИМЯ ! !----- (В КОДЕ RADIX-50) ---- ! ! ! !-----------------------------! ! 2 ! 0 ! !-----------------------------! ! НЕОПРЕДЕЛЕНО ! ------------------------------- 4.2.1>4Н АДРЕС СМЕЩЕНИЯ (КОД ТИПА ЗАПИССИ ВНУТРЕННЕГО ИМЕНИ: ------------------------------ ! ВНУТРЕННЕЕ ИМЯ ! !----- (В КОДЕ RADIX-50) ----! ! ! !------- ОСИТЕЛЬНОЙ ---------! ! ПРОГРАММНОЙ СЕКЦИИ. ! ------------------------------ РЕДАКТОР СВЯЗЕЙ ПЕРЕДАЕТ ЧЕТНЫЙ АДРЕС СМЕЩЕНИЯ, КОТОРЫЙ В ПРОГРАММЕ ВСТРЕЧАЕТСЯ ПЕРВЫМ (С ДИРЕКТИВОЙ .END), СИСТЕМЕ КАК ПУСКОВОЙ АДРЕС ПРОГРАММЫ. ЕСЛИ В ПРОГРАММЕ НЕ УКАЗАН АДРЕС СМЕЩЕНИЯ (В ЭТОМ СЛУЧАЕ СМЕЩЕНИЕ - 000001), ИЛИ ЕСЛИ УКАЗАН НЕЧЕТНЫЙ АДРЕС СМЕЩЕНИЯ - ПРОГРАММА ПРИ ЗАГРУЗКЕ НЕ ЗАПУСКАЕТСЯ (ЗАПУСК МОЖЕТ БЫТЬ ОСУЩЕСТВЛЕН ПО КОМАНДЕ МОНИТОРА START). ФОРМАТ ЗАПИСИ АДРЕСА СМЕЩЕНИЯ: ------------------------------- ! СИМВОЛИЧЕСКОЕ ИМЯ ! !------ (В КОДЕ RADIX-50) ----! ! ! !-----------------------------! ! 3 ! 0 ! !-----------------------------! ! СМЕЩЕНИЕ ! ------------------------------- 4.2.1.5. ГЛОБАЛЬНОЕ СИМВОЛИЧЕСКОЕ ИМЯ (КОД ТИПА ЗАПИСИ - 4) ЗАПИСЬ ГЛОБАЛЬНОГО СИМВОЛИЧЕСКОГО ИМЕНИ ОБ'ЯВЛЯЕТ ИЛИ ОБ ОБРАЩЕНИИ К ГЛОБАЛЬНОМУ ИМЕНИ, ИЛИ ОБ ОПРЕДЕЛЕНИИ ГЛОБАЛЬНОГО ИМЕНИ (ЗАПИСЬ ОПРЕДЕЛЕНИЯ ГЛОБАЛЬНОГО ИМЕНИ). ВСЕ ЗАПИСИ ОПРЕДЕЛЕНИЯ ГЛОБАЛЬНЫХ ИМЕН ДОЛЖНЫ СЛЕДОВАТЬ В БЛОКЕ ИНФОРМАЦИИ БЛОКА GSD ЗА ЗАПИСЬЮ ИМЕНИ ПРОГРАММНОЙ СЕКЦИИ, НО ПЕРЕД ЗАПИСЬЮ ИМЕНИ СЛЕДУЮЩЕЙ ПРОГРАММНОЙ СЕКЦИИ. ЗАПИСИ ОБРАЩЕНИЯ К ГЛОБАЛЬНЫМ ИМЕНАМ МОГУТ БЫТЬ В ЛЮБОМ МЕСТЕ ВНУТРИ БЛОКА ИНФОРМАЦИИ БЛОКА GSD. ФОРМАТ ЗАПИСИ ГЛОБАЛЬНОГО СИМВОЛИЧЕСКОГО ИМЕНИ: ------------------------------- ! ГЛОБАЛЬНОЕ СИМВОЛИЧЕСКОЕ ! !----------- ИМЯ -------------! ! (В КОДЕ RADIX-50) ! !-----------------------------! ! 4 ! ФЛАГ ! !-----------------------------! ! ЗНАЧЕНИЕ ! ------------------------------- В ЗАПИСИ ГЛОБАЛЬНОГО ИМЕНИ: ПЕРВЫЕ ДВА СЛОВА - КОД RADIX-50 ГЛОБАЛЬНОГО ИМЕНИ; ЧЕТВЕРТОЕ СЛОВО - ЗНАЧЕНИЕ ИМЕНИ ОТНОСИТЕЛЬНО ПРОГРАММНОЙ СЕКЦИИ, В КОТОРОЙ ИМЯ ОПРЕДЕЛЕНО; БАЙТ ФЛАГА ТРЕТЬЕГО СЛОВА ОПРЕДЕЛЯЕТ ОБРАЩЕНИЕ К ГЛОБАЛЬНОМУ ИМЕНИ, ИЛИ ОПРЕДЕЛЕНИЕ ГЛОБАЛЬНОГО ИМЕНИ ВСТРЕТИЛОСЬ В ДАННОЙ ПРОГРАММНОЙ СЕКЦИИ; КАКОЕ ЗНАЧЕНИЕ ГЛОБАЛЬНОГО ИМЕНИ ПРИВЕДЕНО В ЗАПИСИ - АБСОЛЮТНОЕ ИЛИ ОТНОСИТЕЛЬНОЕ. 4.2.1.6. ИМЯ ПРОГРАММНОЙ СЕКЦИИ (КОД ТИПА ЗАПИСИ - 5) ЗАПИСЬ ИМЕНИ ПРОГРАММНОЙ СЕКЦИИ ОБ'ЯВЛЯЕТ ИМЯ ПРОГРАММНОЙ СЕКЦИИ И ЕЕ МАКСИМАЛЬНУЮ ДЛИНУ В МОДУЛЕ. БАЙЭ ФЛАГА ИСПОЛЬЗУЕТСЯ ДЛЯ ОБ'ЯВЛЕНИЯ ОПРЕДЕЛЕННЫХ СВОЙСТВ ПРОГРАММНОЙ СЕКЦИИ (РАЗМЕР СЕКЦИИ, В ОВЕРЛЕЙНОМ ИЛИ КОРНЕВОМ СЕГМЕНТЕ РАСПОЛОЖЕНА СЕКЦИЯ, ВИД ДОСТУПА К ПРОГРАММНОЙ СЕКЦИИ). ФОРМАТ ОПЕРАТОРА .PSECT ДЛЯ ПРОГРАММНОЙ СЕКЦИИ: .PSECT , RW, I, LCL, REL, CON ФОРМАТ ЗАПИСИ ИМЕНИ ПРОГРАММНОЙ СЕКЦИИ: ------------------------------- ! ИМЯ ПРОГРАММНОЙ СЕКЦИИ ! !----- (В КОДАХ RADIX-50) ----! ! ! !-----------------------------! ! 5 ! ФЛАГ ! !-----------------------------! ! МАКСИМАЛЬНАЯ ДЛИНА ! ------------------------------- ПРИМЕЧАНИЕ. ДЛЯ ВСЕХ АБСОЛЮТНЫХ СЕКЦИЙ 4-E СЛОВО СОДЕРЖИТ 0. 4.2.1.7. ИДЕНТИФИКАЦИЯ ВЕРСИИ ПРОГРАММЫ (КОД ТИПА ЗАПИСИ - 6) ЗАПИСЬ ИДЕНТИФИКАЦИИ ВЕРСИИ ПРОГРАММЫ ОБ'ЯВЛЯЕТ ВЕРСИЮ МОДУЛЯ. ЕСЛИ ИСХОДНАЯ ПРОГРАММА СОДЕРЖИТ ДИРЕКТИВУ .IDENT, ТО БЛОК ИНФОРМАЦИИ БЛОКА GSD БУДЕТ СОДЕРЖАТЬ ЗАПИСЬ ИДЕНТИФИКАЦИИ ВЕРСИИ ПРОГРАММЫ. ПЕРВЫЕ ДВА СЛОВА ЗАПИСИ СОДЕРЖАТ ИДЕНТИФИКАЦИЮ ВЕРСИИ. ЧЕТВЕРТОЕ СЛОВО И БАЙТ ФЛАГА ТРЕТЬЕГО СЛОВА РЕДАКТОРОМ СВЯЗЕЙ НЕ ИСПОЛЬЗУЕТСЯ. ФОРМАТ ЗАПИСИ ИДЕНТИФИКАЦИИ ВЕРСИИ ПРОГРАММЫ: ---------------------------- ! ИДЕНТИФИКАЦИЯ ВЕРСИИ ! !------- ПРОГРАММЫ --------! ! (В КОДАХ RADIX-50) ! !--------------------------! ! 6 ! 0 ! !--------------------------! ! 0 ! ! ---------------------------- 4.2.1.8. ИМЯ ОТОБРАЖЕННОГО МАССИВА (КОД ТИПА ЗАПИСИ - 7) ЗАПИСЬ ИМЕНИ ОТОБРАЖЕННОГО МАССИВА ОБ'ЯВЛЯЕТ ИМЯ ОТОБРАЖЕННОГО МАССИВА, Т.Е. РАСПРЕДЕЛЯЕТ ПАМЯТЬ ВНУТРИ ОБЛАСТИ ОТОБРАЖЕНИЯ МАССИВА ПАМЯТИ ЗАДАНИЯ. БАЙТ ФЛАГА ЗАПИСИ ИМЕНИ ОТОБРАЖЕНИЯ МАССИВА РЕЗЕРВИРУЕТСЯ И ПРЕДПОЛАГАЕТСЯ, ЧТО ЕГО СОДЕРЖИМОЕ = 0. ЧЕТВЕРТОЕ СЭОВО, ДЛИНА, СОДЕРЖИТ ЧИСЛО 32-Х СНОВНЫХ БЛОКОВ. ЕСЛИ ДЛИНА РАВНА 0, СЕГМЕНТ - КОРНЕВОЙ. НЕ ДОЛЖНО БЫТЬ ГЛО.1.8. ИМЯ ОТОБРАЖЕННОГО МАССИВА (КОД ТИПА ЗАПИСИ - 7) ЗАПИСЬ ИМЕНИ ОТОБРАЖЕННОГО МАССИВА ОБ'ЯВЛЯЕТ ИМЯ ОТОБРАЖЕННОГО МАССИВА, Т.Е. РАСПРЕДЕЛЯЕТ ПАМЯТЬ ВНУТРИ ОБЛАСТИ ОТОБРАЖЕНИЯ МАССИВА ПАМЯТИ ЗАДАНИЯ. БАЙТ---- ! ИМЯ ОТОБРАЖЕННОГО ! !--------- МАССИВА -----------! ! (В КОДАХ RADIX-50) ! !-----------------------------! ! 7 ! РЕЗЕРВИРУЕТСЯ ! !-----------------------------! ! ДЛИНА ! ------------------------------- 4.2.2. БЛОК КОНЦА СЛОВАРЯ ГЛОБАЛЬНЫХ ИМЕН (ENDGSD) БЛОК ENDGSD УКАЗЫВАЕТ, ЧТО В ДАННОМ ОБ'ЕКТНОМ МОДУЛЕ БОЛЬШЕ НЕ СОДЕРЖИТСЯ БЛОКОВ GSD. В КАЖДОМ ОБ'ЕКТНОМ МОДУЛЕ ДОЛЖЕН БЫТЬ ТОЛЬКО ОДИН БЛОК ENDGSD. ДЛИНА БЛОКА ИНФОРМАЦИИ БЛОКА ENDGSD - ОДНО СЛОВО. ФОРМАТ БЛОКА ENDGSD: -------------------------- ! 0 ! КОД БЛОКА ENDGSD=2 ! -------------------------- 4.2.3. БЛОК ДВОИЧНОГО ТЕКСТА ПРОГРАММЫ (TXT) БЛОК TXT СОДЕРЖИТ ТЕКСТ ПРОГРАММЫ, КОТОРЫЙ ДОЛЖЕН БЫТЬ ЗАПИСАН НЕПОСРЕДСТВЕННО В ЗАГРУЗОЧНЫЙ МОДУЛЬ. ФОРМАТ БЛОКА TXT: -------------------------------- ! 0 ! КОД БЛОКА TXT=3 ! !------------------------------! ! АДРЕС ЗАГРУЗКИ ! !------------------------------! ! ТЕКСТ ! ТЕКСТ ! !------------------------------! ! ТЕКСТ ! ТЕКСТ ! !------------------------------! ! ТЕКСТ ! ТЕКСТ ! -------------------------------- . . . -------------------------------- ! ТЕКСТ ! ТЕКСТ ! !------------------------------! ! ТЕКСТ ! ТЕКСТ ! !------------------------------! ! ТЕКСТ ! ТЕКСТ ! -------------------------------- БЛОК TXT СОДЕРЖИТ АДРЕС ЗАГРУЗКИ, СЛОВА (БАЙТЫ) TЕKСTОВOЙ ИНФОРМАЦИИ. КОНЕЧНОЕ ЗНАЧЕНИЕ НЕКОТОРЫХ СЛОВ (БАЙТ) МОЖЕТ БЫТЬ ЕЩЕ НЕ ОПРЕДЕЛЕНО, ИХ ЗНАЧЕНИЯ ИЗМЕНЯЮТСЯ В СООТВЕТСТВИИ С ИНФОРМАЦИЕЙ БЛОКА RLD. ЕСЛИ ЗНАЧЕНИЯ НЕКОТОРЫХ СЛОВ (БАЙТ) БЛОКА TXT НЕ ОПРЕДЕЛЕНЫ, ТО ПОСЛЕ БЛОКА TXT ДОЛЖЕН СЛЕДОВАТЬ БЛОК RLD. ЕСЛИ ЖЕ ВСЕ ЗНАЧЕНИЯ БЛОКА TXT ОПРЕДЕЛЕНЫ, БЛОК RLD НЕ ТРЕБУЕТСЯ ПОСЛЕ БЛОКА TXT. ОДНАКО, ПО КРАЙНЕЙ МЕРЕ, ОДИН БЛОК RLD ДОЛЖЕН ПРЕДШЕСТВОВАТЬ ПЕРВОМУ БЛОКУ TXT. 4.2.4. БЛОК СЛОВАРЯ ПГРЕМЕЩЕНИЯ (RLD) БЛОК" СЛОВАРЯ ПЕРЕМЕЩЕНИЯ СОДЕРЖИТ ИНФОРЩАЦИЮ, НЕОБХОДИМУЮ РЕДАКТОРУ СВЯЗЕЙ ДЛЯ РАСПРЕДЕЛЕНИЯ И СВЯЗЫВАНИЯ БЛОКОВ TX\. ФОРМАТ БЛОКА RLD: ---------------------------------- ! 0 ! КОД БЛОКА RLD=4 ! !--------------------------------! ! БАЙТ СМЕЩЕНИЯ ! КОМАНДНЫЙ БАЙТ ! !--------------------------------! ! ИНЛОКУ TXT. ! --------------------------------- 4.2.5. БЛОК СЛОВАРЯ ПГРЕМЕЩЕНИЯ (RLD) БЛОК" СЛОВАРЯ ПЕРЕМЕЩЕНИЯ СОДЕРЖИТ ИНФОРЩАЦИЮ, НЕОБХОДИМУЮ РЕДАКТОРУ СВЯЗЕЙ ДЛЯ РАСПРЕДЕЛЕНИЯ И СВЯЗЫВАНИЯ БЛОКОВ TX\. ФОРМАТ БЛОКА RLD: . ---------------------------------- ! КОМАНДНЫЙ БАЙТ ! inf ! !--------------------------------! ! inf ! БАЙТ СМЕЩЕНИЯ ! !--------------------------------! ! inf ! inf ! !--------------------------------! ! inf ! inf ! !--------------------------------! ! БАЙТ СМЕЩЕНИЯ ! КОМАНДНЫЙ БАЙТ! !--------------------------------! ! inf ! inf ! !--------------------------------! ! inf ! inf ! ---------------------------------- blok RLD СОДЕРЖИТ КОМАНДНЫЙ БАЙТ (УКАЗЫВАЮЩИЙ КОД ТИПА КОМАНДЫ, Т.Е. ПРАВИЛО, ПО КОТОРОМУ БУДУТ ВЫЧИСЛЯТЬСЯ ЗНАЧЕНИЯ НЕОПРЕДЕЛЕННЫХ СЛОВ (БАЙТОВ) ПРЕДШЕСТВУЮЩЕГО БЛОКА TXT), БАЙТ СМЕЩЕНИЯ И ИНФОРМАЦИЮ, КОТОРАЯ ТРЕБУЕТСЯ ДЛЯ СООТВЕТСТВУЮЩЕГО ТИПА КОМАНД. 4.2.5. БЛОК СЛОВАРЯ ВНУТРЕННИХ ИМЕН (ISD) БЛОК СЛОВАРЯ ВНУТРЕННИХ ИМЕН ОБГЯВЛЯЕТ ОПРЕДЕЛЕНИЯ@ВНУТРЕННИХ ИМЕН. РЕДАКТОР СВЯЗЕЙ СИСТЕМЫ ФОДОС-2 НЕ ПОДДЕРЖИВАЕЭ ЭТОТ БЛОК. ПОЭТОМУ НИЖЕ ПРИВГДЕН НЕ ДЕЭАЛЬНЫЙ format bloka ISD. РЕДАКТОР СВЯЗЕЙ ИГНОРИРУЕТ БЛОК ISD. ФОРОАТ БЭОКА ISL: -------------------------- ! 0 ! КОД БЛОКА ISD ! !------------------------! ! НЕ УКАЗАНО ! -------------------------- 4.2.6. БЛОК КОНЦА ОБГЕКТНЪГЪ МОДУЛЯ ХENor swqzej sistemy fodos-2 ne podderviwae| |tot`blok. `po|tomu nive priwgden`ne de|alxnyj format`bloka ISD. `РЕДАКТОР СВЯЗЕЙ ИГНОРИРУЕТ БЛОК ISD. ФОРОАТ БЭОКАЮISL: @ ` -----/-m?m--------mm--m-----------mm ` ! 0 `` ! КОД БЛОКА ! ЮЮ ЮЮ Ю! ! ENDMOD=6 `` ! ` ` ------------------------------------ ` ДЛИНА БЛОКА ENDMOD - ОДНО СЛОВО. 4.3. ЛИСТИНГ ЛИСТИНГ ПРЕДСТАВЛЯЕТ СОБОЙ РЕЗУЛЬТАТ ТРАНСЛЯЦИИ ПРОГРАММЫ, КОТОРЫЙ ВЫВОДИТСЯ НА ТЕРМИНАЛ ИЛИ НА ПЕРИФЕРИЙНОЕ УСТРОЙСТВО И СОДЕРЖИТ ПРОГРАММУ В ИСХОДНОМ И ОБ'ЕКТНОМ ВИДЕ, СООБЩЕНИЯ ОБ ОШИБКАХ И ТАБЛИЦУ ИМЕН. ЛИСТИНГ ВЫДАЕТСЯ ПО СТРАНИЦАМ. НА РИС. Ю1 КАЖДОЕ ПОЛЕ@ЛИСТИНГА ПОМЕЧЕНО ЦИФРОЙ. @ Ю Я ПОЛЕ ОГЛАВЛЕНИЯ ПЕРВАЯ СТРОКА - ИНФОРМАЦИОННАЯ. ОНА СОДЕРЖИТ: - НАИМЕНОВАНИЕ ОБ'ЕКТНОГО МОДУЛЯ; - НАИМЕНОВАНИЕ АССЕМБЛЕРА И ЕГО ВЕРСИЮ; - ДАТУ (ЧИСЛО, МЕСЯЦ, ГОД); - ВРЕМЯ ДНЯ (ЧАС, МИНУТА, СЕКУНДА) ПОСЛЕДУЮЩИЕ СТРОКИ ОГЛАВЛЕНИЯ СОДЕРЖАТЮ ПОДЗАГОЛОВКИ С УКАЗАНИЕМ НОМЕРА СТРАНИЦЫ И НОМЕРА СТРОКИ СООТВЕТСТВУЮЩЕЙ ДИРЕКТИВЫ .SBTTL. 2 ПОЛЕ ЗАГОЛОВКА СТРАНИЦЫ СОДЕРЖИТ ИНФОРМАЦИОННУЮ СТРОКУ С УКАЗАНИЕМ НОМЕРА СТРАНИЦЫ ЛИСТИНГА И ПОДЗАГОЛОВОК, ОПРЕДЕЛЕННЫЙ ДИРЕКТИВОЙ .SBTTL. 3 ПОЛЕ ОШИБКИ ЗАПОЛНЯЕТСЯ В СЛУЧАЕ ОБНАРУЖЕНИЯ ОШИБКИ, СОДЕРЖИТ НЕ БОЛЕЕ ЧЕТЫРЕХ СООБЩЕНИЙ НА СТРОКЕ (СМ. ТАБЛ. 8). 4 ПОЛЕ НОМЕРА СТРОКИ СОДЕРЖИТ ПОРЯДКОВЫЙ НОМЕР СТРОКИ ИСХОДНОЙ ПРОГРАММЫ. 5 ПОЛЕ СЧЕТЧИКА АДРЕСА СОДЕРЖИТ ВОСЬМЕРИЧНЫЙ АДРЕС ОПЕРАТОРА. 6 ПОЛЕ КОМАНДЫ СОДЕРЖИТ ОБ'ЕКТНЫЕ КОДЫ В ВОСЬМЕРИЧНОМ ВИДЕ. 7 ПОЛЕ МОДИФИКАЦИИ СОДЕРЖИТ ПРИЗНАК МОДИФИЦИРУЕМЫХ ДАННЫХ: G - ГЛОБАЛЬНОЕ ИМЯ; C - ПЕРЕМЕЩАЕМОЕ ИМЯ; '(AПOСTРOФ)- ОПЕРАНД. 8 ПОЛЕ ОПЕРАТОРА СОДЕРЖИТ ОПЕРАТОРЫ ИСХОДНОЙ ПРОГРАММЫ. 9 ПОЛЕ ТАБЛИЦЫ ИМЕН СОДЕРЖИТ ИМЕНА ПОЛЬЗОВАТЕЛЯ В АЛФАВИТНОМ ПОРЯДКЕ И СПИСОК ПРОГРАММНЫХ СЕКЦИЙ В ПОРЯДКЕ ПОЯВЛЕНИЯ ИХ В ПРОГРАММЕ. ДЛЯ ИМЕН ПОЛЬЗОВАТЕЛЯ УКАЗЫВАЕТСЯ: 1) ИМЯ ПОЛЬЗОВАТЕЛЯ; 2) ЗНАЧЕНИЕ ИМЕНИ (******, ЕСЛИ ИМЯ НЕ ОПРЕДЕЛЕНО); 3) ПРИЗНАК ИМЕНИ: ПРОБЕЛ - АБСОЛЮТНОЕ R - ОТНОСИТЕЛЬНОЕ; X - ВНЕШНЕЕ; G - ГЛОБАЛЬНОЕ. ДЛЯ ПРОГРАММНЫХ СЕКЦИЙ УКАЗЫВАЕТСЯ: 1) ИМЯ СЕКЦИИ; 2) ДЛИНА СЕКЦИИ; 3) НОМЕР СЕКЦИИ: 00 - АБСОЛЮТНОЙ; 01 - НЕИМЕНОВАННОЙ ПЕРЕМЕЩАЕМОЙ; 02 И Т.Д. - ИМЕНОВАННОЙ. 10 ПОЛЕ КОМАНДНОЙ СТРОКИ ПОВТОРЯЕТ ВВЕДЕННУЮ КОМАНДНУЮ СТРОКУ АССЕМБЛЕРА. 11 ПОЛЕ СТРОКИ ОШИБОК СОДЕРЖИТ ОБЩЕЕ ЧИСЛО ОШИБОК, ОБНАРУЖЕННЫХ В ИСХОДНОН ПРОГРАММЕ. ФОРМАТ ЛИСТИНГА МОЖНО ИЗМЕНИТЬ, ЗАДАВ В КОМАНДНОЙ СТРОКЕ ПЕРЕКЛЮЧАТЕЛЬ УПРАВЛЕНИЯ ЛИСТИНГОМ /L:АРГ ИЛЫ /N:АРГ, СМ. П> 2.3.1. 4.4. ТАБЛИЦА ПЕРЕКРЕСТНЫХ ССЫЛОК ТАБЛЫЦА ПЕРЕКРЕСТНЫХ ССЫЛОК ПЕЧАТАЕТСЯ ЗА ЛИСТИНГОМ. ПОЛНАЯ РАСПЕЧАТША ТАБЛИЦЫ ПЕРЕКРЕСТНЫХ ССЫЛОК СОСТОИТ ИЗ ШЕСТИ ПОЛЕЙ (СМ. РИС. 2). КАЖДОЕ ПОЛЕ НАЧИНАЕТСЯ С НОВОЙ СТРАНИЦЫ. 1 imena polxzowatelq 2 imena registrow 3 imena makrokomand 4 postoqnnye imena 5 imena programmnyh sekcij 6 o{ibki ssylki pe~ata`tsq w wide P-L ,ГДЕ P-НОМЕР СТРАНИЦЫ, В КОТОРОЙ ПОЯВЛЯЕТСЯ ИМЯ ИЛИ КОД ОШИБКИ, А L - НОМЕР СТРОКИ. ЗНАК "#" ВСЛЕД ЗА ССЫЛКОЙ УКАЗЫВАЕТ НА ОПРЕДЕЛЕНИЕ ИМЕНИ. ЗНАК "*" СООТВЕТСТВУЕТ ИМЕНИ, ИЗМЕНЯЮЩЕМУ СВОЕ ЗНАЧЕНИЕ. 1 TAIP MACRO B03.00 3-JAN-85 00:08:58 TABLE OF CONTENTS ------------------------------------------------------------ 1- 2 KONTROL PRIMER 2 TAIP MACRO B03.00 00:08:58 PAGE 1 ------------------------------------------------------------ 3 ! 4! 5 ! 6 !7! 8 ! 1! ! ! ! .TITLE TAIP ! 2! ! ! ! .SBTTL KONTROL PRIMER ! 3! ! ! ! .GLOBL SUBR1,SUBR2 ! 4!000000! ! ! .CSECT PROG ! 5! ! ! ! .MCALL .TTYIN ! 6!000000!012702! !START: MOV #BUFFER,R2 ! ! !000026!'! ! 7!000004!110022! ! MOVB RO,(R2)+ U ! 8!000006!120027! ! CMPB RO,#LF ! ! !000000! ! ! 9!000012!105022! ! CLRB (R2)+ ! 10!000014!004767! ! JSR PC,SUBR1 ! ! !000000!G! ! 11!000020!103767! ! BCS START ! 12!000022! ! ! .TTYIN ! 13!000026! ! !BUFFER: .BLOB 72 ! 14! !000000!'! .енд старт ----------/--------------?--=--М-----------/--М----/-М?----- 9 эаип Ю мацро б03.00 3-йан-85 00:08:58 пагм 1-1 сЫмбол табле BUFFGR 000036S! 002 START 000000R 002 SUBR2 = *:**j: G LF 0 0} ****** SUBR1 = ***.** o0 . ABS. 000800 000 R PC,SUBR1 ! ! !000000!G! ! 11!000020!103767! ! BCS START ! 12!000022! ! ! .TTYIN ! 13!000026! ! !BUFFER: .BLOB 72 ! 14! !000000!'! .енд старт ----------/------намиц меморы ажаилабле фор 68 пагес ------------------------------------------------------------ 10 ,дко:пр.лст/л:ттм=прог1 ------------------------------------------------------------ РИС. 1 ФРАГМЕНТ ЛИСТИНГА, ПОЛУЧЕННОГО С ИСПОЛЬЗОВАНИЕМ ПЕРЕКЛЮЧАТЕЛЯ /L:TTM 1 TAIR MACRO B03.00 00:12:27 PAGE S-1 CROSS REFERENCE TABLE (CREF B03.00 ) BUFFER 1-6 1-13# LF 1-8 START 1-6# 1-11 1-14 SUBR1 1-3 1-10 SUBR2 1-3 2 TAIP MACRO B03.00 00:12:27 PAGE R-1 CROSS REFERENCE TABLE (CREF B03.00 ) PC 1-10* RO 1-7 1-8 R2 1-6* 1-7* 1-9* 3 TAIP MACRO B02.00 00:12:2 PAGE M-1 CROSS REFERENCE TABLE (CREF B03.00 ) .TTYIN 1-5* 1-12 4 TAIP MACRO B03.00 00:12:27 PAGE P-1 CROSS REFERENGE TABLE (CREF B03.00 ) .BLKB 1-13 .CSECT 1-4 .END 1-14 .GLOBL 1-3 .IF 1-12 .MCALL 1-5 .SBTTL 1-2 .TITLE 1-1 BCS 1-11 1-12 CLRB 1-9 CMPB 1-8 EMT 1-12 JSR 1-10 MOV 1-6 MOVB 1-7 5 TAIP MACRO B03.00 00:12:27 PAGE C-1 CROSS REFERENCE TABLE (CREF B03.00 ) 0-0 .ABS. 0-0 PROG 1-4 6 TAIP MACRO B03.00 00:12:27 PAGE E-1 CROSS REFERENCE TABLE (CREF B03.00 ) U 1-8* РИС. 2 ТАБЛИЦА ПЕРЕКРЕСТНЫХ ССЫЛОК 5. СООБЩЕНИЯ 5.1. СООБЩЕНИЯ ПРОГРАММИСТУ ОШИБКИ, ОБНАРУЖЕННЫЕ В ИСХОДНОЙ ПРОГРАММЕ, ОТМЕЧАЮТСЯ В ЛИСТИНГЕ СООТВЕТСТВУЮЩИМИ СООБЩЕНИЯМИ. СООБЩЕНИЯ ПЕЧАТАЮТСЯ В ПОЛЕ ОШИБКИ (СМ. П. 4.3). ДЛЯ ИСПРАВЛЕНИЯ ОШИБОК НЕОБХОДИМО ВНЕСТИ ИЗМЕНЕНИЯ В ИСХОДНУЮ ПРОГРАММУ И ПОВТОРНО ЕЕ ПРОТРАНСЛИРОВАТЬ. ТАБЛИЦА 8 СООБЩЕНИЯ ПРОГРАММИСТУ ------------------------------------------------------------ ! СООБЩЕНИЕ! ПРИЧИНА ! ------------------------------------------------------------ ! A ! ОШИБКА АДРЕСАЦИИ ИЛИ ПЕРЕМЕЩЕНИЯ: ! ! ! - ПРЕВЫШЕНА ДОПУСТИМАЯ ВЕЛИЧИНА СМЕЩЕНИЯ В ! ! ! ! ! КОМАНДЕ УСЛОВНОГО ВВТВЛЕНИЯ (Т.Г. ОТ -128 ! ! 0 ! (ДЕСЯТИЧНОЕ) ДО 127 ,ДЕСЯТИЧООЕ)) ! ! ! - ОПЕРАТОР НЕПРАВИЛЬНО ИЗМЕЧЯЕТ СЧЕТЧИК ! ! ! ТЕКУЩЕГО АДРЕСА (НАПРИМЕР, ОПЕРАТОР ПРЕВЫСИЛ ! ! ! ! ! КОМАНДЕ УСЛОВНОГО ВВТВЛЕНИЯ (Т.Г. ОТ -128 ! ! 0 ! (ДЕСЯТИЧНОЕ) ДО 127 ,ДЕСЯТИЧООЕ)) ! ! ! - ОПЕРАТОР СОДЕРЖИТ НЕДОПУСТИМОЕ ВЫРАЖЕНИЕ, ! ! ! ОПРЕДЕЛЯЮЩЕЕ АДРЕС (НАПРИМЕР, АБСОЛЮТНОЕ ! ! ! ВЫРАЖЕНИЕ СОДЕРЖИТ ГЛОБАЛЬНОЕ ИМЯ, ПЕРЕМЕЩАЕ- ! ! ! МЫЙ ТЕРМ ИЛИ СОСТАВНОЙ ПЕРЕМЕЩАЕМЫЙ ТЕРМ). ! ! ! ДИРЕКТИВЫ АССЕМБЛЕРА .BLKB, .BLKW И .REPT ! ! ! ДОЛЖНЫ СОДЕРЖАТЬ АБСОЛЮТНОЕ ЗНАЧЕНИЕ ИЛИ ! ! ! ВЫРАЖЕНИЕ ! `! ` $0 1 1 " 0! otde|onnyh twug ot!dzuwa zapqt}mi 0 " "* ! # "0 `! ``` 2 ! ` 0 0 `  } !( !+ !! - o{iboa opredulr}lxnogo0imenk. 0 !! ( ! 0a%(( 4t"0 * "`p  ! ! ! wyravenie ! ! ! perwogo prohoda tablicu imen i predpolagaet ! ! ! wse neopredelennye imena globalxnymi. esli ! ! ! kakoe-nibudx iz |tih imen opredelqetsq pri ! ! ! wtorom prohode, proishodit ob}aq o{ibka ! ! ! adresacii ! ! ! - nedopustimye ssylki wpered: ! ! ! 1) operator prqmogo priswaiwaniq ! ! ! imq=wyravenie ! ! ! sodervit ssylku wpered ! ! ! 2) wyravenie, opredelq`}ee s~et~ik adresa, ! ! ! sodervit ssylku wpered ! ! ! - direktiwa assemblera w ishodnoj programme ! ! ! sodervit nedopustimyj argument, nedopustimyj ! ! ! ograni~itelx ili nedopustimu` konstrukci` ! ! ! argumentow ! ! w ! zna~enie s~et~ika adresa ne~etno; wo wremq ! ! ! translqcii zna~enie s~et~ika adresa uweli~i- ! ! ! waetsq na 1 ! ! D ! ОБРАЩЕНИЕ К МНОГОКРАТНО ОПРЕДЕЛЕННОМУ ИМЕНИ ! ! E ! ОТСУТСТВУЕТ ДИРЕКТИВА .END В КОНЦЕ ИСХОДНОЙ ! ! ! ПРОГРАММЫ. СИСТЕМА ЗАВЕРШАЕТ ТЕКУЩИЙ ПРОХОД ! ! ! ТРАЧСЭЯЦИИ ! ! I ! НЕДОПУСТИМЫЙ СИМВОЛ. НЕДОПУСТИМЫЙ СИМВОЛ В ! ! 0 ! ! ! L ! ИСХОДНАЯ СТРОКА СОДЕРЖИТ БОЛЕЕ 132 СИМВОЛОВ ! ! ! (НАПРИМЕР, ПРИ ЗАМЕНЕ ФОРМАЛЬНЫХ ПАРАМЕТРОВ ! ! ! ФАКТИЧЕСКИМИ В МАКРОРАСШИРЕНИЯХ) ! ! M ! МНОГОКРАТНОЕ ОПРЕДЕЛЕНИЕ МЕТКИ. МЕТКА ЭКВИ- ! ! ! ВАЛЕНТНА ПО ПЕРВЫМ ШЕСТИ СИМВОЛАМ РАНЕЕ ! ! ! ВСТРЕЧЕННОЙ МЕТКЕ ! ! N ! КОНСТАНТА СОДЕРЖИТ ЦИФРУ, КОТОРАЯ НЕ ВХОДИТ ! ! ! В ТЕКУЩУЮ СИСТЕМУ СЧИСЛЕНИЯ ПРОГРАММЫ, ! ! ! ШОНСТАНТА РАССМАТРИВАЕТСЯ КАК ДЕСЯТИЧНАЯ ! ! O ! ОШИБКА В ПОЛЕ ОПЕРАЦИИ: 0 ! ! N ! КОНСТАНТА СОДЕРЖИТ ЦИФРУ, КОТОРАЯ НЕ ВХОДИТ ! ! ! В ТЕКУЩУЮ СИСТЕМУ СЧИСЛЕНИЯ ПРОГРАММЫ, ! ! ЩСЛОВНОЙЮЭРАНСЛЯЦИИЮЮЮ Ю Ю А А #0 ? ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЭЪ00 ( 0 " "( ! !" Ю $А - НГ ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЫЪЩ ЧЯДЯННЪЕЪЪИЧЕК-! !!Ю! Ъ!ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪ Ъ"ЮЮЮ ЪЪЪЪЪЪЪЪЪЪЪЪЪЪ(Ъ П! УИЪОН .MGALL N ! КОНСТАНТА СОДЕРЖИТ ЦИФРУ, КОТОРАЯ НЕ ВХОДИТ ! ! ! В ТЕКУЩУЮ СИСТЕМУ СЧИСЛЕНИЯ ПРОГРАММЫ, ! ! ! - В БЛОКЕ ЛОКАЛЬНЫХ ИМЕН ПОЯВЛЯЕТСЯ МНОГОКРАТ-! ! ! НОЕ ОПРЕДЕЛЕНИЕ ЛОКАЛЬНОГО ИМЕНИ ! ! Q ! СИНТАКСИЧЕСКАЯ ОШИБКА В ОПЕРАТОРЕ: ! ! ! - ПРОПУЩЕН АРГУМЕНТ ! ! ! - УКАЗАН ЛИШНИЙ АРГУМЕНТ ! ! ! - НЕ ЗАКОНЧЕН ПРОСМОТР ОПЕРАТОРА ! ! R ! ОШИБКА РЕГИСТРА: ! ! ! - НЕДОПУСТИМОЕ ОБРАЩЕНИЕ К РЕГИСТРУ ! ! ! - ПОПЫТКА ПЕРЕОПРЕДЕЛИТЬ СТАНДАРТНОЕ ИМЯ РЕ- ! ! ! ГИСТРА БЕЗ ИСПОЛЬЗОВАНИЯ ДИРЕКТИВЫ .DSABL REG ! ! T ! ОШИБКА УСЕЧЕНИЯ: ! ! ! - СФОРМИРОВАННОЕ ЧИСЛО ЗАНИМАЕТЮБОЛЕЕ 16 РАЗ- ! ! ! РЯДОВ ! ! ! - ЗНАЧЕНИЕ ВЫРАЖЕНИЯ СОДЕРЖИТ БОЛЕЕ 8 РАЗРЯДОВ! ! ! ДЛЯ ДИРЕКТИВЫ .BYTE ИЛИ КОМАНДЫЮПРЕРЫВАНИЯ ! ! ! (EMT ИЛИ TRAP) ! ! U ! НЕОПРЕДЕЛЕННОЕ ИМЯ. НЕОПРЕДЕЛЕННОМУ ИМЕНИ ПРИ-! ! ! СВАИВАЕТСЯ НУЛЕВОЕ ЗНАЧЕНИЕ ! ! Z ! ВЫПОЛНЕНИЕ КООАНДЫ РАЗЛИЧНО0В ЭВМ "ЭЛЕКТРО- ! ! ! НИКА-60", ЭЛЕКТРОНИКА-100-25","ЭЭЕКТРОНИКА=79"! ! ! (НАПРИМГР, ДВУХАДРЕСНЫЕ КОМАНДЫ, ИМЕЮЩИЕ АДРЕ-! ! ! САЦИЮ RN, (RN)+; RN, -(RN); КОМАНДЫ JMP И JSR ! ! ! з ! ВЫПОЛНЕНИЕ КООАНДЫ РАЗЛИЧНО0В ЭВМ "ЭЛЕКТРО- ! ! ! НИКА-60", ЭЛЕКТРОНИКА-100-25","ЭЭЕКТРОНИКА=79"! ! УКАЗЫВАЮТ НА ПРЕЖДЕВРЕМЕННОЕ ПРЕКРАЩЕНИЕ ТРАНСЛЯЦИИ. ?MACRO-F-DEVICE FULL DEV ПРИЧИНА. НА ТОМЕ, ИСПОЛЬЗУЕМОМ ДЛЯ ВЫВОДА, НЕДОСТАТОЧНО СВОБОДНОГО МЕСТА ДЛЯ РАЗМЕЩЕНИЯ ВЫХОДНОГО ФАЙЛА. ДЕЙСТВИЕ. ОСВОБОДИТЬ МЕСТО НА ТОМЕ ИЛИ ИСПОЛЬЗОВАТЬ ДЛЯ ВЫВОДА ДРУГОЙ ТОМ. ?MACRO-F-FILE NOT FOUND DEV:FILNAM.TYP ПРИЧИНА. ФАЙЛ, УКАЗАННЫЙ В КОМАНДНОЙ СТРОКЕ, НЕ НАЙДЕН. ДЕЙСТВИЕ. ПРОВЕРИТЬ, СУЩЕСТВУЕТ ЛИ ФАЙЛ С УКАЗАННЫМ ИМЕНЕМ. ВВЕСТИ ПРАВИЛЬНУЮ КОМАНДНУЮ СТРОКУ. ?MACRO-F-.INCLUDE DIRECTIVE FILE ERROR ПРЫЧИНА. ФАЙЛ, УКАЗАННЫЙ В ДИРЕКТИВЕ .INCLUDE, НЕ СУЩЕСТВУЕТ, ИЛИ В ДИРЕКТИВЕ УКАЗАНА НЕДОПУСТИМАЯ СПЕЦИФИКАЦИЯ ФАЙЛА. В КОМАНДНОЙ СТРОКЕ УКАЗАНО НЕДОПУСТИМОЕ ИМЯ УСТРОЙСТВА. УРОВЕНЬ ВЛОЖЕНИЯ ИСХОДНЫХ ФАЙЛОВЮПО ДИРЕКТИВЕ .INCLUDE ПРЕВЫШАЕТ 7. ДЕЙСТВИЕ. ПРОЪЕРИТЬ ВВЕДЕННУЮ КОМАНДНУЮ СТРОКВ ИЮ ВЪЕСТИ ДОПУСТИМЪЮ ДЛЯ ДИРЕКТИВЫ 0.INCLUDM СПЕЦИФИКАГИЮ p fajla." wnowx !wwesti komandn` stroku, uka~aw " dopustime imq ustsjstwa. `.INCLUDE, НЕ СУЩЕСТВУЕТ, ИЛИ В ДИРЕКТИВЕ УКАЗАНА НЕДОПУСТИМАЯ СПЕЦИФИКАЦИЯ ФАЙЛА. В КОМАНДНОЙ СТРОКЕ УКАЗАНО НЕДОПУСТИМОЕ ИМЯ ЮУСТРОЙСТВА. УРОВЕНЬ ВЛОЖЕНИЯ ИСХОДНЫХ ФАЙЛОВ ПО ДИРЕКТИВЕ .I|89739066>2679>;46z;2v6?4><7q2690?39:=4:hH;^ZY\[]Z\[_[Zh_ Y[^[[{Y]H=][nKBC X\^Z^ ]\[; [ H{<{[[Y?HdnmЪ?ЪЪЪЪЪЪЪЪ!а!аАа!аЪаЪЪЪЪЪЪЪЪЪЪЪЪД$ .INCLUDE, НЕ СУЩЕСТВУЕТ, ИЛИ В ДИРЕКТИВЕЮУКАЗАНА НЕДОПУСТИМАЯ СПЕЦИФИКАЦИЯ ФАЙЛА. В КОМАНДНОЙ СТРОКЕ УКАЗАНО НЕДОПУСТИМОЕ ИМЯ УСТРОЙСТВА. УРОВЕНЬ ВЛОЖЕНИЯ ИСХОДНЫХ ФАЙЛОВ ПО ДИРЕКТИВЕ .Iy, ` umenx{iw maksimalxnoe ~islo kanalow, otkrytyh ` odnowremenno, ili razbiw programmu na nebolx{ie ` moduli dlq uweli~eniq owerlejnogo |ffekta, ili ispolxzowaw algoritm, trebu`}ij minimalxnyj ob'em pamqti, ili zapisaw ` dannye na periferijnye ustrojstwa). ?MACRO-F-INVALID COMMAND ПРИЧИНА. КОМАНДНАЯ СТРОКА СОДЕРЖИТ СИНТАКСИЧЕСКУЮ ОШИБКУ ИЛИ БОЛЕЕ ШЕСТИ СПЕЦИФИКАЦИЙ ФАЙЛОВ. ДЕЙСТВИЕ. ВВЕСТИ ПРАВИЛЬНУЮ КОМАНДНУЮ СТРОКУ. ?MACRO-F-INVALID DEVICE DEV: ПРИЧИНА. УКАЗАННОЕ УСТРОЙСТВО НЕ ОБСЛУЖИВАЕТСЯ СИСТЕМОЙ. ДЕЙСТВИЕ. УСТАНОВИТЬ В СИСТЕМЕ ОБСЛУЖИВАНИЕ ТРЕБУЕМОГО УСТРОЙСТВА, ЛИБО ИСПОЛЬЗОВАТЬ ДРУГОЕ УСТРОЙСТВО. ?MACRO-F-INVALID MACRO LIRARY ПРИЧИНА. ФАЙЛ МАКРОБИБЛИОТЕКИ ПОВРЕЖДЕН ИЛИ СОЗДАН НЕ БИБЛИОТЕКАРЕМ СИСТЕМЫ ФОДОС-2. ДЕЙСТВИЕ. ИСПОЛЬЗОВАТЬ ПРОГРАММУ LIBR ДЛЯ СОЗДАНИЯ НОВОЙ КОПИИ SYSMAC.SML. ?MACRO-F-INVALID OPTION: /X ПРИЧИНА. УКАЗАН НЕДОПУСТИМЫЙ ПЕРЕКЛЮЧАТЕЛЬ /X. ДЕЙСТВИЕ. ПРОВЕРИТЬ ПЕРЕКЛЮЧАТЕЛЬ, ЮУКАЗАННЫЙ В КОМАНДНОЙ СТРОКЕ, И ВВЕСТИ ПРАВИЛЬНУЮ КОМАНДНУЮ СТРОКУ. ?MACRO-F-I/O ERROR ON DEV:FILNAM.TYP ПРИЧИНА. ОШИБКА ПРИ СЧИТЫВАНИИ ИЛИ ЗАПИСИ УКАЗАННОГО ФАЙЛА. ДЕЙСТВИЕ. ПРОВЕРИТЬ ИСПРАВНОСТЬ И ГОТОВНОСТЬ ОБОРУДОВАНИЯ. ?MACRO-F-I/O ERROR ON WORKFILE ПРИЧИНА. ОШИБКА ПРИ СЧИТЫВАНИИ ИЛИ ЗАПИСИ РАБОЧЕГО ФАЙЛА WRK.TMP. ЭТА ОШИБКА МОЖЕТ ПРОИЗОЙТИ ПРИ НЕДОСТАТОЧНОЙ ОБЛАСТИ НА ДИСКЕ ДЛЯ РАЗМЕЩЕНИЯ РАБОЧЕГО ФАЙЛА. ДЕЙСТВИЕ. ПРОВЕРИТЬ ИСПРАВНОСТЬ И ГОТОВНОСТЬ ОБОРУДОВАНИЯ, И ИСПОЛЬЗОВАТЬ КОМАНДУ SQUEEZE ИЛИ ПЕРЕКЛЮЧАТЕЛЬ /S ПРОГРАММЫ DUP ДЛЯ СЖАТИЯ ТОМА И РАЗМЕЩЕНИЯ РАБОЧЕГО ФАЙЛА. ?MACRO-F-.LIBRARY DIRECTIVE FILE ERROR ПРИЧИНА. ФАЙЛ, УКАЗАННЫЙ В ДИРЕКТИВЕ .LIBRARY, НЕ Ю СУЩЕСТВУЕТ, ИЛИ В ДИРЕКТИВЕ УКАЗАНА НЕДОПУСТИМАЯ СПЕЦИФИКАЦИЯ ФАЙЛА. СПЕЦИФИКАЦИЯ ФАЙЛА, УКАЗАННАЯ Ю В ДИРЕКТИВЕ .LIBRARY, СОДЕРЖИТ ИМЯ УСТРОЙСТВА ПОСЛЕДОВАТЕЛЬНОГО ДОСТУПА. КОНФИГУРАЦИЯ@@ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ НЕ СОДЕРЖИТ УСТРОЙСТВO, УКАЗАННОЕ В КОМАНДНОЙЮЮСТРОКЕН Ю УРОВЕНЬЮЮВЛОЖЕНИЯ @ ЮЮЮ ФАЙЛОВ ПОЮДИРЕКТИВЕ .LIBRARY ПРЕВЫСИЛ ДОПУСТИМЫЙ. ДЕЙСТВИЕ. ПРОВЕРИТЬ ВВЕДЕННУЮ КОМАНДНУЮ СТРОКУ, ИЮ ВВЕСТИ@@ЮЮ ЮЮЮЮЮЮЮДОПУСТИМУЮ ДЛЯ ДИРЕКТИВЫ .LIBRARY СПЕЦИФИКАЦИЮ ФАЙЛА. УБЕДИТЬСЯ, ЧТО СПЕЦИФИКАЦИЯ ФАЙЛА, УКАЗАННАЯ В ДЫРЕКТИВЕ .LIBRARY, СОДЕРЖИТ ИМЯ УСТРОЙСТВА ПРЪЫЗВОЛЬНОГО ДОСТУПА. ВВЕСТИ НОВУЮ КОМАНДНУЮ СТРОКУ, СОДЕРЖАЩУЮ ИОЯ УСТРОЙСТВА КОНФИГУРАЦИИ ДАННОЙ ВЫЧИСЛИТЕЛЬНОЙ СЫСТЕМЫ. ПРОВЕРИТЬ, ЧТОБЫ УРОВЕНЬ ВЛОЖЕНИЯ ФАЙЛОВ ПО ДИРЕКТИВЕ .LIBRARY НЕ ПРЕВЫСИЛ ДОПУСТИМОЕ ЗНАЧЕНИЕ. ?MACRO-F-PROTECTED FILE ALREADY EXISTS DEV:FILNAM.TYP ПРИЧИНА. ПОПЫТКА СОЗДАТЬ ФАЙЛ С ТАКИМ ЖЕ ИМЕНЕМ, КАК У ИМЕЮЩЕГОСЯ ЗАЩИЩЕННОГО ФАЙЛА. ДЕЙСТВИЕ. ОТМЕНИТЬ ЗАЩИТУ СУЩЕСТВУЮЩЕГО ФАЙЛА ПО КОМАНДЕ МОНИТОРА UNPROTECT ИЛИ ПО ПЕРЕКЛЮЧАТЕЛЮ /Z ПРОГРАММЫ PIP, ИЛИ УКАЗАТЬ ДРУГОЕ ИМЯ ДЛЯ СОЗДАВАЕМОГО ФАЙЛА. ?MACRO-F-STORAGE LIMIT EXCEEDED (64K) ПРИЧИНА. ПРОГРАММА ТРЕБУЕТ БОЛЕЕ 128К БАЙТ ПАМЯТИ ДЛЯ ХРАНЕНИЯ ТАБЛИЦЫ ВИРТУАЛЬНЫХ ИМЕН, В ТО ВРЕМЯ КАК СИСТЕМА ОТВОДИТ ДАННОЙ ТАБЛИЦЕ НЕ БОЛЕЕ 128К БАЙТ. ДЕЙСТВИЕ. ПРОВЕРИТЬ ПРИЧИНЫ, ВЫЗЫВАЮЩИЕ ПЕРЕПОЛНЕНИЕ ТАБЛИЦЫ ВИРТУАЛЬНЫХ ИМЕН. РАЗДЕЛИТЬ ИСХОДНУЮ ПРОГРАММУ НА НЕЗАВИСИМЫЕ МОДУЛИ, И ТРАНСЛИРОВАТЬ КАЖДЫЙ МОДУЛЬ ОТДЕЛЬНО. ?MACRO-W-I/O ERROR ON CREF FILE:CREF ABORTED ПРИЧИНА. НА ВЫХОДНОМ ТОМЕ НЕДОСТАТОЧНО СВОБОДНОГО МЕСТА ДЛЯ ВЫПОЛНЕНИЯ ОПЕРАЦИИ, ИЛИ ВО ВРЕМЯ ЗАПИСИ НА ТОМ РАБОЧЕГО ФАЙЛА CREF ПРОИЗОШЛА ОШИБКА ВВОДА = ВЫВОДА. ВЫВОД ФАЙЛА CREF ПРЕРЫВАЕТСЯ, НО ТРАНСЛЯЦИЯ ПРОДОЛЖАЕТСЯ. ДЕЙСТВИЕ. УВЕЛИЧИТЬ ЧА ТОМЕ ОБ'ЕМ СВОБОДНОЙ ПАМЯТИ (УДАЛИТЬ С ТОМА НЕНУЖНЫЕ ФАЙЛЫ; ИСПОЛЬЗОВАТЬ ПЕРЕКЛЮЧАТЕЛЬ /ALLOCItE ДЛЯ РЕЗЕРВКРОВАНИЯ НУЖНОГО КОЛЫЧЕСТВА ОПЕРАЦИИ, ИЛИ ВО ВРЕМЯ ЗАПИСИ НА ТОМ РАБОЧЕГО ФАЙЛА CREF ПРОИЗОШЛА ОШИБКА ВВОДА = ВЫВОДА. ВЫВОД ФАЙЛА CREF ПРЕРЫВАЕТСЯ, НО ТРАНСЛЯЦИЯ ПРОДОЛЖАЕТСЯ. ДЕЙСТВИЕ. УВЕЛИЧИТЬ ЧА ТОМЕ ОБ'ЕМ СВОБОДИШКЪВ ЪЪЪЪЪЪЪЪЪЪЪЪОЩГ. ИСЬОЛЬЗУЯ КОМАНДЫ MOuNT И FKSoOUNT.!"gwli $ $ pesepolnenie toma wsw$ e}e shranqutsq`! pos~w 0 xsi~qty|(mer,0ispolxzowatx`o} bolx{wj gmkos  ОПЕРАЦИИ, ИЛИ ВО ВРЕМЯ ЗАПИСИ НА ТОМ РАБОЧЕГО ФАЙЛА CREF ПРОИЗОШЛА ОШИБКА ВВОДА = ВЫВОДА. ВЫВОД ФАЙЛА CREF ПРЕРЫВАЕТСЯ, НО ТРАНСЛЯЦИЯ ПРОДОЛЖАЕТСЯ. ДЕЙСТВИЕ. УВЕЛИЧИТЬ ЧА ТОМЕ ОБ'ЕМ СВОБОСИСТЕМЫ 589.7545471.00042-01 90 01 2. ОПЕРАЦИОННАЯ СИСТЕМА ФОДОС-2 АССЕМБЛЕР. ОПИСАНИЕ ЯЗЫКА 589.7545471.00042-01 35 01 ! ! ` " sodervanie 0 ЛКСЖ 1> НАЗНАЧМНИЕ Ш УСЛОВИЯ ПРИМЕНЕНИЯ ПСОГРАММЫ ........` 05 2. ХАРАКЭЕРИСТЫЪИ ПРОГРАЩЪЫ ..>............../....... ( 72?1. ЗЕЖИМ4РИБОЭ ! ! ! ! ! ! ! Г)..........................//........./.../..... ` 11 2.3.2. ПЕРЕШЛЮЧАТЕЛИ УПРАВЛЕНИЯ ФУНКЦИЫМИ0 (/D:АРГ Ы /G:АРГ)................./......./..................... 13 2.3.3. ПЕРЕКЛЮЧАТЕЛЬ ОПРЕДЕЛЕНИЯ ФАЙЛА ! ! 19 4. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ......................... 20 4.1. ИСХОДНЫЙ МОДУЛЬ ................................ 20 4.2. ОБ'ЕКТНЫЙ МОДУЛЬ................................ 20 4.2.1. БЛОК СЛОВАРЯ ГЛОБАЛЬНЫХ ИМЕН (GSD) ........... 23 4.2.1.1. ИМЯ МОДУЛЯ (КОД ТИПА ЗАПИСИ - 0) ........... 25 4.2.1.2. ИМЯ СЕКЦИИ УПРАВЛЕНИЯ (КОД ТИПА ЗАПИСИ - 1). 26 4.2.1.3. ВНУТРЕННЕЕ ИМЯ (КОД ТИПА ЗАПИСИ - 2) ....... 26 4.2.1.4. АДРЕС СМЕЩЕНИЯ (КОД ТИПА ЗАПИСИ - 3) ....... 27 4.2.1.5. ГЛОБАЛЬНОЕ СИМВОЛИЧЕСКОЕ ИМЯ (КОД ТИПА ЗАПИСИ - 4) .......................................... 28 4.2.1.6. ИМЯ ПРОГРАММНОЙ СЕКЦИИ (КОД ТИПА ЗАПИСИ - 5) ...................................................... 29 4.2.1.7. ИДЕНТИФИКАЦИЯ ВЕРСИИ ПРОГРАММЫ (КОД ТИПА ЗАПИСИ - 6) .......................................... 29 4.2.1.8. ИМЯ ОТОБРАЖЕННОГО МАССИВА (КОД ТИПА ЗАПИСИ - 7)........................................... 30 4.2.2. БЛОК КОНЦА СЛОВАРЯ ГЛОБАЛЬНЫХ ИМЕН (ENDGSD)... 30 4.2.3. БЛОК ДВОИЧНОГО ТЕКСТА ПРОГРАММЫ (TXT)......... 31 4.2.4. БЛОК СЛОВАРЯ ПЕРЕМЕЩЕНИЯ (RLD) ............... 32 4.2.5. БЛОК СЛОВАРЯ ВНУТРЕННИХ ИМЕН (ISD) ........... 33 4.2.6. БЛОК КОНЦА ОБ'ЕКТНОГО МОДУЛЯ (ENDMOD)......... 33 4.3. ЛИСТИНГ ........................................ 33 4.4. ТАБЛИЦА ПЕРЕКРЕСТНЫХ ССЫЛОК .................... 36 5. СООБЩЕНИЯ ........................................ 39 5.1. СООБЩЕНИЯ ПРОГРАММИСТУ ......................... 39 5.2. СООБЩЕНИЯ ОПЕРАТОРУ ............................ 42 ПЕРЕЧЕНЬ ССЫЛОЧНЫХ ДОКУМЕНТОВ......................... 48