Основы микропроцессорной техники

         

Операнды


В этом поле определяются операнды (или операнд), участвующие в операции. Операнды должны быть отделены от мнемоники одним или более пробелами или табуляцией. Операнды отделяются друг от друга запятыми. Если операция требует фиксированного номера (числа) или операндов, то все на линии после операндов игнорируется. Комментарии разрешаются в конце линии. Если мнемоники позволяют использовать различное число операндов, конец списка операндов определяется концом строки или комментарием.

Выражения используются в поле операнда и могут содержать константы, символы или любые комбинации констант и символов, разделенных арифметическими операторами. Перед каждой константой или символом может стоять + или –, что указывает на положительное или отрицательное выражение.

В ассемблере MPASM используются следующие форматы выражений:

  • текстовая строка;
  • числовые константы и Radix;
  • арифметические операторы и приоритеты;
  • High / Low операторы.

Текстовая строка – это последовательность любых допустимых ASCII символов (в десятичном диапазоне от 0 до 127), заключенная в двойные кавычки. Строка может иметь любую длину в пределах 132 колонок. При отсутствии ограничения строки она считается до конца линии. Если строка используется как буквенный операнд, она должна иметь длину в один символ, иначе будет ошибка.

Числовая константа представляет собой число, выраженное в некоторой системе счисления. Перед константой может стоять + или –. Промежуточные величины в константах рассматриваются как 32-разрядные целые без знака.

MPASM поддерживает следующие системы счисления (представления значений или Radix): шестнадцатиричную, десятичную, восьмиричную, двоичную и символьную. По умолчанию принимается шестнадцатиричная система. Табл. 6.2 представляет различные системы счисления.

Операторы – это арифметические символы, подобные + и –, которые используются при формировании выражений. Каждый оператор имеет свой приоритет. В общем случае приоритет устанавливается слева направо, а выражения в скобках оцениваются первыми.
В табл. 6.3 приведены обозначения, описания и примеры применения основных операторов MPASM.

Таблица 6.2. Системы счисления (Radix).ТипСинтаксисПример
Десятичная D'<цифры>' или .<цифры> D'100' или .100
16-ричная H'<цифры>' или 0x<цифры> H'9f' или 0x9f
Восьмиричная O'<цифры>' O'777'
Двоичная B'<цифры>' B'00111001'
Символьная '<символ>' или A'<символ>'

"C" или A'C'
Таблица 6.3. Основные арифметические операторы MPASMОператорОписаниеПример
$ Текущий счетчик команд goto $ + 3
( левая скобка 1 + ( d * 4 )
) правая скобка ( lenght + 1 ) * 255
! операция «НЕ» (логическая инверсия) if ! ( a - b )
~ дополнение flags = ~ flags
- инверсия (двоичное дополнение) – 1 * lenght
High выделить старший байт слова movlw high llasid
Low выделить младший байт слова movlw low (llasid + .251)
upper выделить наибольший байт слова movlw upper (llasid + .251)
* Умножение a = c * b
/ Деление a = b / c
% Модуль lenght = totall % 16
+ Сложение Tot_len = lenght * 8 + 1
- Вычитание Entry_Son = ( Tot – 1 ) / 8
<< сдвиг влево Val = flags << 1
>> сдвиг вправо Val = flags >> 1
>= больше либо равно if ent >= num
> больше if ent > num
< меньше if ent < num
<= меньше либо равно if ent <= num
== равно if ent == num
!= не равно if ent != num
& поразрядное «И» flags = flags & err_bit
^ поразрядное «ИСКЛЮЧАЮЩЕЕ ИЛИ» flags = flags ^ err_bit
| поразрядное «ИЛИ» flags = flags | err_bit
&& логическое «И» if (len == 512)&&( b == c )
|| логическое «ИЛИ» if (len == 512 ) || ( b == c )
= установить равным... entry_index = 0
++ увеличить на 1 (инкремент) i ++
уменьшить на 1 (декремент) i —
Операторы high, low и upper используются для получения одного байта из многобайтного значения, соответствующего метке. Применяются для управления расчетом точек динамического перехода при чтении таблиц и записи программ.

Операторы инкремента и декремента могут применяться к переменной только в качестве единственного оператора в строке.Они не могут быть встроенным фрагментом более сложного выражения.


Содержание раздела