|
||||||||||||||||||||
Ассемблер для контроллеров AVR - Часть 2 - Синтаксис AVR ассемблера
Время создания: 02.12.2021 15:35
Раздел: Компьютер - Программирование - Ассемблеры - Архитектура AVR - Лекция - Синтаксис языка ассемблера для микроконтроллеров AVR
Запись: xintrea/mytetra_syncro/master/base/1638448559kn7o44n940/text.html на raw.github.com
|
||||||||||||||||||||
|
||||||||||||||||||||
Синтаксис AVR ассемблера Исходные файлы языка Ассемблер – это текстовые файлы, состоящие из строк, содержащих инструкции (команды), метки и директивы. Инструкции и директивы, как правило, имеют один или несколько операндов. Входная строка может иметь одну из четырёх форм: [метка:] директива [операнды] [Комментарий] [метка:] инструкция [операнды] [Комментарий] Комментарий Пустая строка. Любая строка может начинаться с метки, которая является набором символов, заканчивающимся двоеточием. Метки используются для указания места, в которое передаётся управление при переходах, а также для задания имён переменных. Комментарий имеет следующую форму: ; [Текст] Позиции в квадратных скобках необязательны. Текст после точки с запятой (;) и до конца строки игнорируется компилятором. Метки, инструкции и директивы более детально описываются ниже. Примеры: label: .EQU var1=100 ; Устанавливает var1 равным 100 (Это директива) .EQU var2=200 ; Устанавливает var2 равным 200 test: rjmp test ; Бесконечный цикл (Это инструкция) ; Строка с одним только комментарием. Компилятор не требует, чтобы метки, директивы, комментарии или инструкции находились в определённой колонке строки. Основной синтаксис AVRASM совместим с AVRASM2 с исключениями, отмеченными ниже:
Ключевые слова. В отличие от AVRASM встроенные идентификаторы (ключевые слова) зарезервированы и не могут быть переопределены. Ключевые слова включают все инструкции (команды), регистры R0-R31 и X, Y, Z и все функции. Ключевые слова Ассемблер распознаёт независимо от регистра, в котором они набраны, за исключением чувствительных к регистру опций, в которых ключевые слова набираются в нижнем регистре (т.е. "add" зарезервирован, а "ADD" – нет). Директивы препроцессора. AVRASM2 считает директивами препроцессора все строки, начинающиеся с '#' (или первый непустой символ в строке, так как пробелы и символы табуляции игнорируются). Комментарии. Дополнительно к классическим комментариям Ассемблера, начинающимся с ';', AVRASM2 признает комментарии в Cистиле: . . . . . . . . . . ; Остальная часть строки является комментарием. // Подобно ';' остальная часть строки является комментарием. /* Блок комментариев может располагаться в нескольких строках. Этот стиль комментариев не может быть вложенным */ Ассемблер распознает разделители комментария (';') в стиле AVRASM, а также комментарии Cи-стиля. Однако ';' используется в синтаксисе языка Cи, что может привести к конфликту при использовании ';' в качестве разделителя комментария, поэтому не рекомендуется использовать комментарии в стиле Ассемблера вместе с директивами препроцессора AVRASM2. Продолжение строки. Подобно Cи, строки исходных кодов могут быть продолжены посредством '\ '– обратной косой черты в конце строки. Это особенно полезно для длинных макроопределений препроцессора и для длинных директив .db. Пример: .db 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 11,12, 21, 214,235,634, \n', 0, 2, \ 12, 3,"’это продолжение верхней строки", '\n', 0, 3, 0 Строки и символьные константы. AVRASM2 понимает строки и символы так же, как AVRASM, кроме того, служебные символы, которые не поддерживаются AVRASM. Строка, заключенная в двойные кавычки ("), может быть использована только вместе с директивой .db. Строка передается буквально, никакие служебные символы и NUL-окончания не распознаются. Символьные константы, заключенные в одиночные кавычки ('), могут использоваться везде, где допустимо целое выражение. Служебные символы в Cи-стиле распознаются с тем же значением, как в Cи (табл. 1). Таблица 1 Служебные символы в Си-стиле
Ассемблером также распознаются \ooo (ooo = восьмеричное число) и \xhh (hh = шестнадцатеричное число). Примеры: .db "Hello\n" // - эквивалент: .db 'H', 'e', 'l', 'l', 'o', '\\', 'n, Для того чтобы создать эквивалент Cи-строки "Привет, мир \n", делают следующим образом: .db " Hello, world", '\n', 0 Составные инструкции в строке. AVRASM2 допускает составные инструкции (команды) и директивы в строке, но их использование не рекомендовано. Это нужно для того, чтобы поддерживать распаковку (расширение) многострочных макроопределений препроцессора. Операнды. Дополнительно к операндам AVRASM AVRASM2 поддерживает выражения с плавающей точкой. |
||||||||||||||||||||
Так же в этом разделе:
|
||||||||||||||||||||
|
||||||||||||||||||||
|