Снос зданий:
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

Все допустимые операции связаны между собой отношением старшинства для определения порядка их выполнения в'выражеиин. Ниже перечислены все допустимые операции в порядке .убывания их приоритета:

NOT /, AND, MOD

+, -, OR, XOR EQ, NE, GT. GE, LT, LE I

Таким образом, вначале в выражении выполняются все операции NOT, затем , /, AND, MOD, затем -f, - и т. д. Круглые скобки изменяют порядок вычисления операций; вначале вычисляются все операции в соответствии с приоритетами внутри скобок, а затем все остальные операции. Выражения могут использоваться для определения индекса, для указания элемента массива глобальных переменных, а также могут генерировать символы в выходной поток. В последнем случае выражение должно быть задано в квадратных скобках [...]. Пример:

Пусть задано следующее макроопределение:

GEN MDEF &Р1, &Р2, &РЗ, &Р4, &Р5 LXI &Р1, &Р2 LXI &РЗ, &Р4 LXI &Р5, [&P2-f&P4] STA [&Р2 1 &Р4] ; [&Р4 &Р4 - &Р2] MEND

В результате вызова макрокоманды GEN В, 20, D, 15 , Н в выходной поток будет сгенерирован следующий текст:

LXI В, 20 LXI D, 15 LXI Н, 35 STA 20 15 ; 205

Функции. В качестве операндов в выражениях могут быть использованы функции макропериода ТУР, LEN, SUB, SHR и SHL. Функция определения типа имеет следующий формат:

ТУР (аргумент),

где аргумент - параметр, локальная или глобальная переменная, константа или элемент списка.

Значением функции является одна из следующих символьных строк: -С' - аргумент-знаковая строка или ссылается иа знаковую строку; -А'-аргумент-арифметическая константа или ссылается на арифметическое значение; - Г - аргумент-символьная константа или ссылается на символическое имя; -М' - аргументом является параметр, заданный списком, или глобальная переменная, объявленная как массив.

Пример:

Если оператор MDEF, вводящий некоторое макроопредение имеет следующий вид: SUM MDEF &А, &В, а вызов макрокоманды SUM содержит в качестве аргументов список: SUM (NAME, ЮН,



DATA),.1050, то функция TYP, вызываемая внутри макроопределения SUM, возвращает следующие значения:

Вызов Значение ТУР (&А) М'

TYP(&A(1)) С

TYP (&А (2)) А'

TYP (&А (3)) I

TYP (&В) А'

Функция определения длины имеет формат: LEN (аргумент),

где аргументом является любое выражение. Функция LEN возвращает значение, равное длине строки, размерности массива или количеству цифр в десятичном представлении арифметической константы в зависимости от типа аргумента. Пример:

Вызов Значения

LEN(107FH) 4

LEN(70H) 3

LEN(DELTA) 5

LEN(&VAR1) 8, если значением

параметра является строка NEW

YEAR

Функция выделения подстроки имеет следующий формат: SUB (аргумент 1, аргумент 2, аргумент 3), где аргумент 1 - константа, переменная, параметр, элемент массива, аргумент 2 - номер знака в строке, с которого выделяется подстрока, аргумент 3 - количество выделяемых знаков. Функция SUB. возвращает выделенную знаковую подстроку строки, указанной первым аргументом. Если аргумент i имеет арифметическое еначение, то оно предварительно преобразуется в знаковую строку.

Пример:

Вызов Значение

SUB (ABCD 12345, 4, 5) D 1234

SUB (& PAR, 2, 1) 1, где & PAR имеет

значение 214.

Функции логического сдвига позволяют сдвигать вправо (SHR) или влево (SHL) значение 1-го выражения в соответствии с величиной, указанной 2-м аргументом:

SHR (выражение 1, выражение 2), SHL (выражение 1, выражение 2>.

Биты, выталкиваемые за пределы разрядной сетки, теряются, а освобождающиеся разряды заполняются нулями. Пример:

Вызов Значение

SHL(1001100B, I) 0011000 В SHR (1001100 В, 2) 0010011 В



Указание аргументов ключевым способом. Обычно аргументы сопоставляются параметрам на основании их порядка размещения в макровызове (позиционный способ присвоения значений параметрам). Задание параметров ключевым способом означает указание параметра, которому присваивается данное значение, с по.мощью ключевого слова. В качестве ключевого слова используется обозначение параметра без начального символа & .

Пример:

ADSST MDEF &0Р1, & 0Р2, &RES LXI Н, &0Р1 LXI D, &0Р2 DAD D SHLD & RES MEND

Макрокоманда ADDST, предиазначеиная для выполнения сложения 16-битовых значений размещенных в памяти, может быть вызвана различными способами:

ADDST DATA, 20F4H, SUM

или

ADDST RES= SUM; 20F4H, OPl =DATA.

Bo втором вызове используются ключевой и позиционный способы определения значений параметров. Оба вызова приводят к генерации одинаковой последовательности команд:

LXI Н, DATA LXI D, 20F4H DAD D SHLD SUM

Механизм кодовых макросов ASM-Se

Ассемблер ASM-86 [44], применяемый в микропроцессоре К1810ВМ86 (INTEL 8086), обрабатывает кодовые макросы как инструкции. Кодовые макросы добавляются во время определения в символическую таблицу ассемблера. Формальные параметры макрокоманд определяют, каким образом они размещаются в генерируемой инструкции и как должны обрабатываться.

Определение кодового макро:

Code Macro (имя) [(список формальных параметров)],

где (имя) - имя макро, (список формальных параметров) - содержит формальные параметры, разделяемые запятыми и определяемые следующим образом: (формальное имя) : (символ спецификации) [(модифицирующий символ)] [(диапазон)]. С кодовым макро можно не употреблять параметров, так же как и для отдельного параметра можно ие указывать модифицирующего символа и значения диапазона.

В табл. 6.4 и 6.5 приведены возможные значения символов спецификаций и модифицирующих символов. Специфицирующие символы определяют тип операнда, сопоставляемого формальному параметру. Модифицирующая литера зависит от типа операнда, который может быть переменной или числом.



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