Снос зданий:
ecosnos.ru
Главная  Микроустройства: номенклатура изделий электронной промышленности 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 [ 64 ] 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95

Во время обработки один уровень скобок (и) снимается. Скобки запрещают вычислеп11е строки внутри скобок, даже если там расположен вызов макрокоманды. Строка В [А, X, ,\1Х] В полностью попадает в список, хотя там и расположен вызов макрокоманды А, , так как вычисление этого вызова запрещается скобками (и).

Вызов макрокоманды [АРА, 2Х] приводит к следующему расширению Р2Х2ХР, если ранее пара имя-значение была определена макрокомандой [DEF, АРА, (Р\1\1Р)].

Просмотр списка пар имен-значений в обратном порядке позволяет дина.мически переопределять макрокоманды и использовать временные локальные макроопределения. Так, локальное определение макро А всвоем вызове: [А, X, В, [DEF, А, (\1\2\1)]] приводит к результату: ХВХ. Эта форма соответствует эффекту выражения f (...) where f (...) = т. е. вызову функции с действительными параметрами с одновременным определением этой функции. Подобный динамизм в обработке макрокоманд позволяет вести условную обработку текстов без введения специальных средств периода генерации. Например, выражение а = Ру, 6, где а, Р, у, 6 - строки, возможно содержащие вызовы макрокоманд, можно представить следующим образом: [а, [DEF, а (б)] [DEF, Р, (у)]]-Если значение строки р то же, что н строки а, то в результате обработки вызова X будет получена строка у, так как определение для строки Р было сделано позже, чем для а. Если значение строки Р не равно зяачению строки а, то в результате обработки вызова а будет получена строка 6.

Например, последовательность строк:

[DEF, А, (SIGMA)] [DEF, В, (BETA)]

