spamsink: (Default)
[personal profile] spamsink posting in [community profile] besm6
Магическая процедура, вызываемая в первой строке файла
https://github.com/besm6/besm6.github.io/blob/master/wiki/mkb-assembler-guide.txt

*CALL ASPID*D:MACROS

нашлась на образе диска ОС "Дубна". Она, в сущности, эквивалентна по смыслу юниксному пайпу
... | cat macros - | aspid
т.е. подсовывает в начало входного потока текст стандартных макросов, причем они хранятся в теле процедуры ASPID*D. С вызовом процедуры непосредственно с образа диска возникли проблемы, поэтому я просто скопировал текст макросов из дампа.

Так что
ШИФР 419999 ЗС5^
ЛЕН 67(2048)^
EEB1A3
*name 
*perso:671470
*main aspid
*no load list
*execute
%CK # #CHП _
#CCБ & #CПБ @ #ДCK58 #ДCЦ60 #HCЦ1 #PП
#MAKPO Г #A0 #HOBCЦ #БC3 #CГ0 #A0 #ПБ #Ц #KOHMAK
#MAKPO ГГ #KПБ #БC3 #A3 #KOHMAK
#MAKPO HA #A0 #KПБ #БC1 #BC2 #CГ0 #A3 #KOHMAK
#MAKPO ПEPH #A0 #KПБ #CГ6 #BC2 #БC1 #ЛA3 #KOHMAK      
#MAKPO ПEP #A0 #KПБ #CГ6 #BC2 #БC1 #A0 #KOHMAK  
#MAKPO ПAP #A0 #БC5 #CГ0 #BC10 #A6 #KOHMAK
#MAKPO ПOД #A12 #TAБ36 - #БC3 #KOHMAK     
#MAKPO Б #ПБ #KOHMAK
#MAKPO M #KПБ #KOHMAK 
(содержимое https://github.com/besm6/besm6.github.io/blob/master/wiki/mkb-assembler-guide.txt без строки *CALL ASPID*D)
*end file
``````
ЕКОНЕЦ


Выдают примерно следующее:









      А.Л. ДАВЫДОВ



   ЖЖЖ   ЖЖЖ   ЖЖЖ  ЖЖЖЖ  Ж   Ж ЖЖЖЖЖ   ЖЖЖ ЖЖЖЖ  ЖЖЖЖ
  Ж   Ж Ж   Ж Ж   Ж Ж     ЖЖ ЖЖ Ж      Ж  Ж Ж     Ж   Ж
  Ж   Ж Ж     Ж     Ж     Ж Ж Ж Ж      Ж  Ж Ж     Ж   Ж
  Ж   Ж Ж     Ж     ЖЖЖ   Ж Ж Ж ЖЖЖЖ   Ж  Ж ЖЖЖ   ЖЖЖЖ
  ЖЖЖЖЖ Ж     Ж     Ж     Ж   Ж Ж   Ж  Ж  Ж Ж     Ж
  Ж   Ж Ж   Ж Ж   Ж Ж     Ж   Ж Ж   Ж  Ж  Ж Ж     Ж
  Ж   Ж  ЖЖЖ   ЖЖЖ  ЖЖЖЖЖ Ж   Ж ЖЖЖЖ  Ж   Ж ЖЖЖЖЖ Ж




      Ж   Ж Ж  Ж  ЖЖЖЖЖ        ЖЖЖ   ЖЖЖ   ЖЖЖ    Ж
      ЖЖ ЖЖ Ж Ж   Ж           Ж   Ж Ж     Ж   Ж  ЖЖ
      Ж Ж Ж ЖЖЖ   ЖЖЖЖ   ЖЖЖ   ЖЖЖ  ЖЖЖЖ  Ж   Ж   Ж
      Ж   Ж Ж  Ж  Ж   Ж       Ж   Ж Ж   Ж Ж   Ж   Ж
      Ж   Ж Ж   Ж ЖЖЖЖ         ЖЖЖ   ЖЖЖ   ЖЖЖ   ЖЖЖ























                         МОСКВА 1988





3 СОДЕРЖАНИЕ. 1. ВВЕДЕНИЕ . . . . . . . . . . . . . . 5 2. ЭЛЕМЕНТАРНЫЕ КОНСТРУКЦИИ . . . . . . . . 7 3. СИНТАКСИС ЯЗЫКА. КОМАНДЫ. ВХОДНОЙ ЯЗЫК . . . . 10 3.1 КОММЕНТАРНЫЕ СТРОКИ . . . . . . . . . 10 3.2 ОПЕРАТОРЫ . . . . . . . . . . . . 10 3.3 ПОЛЯ ОПЕРАТОРА - КОМАНДЫ . . . . . . . 11 3.4 ЛИТЕРАЛЫ . . . . . . . . . . . . 13 3.5 ЛОКАЛЬНЫЕ МЕТКИ . . . . . . . . . . 15 3.6 ВХОДНОЙ ЯЗЫК . . . . . . . . . . . 15 4. ПСЕВДОИНСТРУКЦИИ . . . . . . . . . . . 17 4.1 ЗАГОЛОВОК, ВХОДЫ И ВНЕШНИЕ ПОДПРОГРАММЫ . . 17 4.2 ОПИСАНИЯ СОММОN-БЛОКОВ . . . . . . . . 18 4.3 ФОРМИРОВАНИЕ ПЕРЕМЕННЫХ И КОНСТАНТ . . . . 19 4.4 ЭКВИВАЛЕНТНОСТИ . . . . . . . . . . 24 4.5 РЕЗЕРВИРОВАНИЕ ПАМЯТИ . . . . . . . . 25 4.6 ИНСТРУКЦИЯ ВLОСК . . . . . . . . . . 26 4.7 ИНСТРУКЦИИ САLL И ЕJМР . . . . . . . 27 5. ФОРМИРОВАНИЕ НАЧАЛЬНОГО СОСТОЯНИЯ СОММОN-БЛОКОВ 29 5.1 НЕПОСРЕДСТВЕННАЯ РАССЫЛКА ДАННЫХ . . . . 29 5.2 ПОДПРОГРАММА - ВLОСК DАТА . . . . . . 30 6. СТРУКТУРА ПОДПРОГРАММЫ . . . . . . . . . 32 6.1 СТРУКТУРА ТЕКСТА ПОДПРОГРАММЫ . . . . . 32 6.2 СТРУКТУРА ЗАГРУЖЕННОЙ ПОДПРОГРАММЫ . . . 33 7. РАСПРЕДЕЛЕНИЕ ПАМЯТИ В ПРОГРАММЕ . . . . . . 35 7.1 ОБЛАСТИ ПАМЯТИ . . . . . . . . . . 35 7.2 ПОРЯДОК РАСПОЛОЖЕНИЯ ПОДПРОГРАММ И СОММОN-БЛОКОВ . . . . . . . . . . 36 8. ОБЩЕСИСТЕМНЫЕ СОГЛАШЕНИЯ . . . . . . . . 38 8.1 МЕЖПРОГРАММНЫЙ ИНТЕРФЕЙС . . . . . . . 38 8.2 ИСПОЛЬЗОВАНИЕ ИНДЕКСНЫХ РЕГИСТРОВ . . . . 39 8.3 ДИНАМИЧЕСКИЕ ПЕРЕМЕННЫЕ . . . . . . . 40 8.4 ИСПОЛЬЗОВАНИЕ МАГАЗИНА . . . . . . . 41 9. ДИАГНОСТИЧЕСКИЕ СООБЩЕНИЯ . . . . . . . . 42 10. РЕАЛИЗАЦИЯ ТРАНСЛЯТОРА . . . . . . . . . 43 11. СПИСОК ЛИТЕРАТУРЫ . . . . . . . . . . . 44
5 6 1. ВВЕДЕНИЕ - СДЕЛАТЬ ПЕРЕХОД НА НОВЫЙ ЯЗЫК ПРОГРАММИРОВАНИЯ ДЛЯ ЧЕЛОВЕКА, ЗНАЮЩЕГО МАDLЕN, КАК МОЖНО БОЛЕЕ ПРОСТЫМ, Т.Е. СОБЛЮСТИ ТРАДИЦИИ, СЛОЖИВШИЕСЯ В МАDLЕN’Е; - УСТРАНИТЬ, НАСКОЛЬКО ВОЗМОЖНО, НЕДОСТАТКИ, ПРИСУЩИЕ АССЕМБЛЕР ПРЕДНАЗНАЧЕН ДЛЯ ЭВМ МКБ-8601, СОЗДАВАЕМОЙ В МАDLЕN’У. ОИЯИ В РАМКАХ ПРОЕКТА RЕТRО-86. ТРАНСЛЯТОР НАПИСАН НА АВТОКОДЕ МАDLЕN-3 [1,2,3] ЭВМ БЭСМ-6, ЧТО И ОПРЕДЕЛЯЕТ В СВЯЗИ С ЭТИМ В АССЕМБЛЕРЕ ИСПОЛЬЗОВАНО МАДЛЕНОВСКОЕ ОБЛАСТЬ ЕГО ПРИМЕНЕНИЯ: ОН МОЖЕТ РАБОТАТЬ КАК НА БЭСМ-6, В РАСПОЛОЖЕНИЕ ПОЛЕЙ КОМАНДЫ В ОПЕРАТОРЕ (МЕТКА, МОДИФИКА- КАЧЕСТВЕ КРОСС-АССЕМБЛЕРА [4], ТАК И НЕПОСРЕДСТВЕННО НА ТОР, КОД ОПЕРАЦИИ (КОП), АДРЕСНАЯ ЧАСТЬ, КОММЕНТАРИЙ) И, НОВОЙ МАШИНЕ В РЕЖИМЕ ЭМУЛЯЦИИ БЭСМ-6. ГДЕ ЭТО ВОЗМОЖНО, СОХРАНЕНА МНЕМОНИКА КОМАНД И ПСЕВДОИН- СТРУКЦИЙ. ПРЕЖДЕ ЧЕМ ПРИСТУПИТЬ К ИЗЛОЖЕНИЮ ЯЗЫКА АССЕМБЛЕРА, НЕОБХОДИМО СКАЗАТЬ НЕСКОЛЬКО СЛОВ О СТРУКТУРЕ ПРОГРАММЫ ВМЕСТЕ С ТЕМ ДЛЯ БОЛЬШЕЙ НАГЛЯДНОСТИ ВВЕДЕНО ЖЕСТКОЕ ПОЛЬЗОВАТЕЛЯ С ТОЧКИ ЗРЕНИЯ МОНИТОРНОЙ СИСТЕМЫ НОВОЙ МАШИ- РАЗДЕЛЕНИЕ ПОДПРОГРАММЫ НА ГРУППЫ: ВХОДЫ, ВНЕШНИЕ ИМЕНА, НЫ И О ПУТИ ПРЕОБРАЗОВАНИЯ ПРОГРАММЫ ОТ ТЕКСТОВОГО ПРЕД- ПЕРЕМЕННЫЕ, КОНСТАНТЫ, РАССЫЛКИ ДАННЫХ, КОМАНДЫ. ОПИСАНИЯ СТАВЛЕНИЯ ДО ЗАГРУЖАЕМОГО В ПАМЯТЬ ЭВМ КОДА. ПЕРЕМЕННЫХ И КОНСТАНТ СЛЕДУЮТ ПО ТЕКСТУ ПОДПРОГРАММЫ ДО КОМАНД, ХОТЯ И РАСПОЛАГАЮТСЯ В ПАМЯТИ (ПОСЛЕ ЗАГРУЗКИ) ПРОГРАММА СОСТОИТ, ВООБЩЕ ГОВОРЯ, ИЗ НЕСКОЛЬКИХ НЕЗАВИ- ЛИБО ПОСЛЕ КОМАНД (КОНСТАНТЫ), ЛИБО В СПЕЦИАЛЬНОЙ ОБЛАСТИ СИМО ТРАНСЛИРУЕМЫХ ПОДПРОГРАММ. РЕЗУЛЬТАТОМ РАБОТЫ ТРАН- ПАМЯТИ (ПЕРЕМЕННЫЕ). ВВЕДЕН МЕХАНИЗМ СТАТИЧЕСКОГО КОНТРОЛЯ СЛЯТОРА ЯВЛЯЕТСЯ ОБ’ЕКТНЫЙ МОДУЛЬ ПОДПРОГРАММЫ. ПОДРОБНО СВЯЗЕЙ МЕЖДУ ПОДПРОГРАММАМИ, ПОЯВИЛОСЬ ПОНЯТИЕ НЕИНИЦИАЛИ- СТРУКТУРА ОБ’ЕКТНОГО МОДУЛЯ ОПИСЫВАЕТСЯ В ПРИЛОЖЕНИИ А, ЗИРОВАННОЙ ПЕРЕМЕННОЙ. ЗДЕСЬ-ЖЕ ОТМЕТИМ ЛИШЬ, ЧТО ОН СОДЕРЖИТ: В АССЕМБЛЕРЕ ИСПОЛЬЗОВАНЫ ТРИ СИСТЕМЫ СЧИСЛЕНИЯ: ШЕС- - МАШИННЫЙ КОД ПОДПРОГРАММЫ, АДРЕСА В КОТОРОМ НЕ СФОР- ТНАДЦАТИРИЧНАЯ, ДЕСЯТИЧНАЯ И ВОСЬМЕРИЧНАЯ, ПРИЧЕМ ВОСЬМЕ- МИРОВАНЫ ОКОНЧАТЕЛЬНО; РИЧНАЯ ОСТАВЛЕНА КАК ВСПОМОГАТЕЛЬНАЯ. - ИМЕНА ВНЕШНИХ ОБ’ЕКТОВ: ПОДПРОГРАММ, К КОТОРЫМ МОГУТ КОРЕННЫЕ ИЗМЕНЕНИЯ ПРЕТЕРПЕЛ ОБ’ЕКТНЫЙ МОДУЛЬ ПОДПРОГ- БЫТЬ ОБРАЩЕНИЯ И ОБЩИХ С ДРУГИМИ ПОДПРОГРАММАМИ РАММЫ. ЕГО СТРУКТУРА ТАКОВА, ЧТО ЗАГРУЗКА ОСУЩЕСТВЛЯЕТСЯ СОММОN-БЛОКОВ ПАМЯТИ, К КОТОРЫМ ВОЗМОЖЕН ДОСТУП ИЗ ЗА ОДИН ПРОХОД ПО ОБ’ЕКТНОМУ МОДУЛЮ, ПРИ ЭТОМ СРАЗУ ДАННОЙ ПОДПРОГРАММЫ; ОСУЩЕСТВЛЯЕТСЯ НАСТРОЙКА АДРЕСОВ ПРОГРАММЫ. - ИНФОРМАЦИЮ ДЛЯ ОКОНЧАТЕЛЬНОЙ НАСТРОЙКИ АДРЕСОВ В МАШИННОМ КОДЕ ПОДПРОГРАММЫ. ИЗГОТОВЛЕНИЕМ ИЗ ЭТИХ ОТДЕЛЬНЫХ ОБ’ЕКТНЫХ МОДУЛЕЙ ЕДИ- НОЙ ПРОГРАММЫ И ЗАГРУЗКОЙ ЕЕ НЕПОСРЕДСТВЕННО В ПАМЯТЬ ЭВМ ЗАНИМАЕТСЯ ЗАГРУЗЧИК, А САМ ЭТОТ ПРОЦЕСС БУДЕТ В ДАЛЬНЕЙ- ШЕМ НАЗЫВАТЬСЯ ЗАГРУЗКОЙ. ПО ОКОНЧАНИИ СВОЕЙ РАБОТЫ ЗАГ- РУЗЧИК, КАК ПРАВИЛО, ПЕРЕДАЕТ УПРАВЛЕНИЕ НА НАЧАЛО ТОЛЬКО ЧТО ЗАГРУЖЕННОЙ ПРОГРАММЫ - НА НАЧАЛО ЕЕ ГОЛОВНОЙ ПОДПРОГ- РАММЫ. ИЗ ТАКОЙ СХЕМЫ СЛЕДУЕТ, В ЧАСТНОСТИ, ЧТО ОТДЕЛЬНЫЕ ПОДПРОГРАММЫ В ПРОГРАММЕ МОГУТ БЫТЬ НАПИСАНЫ НА РАЗНЫХ ЯЗЫКАХ ПРОГРАММИРОВАНИЯ, ПРИ УСЛОВИИ СОБЛЮДЕНИЯ СОГЛАШЕНИЙ О СВЯЗЯХ МЕЖДУ ПОДПРОГРАММАМИ. СОБЛЮДЕНИЕ ЭТИХ СОГЛАШЕНИЙ ВОЗЛОЖЕНО НА ТРАНСЛЯТОР, ЕСЛИ РЕЧЬ ИДЕТ О ЯЗЫКЕ ВЫСОКОГО УРОВНЯ, ИЛИ НА ПРОГРАММИСТА, ЕСЛИ РЕЧЬ ИДЕТ ОБ АССЕМБЛЕРЕ. ПЕРЕЙДЕМ ТЕПЕРЬ К САМОМУ ЯЗЫКУ АССЕМБЛЕРА. В НЕКОТОРОМ СМЫСЛЕ ЕГО МОЖНО СЧИТАТЬ ДАЛЬНЕЙШИМ РАЗВИ- ТИЕМ АВТОКОДА МАDLЕN-3, ЗАРЕКОМЕНДОВАВШЕГО СЕБЯ КАК УДОБ- НЫЙ, НАГЛЯДНЫЙ И ЭФФЕКТИВНЫЙ АВТОКОД. ПРИ РАЗРАБОТКЕ НОВО- ГО ЯЗЫКА СТАВИЛИСЬ СЛЕДУЮЩИЕ ЗАДАЧИ: - СОЗДАТЬ АССЕМБЛЕР, ГАРМОНИЧНО УЧИТЫВАЮЩИЙ СПЕЦИФИКУ НОВОЙ МАШИНЫ;
7 8 2. ЭЛЕМЕНТАРНЫЕ КОНСТРУКЦИИ ПРИМЕРЫ: А-В+1 -5 В АССЕМБЛЕРЕ ИСПОЛЬЗУЮТСЯ СЛЕДУЮЩИЕ ЭЛЕМЕНТАРНЫЕ КОН- 320*N>>10 СТРУКЦИИ: <СТРОКА> - ПОСЛЕДОВАТЕЛЬНОСТЬ СИМВОЛОВ. - <ЧИСЛО> <СПИСОК> - ПОСЛЕДОВАТЕЛЬНОСТЬ <ЭЛЕМЕНТОВ СПИСКА>, ОТДЕ- - <ЧИСЛО СО ЗНАКОМ> ЛЕННЫХ ДРУГ ОТ ДРУГА ЗАПЯТЫМИ. СТРУКТУРА <ЭЛЕМЕНТА СПИСКА> ОГОВАРИВАЕТСЯ ОСОБО ВО ВСЕХ СЛУЧАЯХ ИСПОЛЬ- - <ИМЯ> ЗОВАНИЯ КОНСТРУКЦИИ <СПИСОК>. - <ТЕРМ> - <ЗНАК ОПЕРАЦИИ> КАЖДОМУ <ИМЕНИ> СТАВИТСЯ В СООТВЕТСТВИЕ НЕКОТОРОЕ <ЗНАЧЕНИЕ ИМЕНИ>. ВСЕ ЭТИ ЗНАЧЕНИЯ МОЖНО РАЗБИТЬ НА ТРИ - <ВЫРАЖЕНИЕ> ТИПА: - <СТРОКА> - АБСОЛЮТНЫЙ АДРЕС. ЕГО ЗНАЧЕНИЕ НЕ ЗАВИСИТ ОТ РАСПО- ЛОЖЕНИЯ ПОДПРОГРАММЫ В ПАМЯТИ МАШИНЫ. АБСОЛЮТНЫЙ - <СПИСОК> АДРЕС ЯВНО ОПРЕДЕЛЯЕТСЯ ПРИ ТРАНСЛЯЦИИ ПРОГРАММЫ. - ОТНОСИТЕЛЬНЫЙ АДРЕС. ЕГО ЗНАЧЕНИЕМ ЯВЛЯЕТСЯ СМЕЩЕНИЕ ОТ НАЧАЛА ОБЛАСТИ КОМАНД ИЛИ ОБЛАСТИ ПЕРЕМЕННЫХ КОНСТРУКЦИЯ ПОДПРОГРАММЫ. ПОДРОБНО ОБ ЭТИХ ОБЛАСТЯХ ГОВОРИТСЯ В ГЛАВЕ 7. ПОКА ОТМЕТИМ ЛИШЬ, ЧТО ВЕЛИЧИНА СМЕЩЕНИЯ И <ЧИСЛО> ДЕЛИТСЯ НА ТРИ ТИПА: САМА ОБЛАСТЬ (КОНСТАНТЫ ИЛИ ПЕРЕМЕННЫЕ) ОПРЕДЕЛЯЮТСЯ ПРИ ТРАНСЛЯЦИИ, А АДРЕС Н А Ч А Л А ОБЛАСТИ СТА- <ДЕСЯТИЧНОЕ ЧИСЛО> - ПОСЛЕДОВАТЕЛЬНОСТЬ ДЕСЯТИЧНЫХ НОВИТСЯ ИЗВЕСТЕН ТОЛЬКО ПРИ ЗАГРУЗКЕ ПРОГРАММЫ В ЦИФР. ПАМЯТЬ. ИНЫМИ СЛОВАМИ, ОТНОСИТЕЛЬНЫЙ АДРЕС - ЭТО СУММА ДВУХ КОМПОНЕНТ: АДРЕСА НАЧАЛА ОБЛАСТИ (ОН ПРИМЕРЫ: 28, 455, 4096 СТАНОВИТСЯ ИЗВЕСТЕН ПРИ ЗАГРУЗКЕ) И СМЕЩЕНИЯ, ВЕ- ЛИЧИНА КОТОРОГО ИЗВЕСТНА УЖЕ ПРИ ТРАНСЛЯЦИИ. ИЗ <ШЕСТНАДЦАТИРИЧНОЕ ЧИСЛО> - ПОСЛЕДОВАТЕЛЬНОСТЬ ШЕСТНАД- ЭТОГО СЛЕДУЕТ, В ЧАСТНОСТИ, ЧТО РАЗНОСТЬ ДВУХ ОТНО- ЦАТИРИЧНЫХ ЦИФР, КОТОРАЯ ПРЕДВАРЯЕТСЯ СИМВОЛОМ "↑". СИТЕЛЬНЫХ АДРЕСОВ ИЗ ОДНОЙ ОБЛАСТИ ЕСТЬ АБСОЛЮТНЫЙ АДРЕС. ПРИМЕРЫ: ↑7F08, ↑15 - ВНЕШНИЙ АДРЕС. ЕГО ЗНАЧЕНИЕ НЕИЗВЕСТНО НА ЭТАПЕ <ВОСЬМЕРИЧНОЕ ЧИСЛО> - ПОСЛЕДОВАТЕЛЬНОСТЬ ВОСЬМЕРИЧНЫХ ТРАНСЛЯЦИИ И ОПРЕДЕЛЯЕТСЯ ЛИШЬ ПРИ ЗАГРУЗКЕ. ЦИФР, КОТОРАЯ ПРЕДВАРЯЕТСЯ СИМВОЛОМ "≠". ПРИМЕРЫ: ≠77, ≠5252 ЗНАЧЕНИЕМ СПЕЦИАЛЬНОГО ИМЕНИ "*" ЯВЛЯЕТСЯ ОТНОСИТЕЛЬНЫЙ <ЧИСЛО СО ЗНАКОМ> - ЧИСЛО, КОТОРОМУ ПРЕДШЕСТВУЕТ ЗНАК АДРЕС КОМАНДЫ, В КОТОРОЙ ЭТО ИМЯ ИСПОЛЬЗОВАНО. "+" ИЛИ "-". ЗНАК "+" МОЖЕТ БЫТЬ ОПУЩЕН. ВЫРАЖЕНИЕ ВЫЧИСЛЯЕТСЯ СТРОГО СЛЕВА НАПРАВО, ПРИОРИТЕТ <ИМЯ> - ПОСЛЕДОВАТЕЛЬНОСТЬ ИЗ БУКВ И ЦИФР ДЛИНОЙ ОТ ВСЕХ ОПЕРАЦИЙ ОДИНАКОВ (!). ОДНОГО ДО ВОСЬМИ СИМВОЛОВ, НАЧИНАЮЩАЯСЯ С БУКВЫ. СИМВОЛ _ (ПОДЧЕРК) СЧИТАЕТСЯ БУКВОЙ. ИМЯ, СОСТОЯЩЕЕ ДОПУСТИМЫЕ ОПЕРАЦИИ: ИЗ ОДНОГО ТОЛЬКО СИМВОЛА "*", ЯВЛЯЕТСЯ СПЕЦИАЛЬНЫМ ИМЕНЕМ. ЕГО СМЫСЛ ОГОВАРИВАЕТСЯ НИЖЕ. + СЛОЖЕНИЕ <ТЕРМ> - ЧИСЛО, ИМЯ ИЛИ СПЕЦИАЛЬНОЕ ИМЯ "*". - ВЫЧИТАНИЕ <ЗНАК ОПЕРАЦИИ> - СИМВОЛЫ + - * / >> << ∧ * УМНОЖЕНИЕ <ВЫРАЖЕНИЕ> - ПОСЛЕДОВАТЕЛЬНОСТЬ ТЕРМОВ, ОТДЕЛЕННЫХ / ДЕЛЕНИЕ ДРУГ ОТ ДРУГА ЗНАКАМИ ОПЕРАЦИЙ.
9 10 >> ЛОГИЧЕСКИЙ СДВИГ ВПРАВО. ЗНАЧЕНИЕ СЛЕДУЮЩЕГО ОПЕРАН- 3. СИНТАКСИС ЯЗЫКА. КОМАНДЫ. ВХОДНОЙ ЯЗЫК. ДА ОПРЕДЕЛЯЕТ ВЕЛИЧИНУ СДВИГА << ЛОГИЧЕСКИЙ СДВИГ ВЛЕВО. ЗНАЧЕНИЕ СЛЕДУЮЩЕГО ОПЕРАНДА ОПРЕДЕЛЯЕТ ЕЛИЧИНУ СДВИГА. ∧ ПОРАЗРЯДНОЕ ЛОГИЧЕСКОЕ УМНОЖЕНИЕ. 3.1 КОММЕНТАРНЫЕ СТРОКИ. КОММЕНТАРНАЯ СТРОКА НАЧИНАЕТСЯ СИМВОЛОМ ";", КОТОРОМУ МОГУТ ПРЕДШЕСТВОВАТЬ ОДИН ИЛИ НЕСКОЛЬКО ПРОБЕЛОВ. КОММЕН- ТАРНАЯ СТРОКА ПЕРЕНОСИТСЯ В ЛИСТИНГ ПРОГРАММЫ БЕЗ КА- КИХ-ЛИБО ПРЕОБРАЗОВАНИЙ. СИМВОЛ "*", СЛЕДУЮЩИЙ НЕПОСРЕД- СТВЕННО ЗА ";", ЯВЛЯЕТСЯ ПРИЗНАКОМ ГЛОБАЛЬНОГО КОММЕНТАРИЯ - ТАКИЕ СТРОКИ ЗАПИСЫВАЮТСЯ В ОБ’ЕКТНЫЙ МОДУЛЬ ПОДПРОГРАМ- МЫ, В ГРУППУ ’КОММЕНТАРИЙ’, ЕСЛИ ОНИ РАСПОЛОЖЕНЫ В ЗАГО- ЛОВКЕ ПОДПРОГРАММЫ (ДО ПЕВОГО ОТЛИЧНОГО ОТ ЕNТRУ ОПЕРАТО- РА). ПРИМЕРЫ: ; ; ПОИСК МАКСИМУМА ; ;* FUNСТIОN ISУМ(N) 3.2 ОПЕРАТОРЫ. ОПЕРАТОРЫ НАЧИНАЮТСЯ С СИМВОЛА, ОТЛИЧНОГО ОТ ";". ПЕРЕ- ЧИСЛИМ ПОЛЯ ОПЕРАТОРА В ПОРЯДКЕ ИХ СЛЕДОВАНИЯ (СЛЕВА НАПРАВО): - ПОЛЕ МЕТКИ - ПОЛЕ МОДИФИКАТОРА (ИНДЕКС-РЕГИСТРА) - ПОЛЕ КОП - ПОЛЕ АДРЕСА (АДРЕСНАЯ ЧАСТЬ) - ПОЛЕ КОММЕНТАРИЯ ПОЛЕ КОММЕНТАРИЯ В ОПЕРАТОРЕ НАЧИНАЕТСЯ СИМВОЛОМ ";". ЭТО ЕДИНСТВЕННОЕ ПОЛЕ, НАЗНАЧЕНИЕ КОТОРОГО НЕ МЕНЯЕТСЯ В
11 12 ЗАВИСИМОСТИ ОТ ТИПА ИНСТРУКЦИИ. ЛЮБОЙ ОПЕРАТОР МОЖЕТ СО- МЕТКА КОМАНДЫ МОЖЕТ БЫТЬ ИСПОЛЬЗОВАНА В АДРЕСНОЙ ЧАСТИ ДЕРЖАТЬ КОММЕНТАРИЙ, ПОЭТОМУ В ДАЛЬНЕЙШЕМ В ДАННОМ ОПИСА- ДРУГИХ КОМАНД ПОДПРОГРАММЫ - КАК ПРАВИЛО, В КАЧЕСТВЕ НИИ ЯЗЫКА ЭТО ПОЛЕ ОПЕРАТОРА НЕ УПОМИНАЕТСЯ. АДРЕСА ПЕРЕДАЧИ УПРАВЛЕНИЯ. В АССЕМБЛЕРЕ ДОПУСКАЕТСЯ ОПЕРАТОР С ПУСТЫМИ ПОЛЯМИ КОП, МОДИФИКАТОРА И АДРЕСА И НЕПУСТЫМ ПОЛЕМ МЕТКИ. ТАКОЙ ОПЕРА- ОПРЕДЕЛЯЮЩИМ ЯВЛЯЕТСЯ ПОЛЕ КОДА ОПЕРАЦИИ (КОП). ОНО ТОР ПОМЕЧАЕТ СЛЕДУЮЩУЮ ЗА НИМ КОМАНДУ ЛИБО ПЕРЕМЕННУЮ ИЛИ СОДЕРЖИТ МНЕМОКОД ОПЕРАЦИИ (В ДАЛЬНЕЙШЕМ - МНЕМОКОД). ВСЕ КОНСТАНТУ, ТО ЕСТЬ В ЗНАЧИТЕЛЬНОЙ СТЕПЕНИ ЯВЛЯЕТСЯ АНАЛО- МНЕМОКОДЫ МОЖНО РАЗДЕЛИТЬ НА ДВЕ БОЛЬШИЕ ГРУППЫ - КОМАНДЫ ГОМ ФОРТРАННОГО СОNТINUЕ. И ПСЕДОИНСТРУКЦИИ. МНЕМОКОДЫ КОМАНД ПРИВЕДЕНЫ В ОПИСАНИИ СИСТЕМЫ КОМАНД. ПСЕВДОИНСТРУКЦИИ ОПИСАНЫ В ГЛАВЕ 4. НАЗНАЧЕНИЕ ПОЛЕЙ МЕТКИ, МОДИФИКАТОРА И АДРЕСА В ОПЕРА- ТОРЕ ЗАВИСИТ ОТ МНЕМОКОДА. КАЖДАЯ ПСЕВДОИНСТРУКЦИЯ ПО-СВО- ЕМУ ИСПОЛЬЗУЕТ ЭТИ ПОЛЯ, ПОЭТОМУ ИХ НАЗНАЧЕНИЕ ОПИСАНО В 3.3.2 ПОЛЕ МОДИФИКАТОРА. ГЛАВЕ 4 ОТДЕЛЬНО ДЛЯ КАЖДОЙ ПСЕВДОИНСТРУКЦИИ. УЖЕ ИЗ НАЗВАНИЯ ВИДНО, ЧТО ПОЛЕ МОДИФИКАТОРА СОДЕРЖИТ НОМЕР МОДИФИКАТОРА (ИНДЕКС-РЕГИСТРА), ИСПОЛЬЗУЕМОГО В ДАН- 3.3 ПОЛЯ ОПЕРАТОРА - КОМАНДЫ. НОЙ КОМАНДЕ. ЭТОТ НОМЕР МОЖЕТ БЫТЬ ЗАДАН ЛИБО ЧИСЛОМ, ЛИБО ИМЕНЕМ. ПРИ ЭТОМ ИМЕЮТСЯ СЛЕДУЮЩИЕ ОГРАНИЧЕНИЯ: - ПОЛЕ МОДИФИКАТОРА В ОПЕРАТОРЕ ИМЕЕТ ДЛИНУ НЕ БОЛЕЕ ДВУХ СИМВОЛОВ. ЛЮБАЯ КОМАНДА МКБ-8601 СОСТОИТ ИЗ ТРЕХ ЧАСТЕЙ: МОДИФИ- КАТОРА, КОДА ОПЕРАЦИИ И АДРЕСА. ЗАДАЧА АССЕМБЛЕРА ПРИ - ЧИСЛО ЛИБО ЗНАЧЕНИЕ ИМЕНИ В ПОЛЕ МОДИФИКАТОРА ДОЛЖНО ГЕНЕРАЦИИ КОМАНДЫ - ПОЛУЧЕНИЕ ЗНАЧЕНИЙ МОДИФИКАТОРА, КОП И ЛЕЖАТЬ В ПРЕДЕЛАХ ОТ 0 ДО 15. АДРЕСА И ЗАПИСЬ ИХ В ОЧЕРЕДНУЮ ПОЛОВИНУ ОЧЕРЕДНОГО КОМАН- ДНОГО СЛОВА ОБ’ЕКТНОГО МОДУЛЯ ТРАНСЛИРУЕМОЙ ПОДПРОГРАММЫ. ДРУГИМИ СЛОВАМИ, ЕСЛИ В ПОЛЕ МОДИФИКАТОРА УКАЗАНО ЧИС- ЛО, ТО ОНО МОЖЕТ БЫТЬ ЛИБО ДЕСЯТИЧНЫМ ОТ 0 ДО 15, ЛИБО ШЕСТНАДЦАТИРИЧНЫМ ОТ ↑0 ДО ↑F, ЛИБО ВОСЬМИРИЧНЫМ ОТ ≠0 ДО ≠7. ЕСЛИ-ЖЕ В ПОЛЕ МОДИФИКАТОРА УКАЗАНО ИМЯ, ТО САМО ОНО ДОЛЖНО БЫТЬ ОДНО- ИЛИ ДВУХ-СИМВОЛЬНЫМ, А ЕГО ЗНАЧЕНИЕМ ДОЛЖЕН БЫТЬ АБСОЛЮТНЫЙ АДРЕС В ДИАПАЗОНЕ ОТ 0 ДО 15. 3.3.1 ПОЛЕ МЕТКИ. ПУСТОЕ ПОЛЕ МОДИФИКАТОРА ЭКВИВАЛЕНТНО ЗАДАНИЮ НУЛЕВОГО ЛЮБАЯ КОМАНДА ПОДПРОГРАММЫ МОЖЕТ БЫТЬ ПОМЕЧЕНА. ЭТО ИНДЕКС-РЕГИСТРА. ОЗНАЧАЕТ, ВО-ПЕРВЫХ, ЧТО ТРАНСЛЯТОР ПОМЕЩАЕТ ЕЕ В ЛЕВУЮ ПОЛОВИНУ КОМАНДНОГО СЛОВА И СНАБЖАЕТ ЭТО СЛОВО ПРИЗНАКОМ РАЗРЕШЕНИЯ ПЕРЕДАЧИ УПРАВЛЕНИЯ НА НЕГО (В ТЕГЕ), И ВО-ВТО- РЫХ - ЧТО АДРЕСУ ДАННОЙ КОМАНДЫ СТАВИТСЯ В СООТВЕТСТВИЕ НЕКОТОРОЕ ИМЯ ДЛЯ ССЫЛКИ НА НЕЕ. 3.3.3 ПОЛЕ АДРЕСА. ПОЛЕ МЕТКИ МОЖЕТ БЫТЬ ПУСТЫМ - ЭТО ОЗНАЧАЕТ, ЧТО НА ДАННУЮ КОМАНДУ УПРАВЛЕНИЕ МОЖЕТ БЫТЬ ПЕРЕДАНО ТОЛЬКО "СВЕРХУ", ОТ ПРЕДЫДУЩЕЙ КОМАНДЫ. ЕСЛИ ПОЛЕ МЕТКИ НЕ ПУСТО, ТО ОНО ОБЯЗАТЕЛЬНО СОДЕРЖИТ ПРИЗНАК ПОМЕЧЕННОСТИ КОМАНДЫ - СИМВОЛ ":". ПОЛЕ АДРЕСА ИЛИ АДРЕСНАЯ ЧАСТЬ ОПЕРАТОРА СОДЕРЖИТ ОДНУ ИЗ УКАЗАННЫХ НИЖЕ КОНСТРУКЦИЙ, ЗНАЧЕНИЕ КОТОРОЙ ЗАПИСЫВА- ПЕРЕД ДВОЕТОЧИЕМ В ПОЛЕ МЕТКИ МОЖЕТ БЫТЬ УКАЗАНО ИМЯ, ЕТСЯ В ПОЛЕ АДРЕСА ГЕНЕРИРУЕМОЙ КОМАНДЫ. ЭТО ЗНАЧЕНИЕ МЫ НАЗЫВАЕМОЕ В ДАЛЬНЕЙШЕМ <МЕТКОЙ КОМАНДЫ> ИЛИ ПРОСТО БУДЕМ НАЗЫВАЕТЬ ЗНАЧЕНИЕМ АДРЕСНОЙ ЧАСТИ. КОНСТРУКЦИИ, <МЕТКОЙ>. ЗНАЧЕНИЕМ МЕТКИ ЯВЛЯЕТСЯ ОТНОСИТЕЛЬНЫЙ АДРЕС РАЗРЕШЕННЫЕ В ПОЛЕ АДРЕСА КОМАНДЫ, ТАКОВЫ: ПОМЕЧЕННОЙ ЕЮ КОМАНДЫ. АССЕМБЛЕР ВСЕГДА ПОМЕЩАЕТ ПОМЕЧЕН- НУЮ КОМАНДУ В ЛЕВУЮ ПОЛОВИНУ ОЧЕРЕДНОГО КОМАНДНОГО СЛОВА. - ПУСТО. У ГЕНЕРИРУЕМОЙ КОМАНДЫ ФОРМИРУЕТСЯ НУЛЕВОЙ ЕСЛИ ПРИ ЭТОМ ОКАЗЫВАЕТСЯ, ЧТО ПРАВАЯ КОМАНДА ПРЕДЫДУЩЕГО АДРЕС; СЛОВА НЕ СФОРМИРОВАНА - ТУДА ЗАПИСЫВАЕТСЯ КОМАНДА UТС С НУЛЕВЫМИ ЗНАЧЕНИЯМИ АДРЕСА И МОДИФИКАТОРА. - ЧИСЛО СО ЗНАКОМ. ДОПУСТИМЫЙ ДИАПАЗОН - ОТ -2**19 ДО +2**19-1 (ОТ -524288 ДО +524287);

и т.д. Необходимое примечание: в эмуляторе Диспака пустые строки игнорируются, поэтому нужно делать или %s/^$/ / в vi, или аналогичное в другом редакторе.

Символы перехода на новую страницу я заменил на <HR> вручную.

Теперь осталось только выяснить, как включить в АСПИДе режим вывода в формате команд для фотонаборного автомата (где-то я читал или слышал, что такой режим был) и написать конвертер в HTML.

Всё то, что я сделал за сегодняшний вечер, теоретически можно было сделать 4 года назад, как только нам стали доступен пример файла для АСПИДа. Всё остальное уже давно было.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

Сообщество любителей БЭСМ-6

December 2025

S M T W T F S
 123456
78910111213
14151617181920
21222324252627
282930 31   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 15th, 2026 12:19 am
Powered by Dreamwidth Studios