![]() |
![]() |
![]() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
Ассемблер для PIC17Вызов: as17 [-O] [-o outfile.hex] [-l libdir] infile.s ... Ассемблер транслирует набор входных файлов в выходной бинарный файл. Используется мнемоника команд процессора в стиле автокода “Madlen” ЭВМ БЭСМ-6. Таблицы соответствия традиционной мнемонике фирмы Microchip приведены в отдельном файле. Флаг -O включает оптимизацию: устранение недостижимых команд и избыточных пересылок аккумулятора. Флаг -l подключает каталог с библиотечными функциями. По умолчанию подключен каталог /usr/local/lib/pic17. Числа бывают: десятичные, восьмеричные, шестнадцатеричные, двоичные и символьные константы. Шестнадцатеричные числа начинаются с префикса “0x” или “0X” и могут содержать цифры или буквы “abcdefABCDEF”. Двоичные числа начинаются с префикса “0b” или “0B” и могут содержать только цифры “01”. Восьмеричные числа начинаются с цифры “0” и могут содержать только цифры “01234567”. Десятичные числа начинаются с цифр “123456789”. Символьные константы представляют собой произвольный символ, заключенный в одиночные кавычки, и обозначают ASCII-код соответствующего символа. Для обозначения кодов служебных символов применяются специальные символьные константы:
Идентификаторы начинаются с буквы и могут состоять из букв и цифр. Названия команд ассемблера могут включать символы “+-*=.?<>!&|^”. Комментарии начинаются с символов “;” или “#” и продолжаются до конца строки. Директивы ассемблераДиректива .EQU: имя .equ значение Значение должно быть целым числом или выражением. Директива .DATA: имя .data длина В области данных (0×20-0xff) отводится массив указанной длины (в байтах). Имя обозначает адрес начала массива. Директива .CONST: имя .const значение,значение... Указанный массив значений размещается в конце памяти команд. Имя обозначает адрес начала массива. Значения считаются байтовыми константами. Директива .ORG: .org адрес Размещение последующих команд происходит, начиная с указанного адреса. Директива .CONFIG: .config параметр,параметр... Установка конфигурации процессора:
По умолчанию установлен режим микроконтроллера, с внешним генератором, без сторожевого таймера. Команды процессораКоманды ассемблера имеют формат: метка: мнемоника или метка: мнемоника операнд или метка: мнемоника операнд, регистр или метка: мнемоника регистр, операнд или метка: мнемоника операнд, бит Метка может отсутствовать (вместе с двоеточием). Команды могут иметь ни одного, один или два аргумента. Команды без аргумента:
Команды с одним аргументом:
Команды с двумя аргументами:
ВыраженияОперанды команд и директив “.equ”, “.data”, “.org”, “.const” могут быть произвольными выражениями, состоящими из чисел, имен, и следующих операций:
Все операции имеют одинаковый приоритет и выполняются слева направо. Для изменения порядка выполнения операций применяются скобки “()”. Все операции бинарные (имеют два аргумента). Левый аргумент может быть опущен, при этом он считается равным нулю (это имеет смысл только для операций “+” и “~”). В выражениях может применяться специальное имя “.”, обозначающее текущий адрес команды. Для вычисления старшего байта адреса команды применяется специальная унарная операция “@”. Например, для вызова далекой процедуры служит следующая последовательность команд: cta @proc atx PCLATH lcall proc |
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |
![]() |