
- •Часть 1
- •Содержание
- •Современный мир микроконтроллеров.
- •8‑Разрядные микроконтроллеры
- •16‑Разрядные микроконтроллеры
- •32‑Разрядные микроконтроллеры
- •Библиографический список
- •Микроконтроллер mc68hc11e9
- •Процессорный модуль
- •Встроенная память
- •Периферийные устройства
- •Система разработки
- •Монитор buffalo
- •С чего начать ?
- •Приложение 7 Программа Hello
- •Приложение 8 Команды монитора buffalo
- •Приложение 9 Подпрограммы монитора buffalo
- •Приложение 10
- •Приложение 11 Кросс-ассемблер
- •Приложение 12
- •Рекомендуемая литература
- •Часть 1
- •Новосибирск
Приложение 11 Кросс-ассемблер
Программное обеспечение системы разработки включает программу as11.exe, являющуюся кросс-ассемблером, работающим на IBM-PC совместимых компьютерах. С помощью этой программы можно подготавливать программное обеспечение для последующей загрузки его в микроконтроллер MC68HC11.
As11 является классическим двухпроходным ассемблером. На первом проходе создается таблица символов (до 2000 8-байтных символов), на втором проходе генерируется код.
Командная строка:
as11 file1 [file2 ...] [-<opt1> <opt2> ... ],
где file1, file2 - входные файлы, а <opt1>, <opt2> - опции.
Возможные опции:
l - разрешение генерации листинга программы
nol - запрещение генерации листинга программы
cre - генерация таблицы перекрестных ссылок
s - генерация таблицы символов
c - разрешение указания времени выполнения инструкций в листинге
noc - запрещение указания времени выполнения инструкций в листинге
Листинг программы генерируется на стандартный вывод.
В процессе работы ассемблер формирует файл с тем же именем, что и у первого из входных файлов, и расширением .s19. Этот файл будет содержать код программы в формате S-RECORD, готовый для загрузки в систему разработки.
Константы
Константы определяются одним из следующих образов:
число - десятичная константа
$число - шестнадцатиричная константа
@число - восьмиричная константа
%число - двоичная константа
'символ - ASCII значение символа
Выражения
Выражение может состоять из символьных имен, констант или символа '*', обозначающего текущее значение счетчика команд, объединенных операторами +-*/%&|^, означающими:
+ - сложение
- - вычитание
* - умножение
/ - деление
% - остаток от деления
& - побитовое И
| - побитовое ИЛИ
^ - побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ
Операции имеют один приоритет, выполняются слева направо и нет возможности использовать скобки для изменения порядка вычислений.
Псевдооператоры
BSZ <n> (Block Store Zeroes). Резервирует блок памяти размером <n> байт и заполняет его нулями.
EQU Присваивает значение выражения символьному имени. Например:
Zero EQU 0
FCB (Fill constant byte). Резервирует место под байтовые инициализированные переменные. Например:
FCB 1,1 - резервирование двух байт и инициализация их единицами.
FCC (Fill character constant). Размещает строку символов. Например:
String: FCC 'This is a string'
FDB (Fill Double byte). Резервирует место под двухбайтовые инициализированные переменные. Например:
FCB $5555,$AAAA - резервирование двух двухбайтных слов и инициализация их значениями $5555 и $AAAA соответственно.
FILL <val>,<n> Резервирование места под <n> байт памяти и инициализация их значением <val>.
OPT <параметр> Переключает режимы работы. Возможные параметры:
nol Выключает генерацию листинга
l Включает генерацию листинга
noc Запрещает указание времени выполнения инструкций в листинге
c Разрешает указание времени выполнения инструкций в листинге (со сбросом счетчика общего времени выполнения
contc Разрешает указание времени выполнения инструкций в листинге (без сброса счетчика общего времени выполнения
cre Включает печать таблицы перекрестных ссылок
s Включает печать таблицы символов
ORG Установка счетчика команд.
PAGE Переход на новую страницу в листинге
RMB <n> Резервирование места под <n> неинициализированных байт.
ZMB (Zero Memory Bytes). То же, что и BSZ
Символьные имена
Символьным именем считается последовательность символов, не начинающаяся с цифры или знака '$'. В строке разрешены символы [a-z][A-Z]_.[0-9]$. Строчные и прописные буквы различаются. Максимальная длина строки равна 15.
Метки
Меткой считается символьное имя, начинающееся с первой позиции текстовой строки и, возможно, оканчивающееся двоеточием ':'.
Мнемоники
Символьное имя, перед которым был хоть один пробельный символ, считается мнемоникой инструкции. В мнемонике буквы нижнего и верхнего регистров не различаются, т.е., NOP и nop есть одна и та же команда.
Операнды
Операнды отделяются от мнемоники команды как минимум одним пробельным символом. Между собой операнды разделяются пробельными символами. Индексная адресация обозначается символом ',', например, LDAA 5,X. Можно явно указывать прямую и расширенную адресации с помощью символов '<' и '>', например, LDAA >$0 означает обращение к памяти по адресу 0 посредством расширенного режима адресации.
Пробельные символы
Пробельными считаются символы пробела и табуляции.
Комментарии
Символы строки после операндов инструкции, строки, начинающиеся с символа '*', а также пустые строки считаются комментариями.
Продолжение строк
Если строка оканчивается символом '\', то следующая строка считается продолжением текущей. Максимальная длина строки (считая все ее продолжения) не меньше 256.