Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LK_MashZavYP_Akchurin_2011.pdf
Скачиваний:
191
Добавлен:
10.06.2015
Размер:
8.79 Mб
Скачать

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

.LIST

 

 

Пример:

 

 

.NOLIST

; Отключить генерацию листинга

.INCLUDE "macro.inc"

; Вложенные файлы не будут

.INCLUDE "const.def"

; отображены в листинге

.LIST

; Включить генерацию листинга

NOLIST - выключить генерацию листинга. Директива NOLIST указывает ком-

пилятору на необходимость прекращения генерации листинга. Листинг представляет из себя комбинацию ассемблерного кода, адресов и кодов операций. По умолчанию генерация листинга включена, однако может быть отключена данной директивой. Кроме того данная директива может быть использована совместно с директивой LIST для получения листингов отдельных частей исходных файлов. Синтаксис:

.NOLIST

Пример:

.NOLIST ; Отключить генерацию листинга

.INCLUDE "macro.inc" ; Вложенные файлы не будут

.INCLUDE "const.def" ; отображены в листинге

.LIST ; Включить генерацию листинга

7.2.3. Выражения

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

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

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

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

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

364

Числа заданные в формате:

Десятичном (принят по умолчанию): 10, 255. Шестнадцатеричном (два варианта записи): 0x0a, $0a, 0xff, $ff.

Двоичном: 0b00001010, 0b11111111.

Восьмеричном (начинаются с нуля): 010, 077.

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

Операторы

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

Приор.

 

Символ

 

Описание

 

Пример

 

 

 

 

 

 

 

Логическое отрицание. Возвращает ldi r16, !0xf0

14! 1, если выражение равно 0, и на- ; В r16 загрузить 0x00 оборот.

Побитное отрицание. Возвращает ldi r16, ~0xf0

14~ результат, в котором все биты про- ;В r16 загрузить 0x0f инвертированы.

14

 

-

 

Минус.

Возвращает

арифметиче-

 

ldi r16,-2

 

 

ское отрицание выражения.

 

 

;Загрузить –2 (0xfe) в r16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

 

*

 

Умножение.

Возвращает результат

 

ldi r30, label*2

 

 

умножения двух выражений.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Деление. Возвращает целую часть

 

ldi r30, label/2

13

 

/

 

результата

деления

левого

выра-

 

 

 

 

 

 

жения на правое.

 

 

 

 

 

 

 

 

 

 

 

12

 

+

 

Суммирование.

Возвращает

сумму

 

ldi r30, c1+c2

 

 

двух выражений.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вычитание.

Возвращает результат

 

ldi r17, c1-c2

12

 

-

 

вычитания

правого

выражения из

 

 

 

 

 

 

левого.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сдвиг

влево.

Возвращает

левое

 

ldi r17, 1<<bitmask ; В r17

11

 

<<

 

выражение сдвинутое влево на чис-

 

загрузить 1, сдвинутую

 

 

 

 

ло бит, указанное справа.

 

 

влево на bitmask

 

 

 

 

 

 

 

 

 

 

 

 

365

11

 

>>

 

 

 

 

 

10

 

<

 

 

 

 

 

10

 

<=

 

 

 

 

 

10

 

>

 

 

 

 

 

10

 

>=

 

 

 

 

 

9

 

==

 

 

 

 

 

9

 

!=

 

 

 

 

 

8

 

&

 

 

 

 

 

7

 

^

 

 

 

 

 

6

 

|

 

 

 

Сдвиг вправо. Возвращает левое

 

ldi r17, c1>>c2 ; В r17

выражение сдвинутое вправо на

 

загрузить c1, сдвинутое

число бит указанное справа.

 

вправо c2 раз

Меньше чем. Возвращает 1 если ori r18, bitmask*(c1<c2)+1

левое выражение меньше чем правое (учитывается знак), и 0 в противном случае.

Меньше или равно. Возвращает 1

 

ori

r18,

bit-

если левое выражение меньше или

 

mask*(c1<=c2)+1

 

равно чем правое (учитывается

 

 

 

 

знак), и 0 в противном случае.

 

 

 

 

 

 

 

 

 

Больше чем. Возвращает 1 если ori r18, bitmask*(c1>c2)+1

левое выражение больше чем правое (учитывается знак), и 0 в противном случае.

Больше или равно. Возвращает 1

 

ori

r18,

bit-

если левое выражение больше или

 

mask*(c1>=c2)+1

 

равно чем правое (учитывается

 

 

 

 

знак), и 0 в противном случае.

 

 

 

 

 

 

 

 

 

Равно. Возвращает 1 если левое

 

andi

r19,

bit-

выражение равно правому (учиты-

 

mask*(c1==c2)+1

 

вается знак), и 0 в противном слу-

 

 

 

 

чае.

 

 

 

 

Не равно. Возвращает 1 если левое .SET flag = (c1!=c2)═

выражение не равно правому (учи- ;Установить flag равным тывается знак), и 0 в противном 1 или 0 случае.

Побитное И. Возвращает результат ldi r18, High(c1&c2)

побитового И выражений.

Побитное исключающее ИЛИ. Возldi r18, Low(c1^c2)

вращает результат побитового исключающего ИЛИ выражений.

Побитное ИЛИ. Возвращает резульldi r18, Low(c1|c2)

тат побитового ИЛИ выражении.

366

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]