Электронные системы ускорителей

4. Константы

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

Табл. 4. Поддерживаемые форматы чисел

табл4

Таким образом, например, следующие константы эквивалентны:

1111111B двоичная

177Q восьмеричная

177o восьмеричная

127 десятичная

127d десятичная

07FH шестнадцатеричная

0b1111111 двоичная

0177 восьмеричная

0x7F шестнадцатеричная

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

'A' 8-битовая константа: 41H

"b?" 16-битовая константа: 623FH

'''' 8-битовая константа: 27H

В директиве DB символьные константы могут иметь любую длину для создания строк символов. Например:

DB 'This is sample text!'

Табл. 5. Управляющие символы символьной строки

табл5

Разница между строками, заключенных в одинарные и двойные кавычки в том, что двойные кавычки позволяют использование управляющих символов в стиле Cи с помощью обратной косой черты (\). Двойная кавычка сама может быть представлена, если ей предшествовал символ обратной косой черты (\"). Допустимые управляющие символы, перечислены в табл. 5. Управление восьмеричными и шестнадцатеричными кодами не поддерживается.

Завершение строки нулем может быть построено путем смешивания строковых и числовых данных или с помощью \0.

DB 'This is a null terminated string',0

DB "and so is this\0"

Значение программного счетчика может использоваться для автоматического вычисления длины строковой константы во время выполнения программы.

text: DB "Find the length of this string",0

textlen EQU $-text ; textlen = strlen(text)+1

5. Выражения

Арифметические выражения состоят из операндов, операторов и скобок. Операндами могут быть определяемые пользователем идентификаторы, константы или специальные ассемблерные идентификаторы. Все операнды рассматриваются как 16-разрядные числа без знака. Специальные ассемблерные идентификаторы, которые могут использоваться в качестве операндов, приведены в табл. 6.

Табл. 6. Специальные идентификаторы выражений

табл6

В табл. 7 представлены следующие операторы:

Табл. 7. Поддерживаемые операторы

табл7

Ключевые слова операторов, таких как SHR или AND, должны быть отделены от своих операндов, по крайней мере, одним пробелом или символом табуляции. Выражения вычисляются слева направо в соответствии с приоритетом операторов (табл. 8), которые могут быть переопределены скобками.

Табл. 8. Приоритеты операторов

табл8

Круглые скобки могут быть вложенными до любого уровня. Результат выражения всегда оценивается 16-разрядным целым числом без знака, а его переполнение игнорируется. Когда результат выражения должен иметь 8-битовую величину, старший байт должен быть 00 или FF. Для операторов отношений TRUE имеет значение FFFFH, а FALSE - значение 0.


Например, выражение (87+3)/10 OR SHR 0DH будет эквивалентно 0FH



Продолжение