Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Выражения. Компилятор позволяет использовать в программе выражения, которые могут состоять операндов, знаков операций и функций




Компилятор позволяет использовать в программе выражения, которые могут состоять операндов, знаков операций и функций. Все выражения являются 32-битными.

Операнды. В выражениях могут быть использованы следующие операнды:

· Метки, определённые пользователем (дают значение своего положения).

· Переменные, определённые директивой SET.

· Константы, определённые директивой EQU.

· Числа заданные в формате:
Десятичном (принят по умолчанию): 10, 255.
Шестнадцатеричном (два варианта записи): 0x0a, $0a, 0xff, $ff.
Двоичном: 0b00001010, 0b11111111.
Восьмеричном (начинаются с нуля): 010, 077.

· PC - текущее значение программного счётчика (Program Counter).

· Операторы

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

Приор. Символ Описание Пример
  ! Логическое отрицание. Возвращает 1, если выражение равно 0, и наоборот. ldi r16,!0xf0 ; В r16 загрузить 0x00
  ~ Побитное отрицание. Возвращает результат, в котором все биты проинвертированы. ldi r16, ~0xf0 ;В r16 загрузить 0x0f
  - Минус. Возвращает арифметическое отрицание выражения. ldi r16,-2 ;Загрузить –2 (0xfe) в r16
  * Умножение. Возвращает результат умножения двух выражений. ldi r30, label*2
  / Деление. Возвращает целую часть результата деления левого выражения на правое. ldi r30, label/2
  + Суммирование. Возвращает сумму двух выражений. ldi r30, c1+c2
  - Вычитание. Возвращает результат вычитания правого выражения из левого. ldi r17, c1-c2
  << Сдвиг влево. Возвращает левое выражение сдвинутое влево на число бит, указанное справа. ldi r17, 1<<bitmask; В r17 загрузить 1, сдвинутую влево на bitmask
  >> Сдвиг вправо. Возвращает левое выражение сдвинутое вправо на число бит указанное справа. ldi r17, c1>>c2; В r17 загрузить c1, сдвинутое вправо c2 раз
  < Меньше чем. Возвращает 1 если левое выражение меньше чем правое (учитывается знак), и 0 в противном случае. ori r18, bitmask*(c1<c2)+1
  <= Меньше или равно. Возвращает 1 если левое выражение меньше или равно чем правое (учитывается знак), и 0 в противном случае. ori r18, bitmask*(c1<=c2)+1
  > Больше чем. Возвращает 1 если левое выражение больше чем правое (учитывается знак), и 0 в противном случае. ori r18, bitmask*(c1>c2)+1
  >= Больше или равно. Возвращает 1 если левое выражение больше или равно чем правое (учитывается знак), и 0 в противном случае. ori r18, bitmask*(c1>=c2)+1
  == Равно. Возвращает 1 если левое выражение равно правому (учитывается знак), и 0 в противном случае. andi r19, bitmask*(c1==c2)+1
  != Не равно. Возвращает 1 если левое выражение не равно правому (учитывается знак), и 0 в противном случае. .SET flag = (c1!=c2)═;Установить flag равным 1 или 0
  & Побитное И. Возвращает результат побитового И выражений. ldi r18, High(c1&c2)
  ^ Побитное исключающее ИЛИ. Возвращает результат побитового исключающего ИЛИ выражений. ldi r18, Low(c1^c2)
  | Побитное ИЛИ. Возвращает результат побитового ИЛИ выражении. ldi r18, Low(c1|c2)
  && Логическое И. Возвращает 1, если оба выражения не равны нулю, и 0 в противном случае. ldi r18, Low(c1&&c2)
  || Логическое ИЛИ. Возвращает 1, если хотя бы одно выражение не равно нулю, и 0 в противном случае. ldi r18, Low(c1||c2)

Функции. Определены следующие функции:

· LOW(выражение) возвращает младший байт выражения.

· HIGH(выражение) возвращает второй байт выражения.

· BYTE2(выражение) то же что и функция HIGH.

· BYTE3(выражение) возвращает третий байт выражения.

· BYTE4(выражение) возвращает четвёртый байт выражения.

· LWRD(выражение) возвращает биты 0-15 выражения.

· HWRD(выражение) возвращает биты 16-31 выражения.

· PAGE(выражение) возвращает биты 16-21 выражения.

· EXP2(выражение) возвращает 2 в степени (выражение).

· LOG2(выражение) возвращает целую часть log2(выражение).




Поделиться с друзьями:


Дата добавления: 2014-10-17; Просмотров: 340; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.