[[А], [DEF, [А], (XXX)] [DEF, [В], (YYY]]

приведет к появлению в выходном тесте строки XXX.

Макропроцессор располагает набором системных макрокоманд: DEF, VAL, UPDATE, BAR, BIN, DEC, REND. Системные макрокоманды выполняют специальные функции обработки строк и их значения определены заранее, хотя программист н может переопределить их обычным образом (используя макрокоманду DEF).

DEF. Вызов макрокоманды приводит к размещению второго и третьего аргументов в списке пар имен-значений. Второй аргумент определяет имя макрокоманды, а третий - ее тело, используемое впоследствии на этапе расширения.

VAL. Макрокоманда позволяет копировать значение, заимствованное из пары имя-значение, в выходной поток без какой-либо об-)аботкн. Например, вызов [DEF, X, (а)], за которым следует VAL, X], продуцирует а, несмотря на то, что строка а может содержать вложенные вызовы и определения. Вызов [DEF, X, ((а))], за которым следует вызов [X], приводит к тому же результату. UPDATE. Макрокоманда заменяет значение, связанное с 1-м аргу-менто.м, текстом, указанным в качестве второго аргумента. Например, [DEF, Х, (а)] определяет пару: имя-Х-значение а. Макрокоманда [UPDATE, X, (6)1 заменяет строку а па строку 6. В результате будет получена пара: имя-Х-значение 6.

BAR. Макрокоманда выполняет арифметические операции над двоичными данными целого типа. В макрокоманде необходимо указать три аргумента. Первый аргумент : + (сложение),- (вычитание), (ум!10жение), / (деление нацело), R (получение остатка от деления). Два других аргумента - двоичные данные,



Например, [BAR, R, [X], [Yj] дает остаток от деления значений X на Y. Макрокоманда BAR должна быть вложенной , так как попытка получить двоичные данные в выходном потоке ошибочна.

BIN и DEC. Макрокоманды выполняют перевод из десятичной литерной формы во внутреннее представление и обратное преобразование, соответственно. Например,

[DEF, X, (-125)1

[BIN, [X]] ,

В результате будет получено внутреннее (машинное) представление числа - 125. Рассмотрим другой пример: [ПЕС, [BAR, +, [BIN, [X]], [BIN, [Y]]]. Данный вызов приводит к получению суммы значений и переподу их во внеш!1юю десятичную форму. Вычисленное значение будет выведено в поток.

REND. Макрокоманда не содержит аргументов и позволяет переключить макропроцессор на опрос пультового терминала. В этот момент пользователь может назначить новые входные файлы. Для выполнения операций десятичной арифметики программист может определить в своей программе следующие макрокоманды:

[DEF, --([DEC, [BAR, + , [B1N,\1], [B1N,\2]]])] [DEF, - ,([DEC, [BAR, - , [BIN,\1], [BIN,\2]]])] [DEF , ([DEC, [BAR, ,[BIN,\1], [BIN,\2]]])] [DEF, QUOT, ([DEC, [В.Щ, /, [BIN,\1], [BIN,\2]]])] [DEF, REM, ([DEC, [BAR, R, [BIN,\1], [BIN,\2]]])]

Эти же макрокоманды содержатся в библиотеке системных макрокоманд. Обработка файла с системными макрокомандами назначается в диалоговом режиме. После обработки любых библиотечных файлов может быть назначена обработка файла, содержащего текст программы, вызовы системных и библиотечных макрокоманд, определения н вызовы макрокоманд пользователя, содержащихся в данном файле.

6.4. ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ

Макроассемблер микроЭВМ Злектроника-60

Основные сведения. Макроассемблер использует систему команд ЭВ.М Электроника-60 , Электроника 100-25 , Электроника-79 , обеспечивает совместимость своих обрабатываемых программ с программами, обрабатываемыми Перемещающим ассемблером, входящим в состав ПО перфоленточной ОС микроЭВМ Электроника-60 . Аналогичные машинно-ориентированные системы программирования - это макроассемблер MACRO-II и ассемблер RAL-I1P, предназначенные для автоматизации программирования па процессорах фирмы DEC (PDP-11) США [62],

Основные характеристики языка: контроль исходного текста и командной строки, определяющей ассемблерные функции; вывод сообщений об ошибках на терминал; создание перемещаемого объектного модуля; обработка глобальных символов для связывания объектных модулей и секционирования программ; обработка макрокоманд и макроопределений в библиотеках и в исходном тексте; обработка директив условной трансляции; создание таблиц



символов, их представление на внешнем устройстве в алфавитном Порядке; создание листинга программы.

Трансляция выполняется за два прохода. Формат утверждений следующий: метка : оператор операнды комментарий. Метка и комментарий являются необязательными.

Пример:

REGTST : BIT # MASK, VALUE; СРАВНЕНИЕ БИТОВ.

Даннаякоманда содержит два операнда: ftMASK и VALUE. С утверждением может быть связано несколько меток, например}

ABC: F70:

ABCD: : MOV А, В

Использование пары символов : ; указывает, что метка - гло бальный символ. К этой метке можно обращаться из других, независимо странслированных модулей.

Символы и выражения. В программе на языке макроассемблера можно указывать следующие символические имена: постоянные (мнемоника инструкций и директив), пользовательские (метки, имена в утверждениях прямого присваивания, формальные параметры и имена микрокоманд), макрокоманд (определяемые пользователем и системные), регистров, локальные, имя счетчика адреса. Кроме того, в программах могут использоваться константы: числа и символы в коде КОИ-7 (ASCII) и Radix 50. Пример:

А = 1 ; СИМВОЛ А ПОЛУЧАЕТ ЗНАЧЕНИЕ 1

СИМВОЛ В ПОЛУЧАЕТ ЗНАЧЕНИЕ ВЫРАЖЕНИЯ

СИМВОЛ D ПОЛУЧАЕТ ЗНАЧЕНИЕ ТЕКУ-ЩЕЙ ВЕЛИЧИНЫ СЧЕТЧИКА СИМВОЛ Е ПОЛУЧАЕТ ЗНАЧЕНИЕ ТЕКУЩЕГО РАЗМЕЩЕНИЯ КОМАНДЫ: MOV# 10, TEN

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

Пример::

3.6, 7,63Ё - 1,ЗЕ-О - числа с плавающей запятой (десятичные), ~D123 - десятичное число в формате Radix 50.

Директивы макроассемблера. Список директив макроассемблера приведен в табл. 6.6,

Пример программирования на ассемблере микроЭВМ Электроника-60 .

.TITLE .ERROR

.GLOBL .ERROR, ERROR, ADDRER, ER

.GLOBL MULDIV, ZERO

.CSECT

ERR0R;= 100; программа обработки ERR.- К: MOV#5, - (SP); системных ошибок EMT ERROR

B = A- 1 & MASK D=.

E: MOV # 10, TEN



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 [ 64 ] 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95