- •Лабораторная работа №2 описание архитектуры микроконтроллера i80c196kc и макроассемблера mcs-96
- •1.Общие сведения
- •1.1. Обзор архитектуры
- •1.2. Внутренние периферийные устройства
- •1.3. Параметры синхронизации
- •1.4.Карта памяти микроконтроллера i80хc196kc
- •1.4.1. Основные разделы памяти
- •1.4.2. Регистровый файл rf (Register File)
- •1.5. Работа через горизонтальное окно
- •1.5.1. Выбор hWindow
- •1.7. Способы адресации
- •1.8.Описание макроассемблера mcs-96
- •1.8.1. Компоненты языка Ассемблера
- •1.9.Формат оператора
- •1.10. Сегменты
- •1.11. Директивы макроассемблера mcs-96
- •1.12. Признаки результата операции
- •1.13. Пример оформления программы на языке ассемблера mcs96
- •1.14. Анализ особенностей системы команд микроконтроллера
- •2. Порядок выполнения работы
- •2.1.Варианты для самостоятельной тренировки
- •2.2 Варианты для зачета
- •3. Содержание отчета
1.8.Описание макроассемблера mcs-96
Программа Ассемблера транслирует мнемокоды операций непосредственно в машинные команды, которые инструктируют процессор относительно выполнения определенной операции.
Любая программа ассемблера состоит из трех частей:
- машинные команды;
- директивы ассемблера;
- средства управления ассемблером.
Машинная команда - машинный код, который может выполняться машиной. Каждая команда подробно объясняется в приложении “Система команд ассемблера MCS-96”.
Директивы Ассемблера используются для того, чтобы определить структуру программы, символы, и генерировать невыполняемый код: например, данные или сообщения.
Средства управления Ассемблером устанавливают режим работы ассемблера и управляют процессом трансляции.
1.8.1. Компоненты языка Ассемблера
Подобно любому языку, ассемблер состоит из словаря (совокупность элементов) и грамматики (набор правил, которые определяют каким образом элементы языка должны быть записаны, чтобы сгенерировать какое-либо действие)
1.8.1.1. Набор cимволов
ASM96 использует набор символов ASCII. Все символы ASCII допустимы, но некоторые из них имеют определенные специальные семантические значения для ассемблера.
Числа
Таблица 2.6
Число |
Состоит из цифры |
Пример |
Двоичное |
<0-1>B(b) |
10101010B,111b |
Восьмиричное |
<0-7>O(o) |
377O,456Q,23o,34q |
Десятичное |
<0-9>D(d) |
100D,234d,678 |
Шестнадцатиричное |
<0-9>, <A-F>H(h) |
0AAH,125h,4FEh |
Длинные константы
Длинные константы (32 битные числа без знака) могут определяться директивой DCL.
Разделители
Разделители служат для того, чтобы отделять элементы операторов ASM96.
Табл. 2.7
Символ |
Определение |
Пробел |
Может быть введен один или несколько пробелов Пробелы служат как разделители полей или разделители символов. |
, |
Запятые отделяют операнды. |
‘ |
Апостроф - служит для ограничения символьных строк. |
( ) |
Круглые скобки разграничивают выражения.
|
[ ] |
В квадратные скобки заключены базовые регистры в операндах команды. Признак косвенной адресации; в скобках содержится адрес регистра слова, содержащего исполняемый адрес. |
< > |
Угловые скобки включают макро параметры. |
% |
Знак процента указывает, что следующий макро-параметр должен оцениваться как выражение перед заменой формального параметра. |
! |
Знак восклицания используется как заменитель литеры в макрообработке. |
& |
Символ & используется чтобы отделить формальные параметры из смежного текста. |
LF |
Перевод строки(ASCII 0AH) - признак конца строки. |
CR |
Возврат каретки ( ASCII 0DH ). |
HT |
Горизонтальная табуляция - обрабатывается как пробел. |
; |
Точка с запятой разграничивает начало комментария. |
# |
Знак фунта определяет непосредственное значение при непосредственном способе адресации. |
: |
Двоеточие отделяет имя от оставшегося оператора. |
Идентификаторы
Идентификаторы - определяемые пользователем имена, которые могут использоваться чтобы представить адреса памяти, константы, макрокоманды, и т.д.. Идентификатор может содержать до 31 символа. Первый символ должен быть буквой или специальным символом ( ? или _ ). Регистр символов (прописные или строчные) внутри идентификатора игнорируется ассемблером.
Зарезервированные слова
Зарезервированные слова - имена которые имеют специфическое значение в ассемблере и таким образом не доступны для определения пользователем. (Мнемоники команд, директивы ассемблера и макро-директивы, предопределенный идентификатор STACK).
Текущая ячейка внутри активного сегмента программы (указатель программного счетчика) указывается в операторе знаком доллара ($). Знак является адресом младшего байта (начала) команды, в которой он указан.
Строки
Строки - последовательность символов ASCII. Строка ограничивается начальным и конечным апострофами.
Примеры: 'STACK' - символьная строка S T A C K ,а не зарезервированное слово STACK, ‘FFH’ - символьная строка FFH а не шестнадцатеричное число FF, и ‘$’ - литерный знак доллара, а не счетчик команд.
Строки могут использоваться как операнды для директивы DCB и как операнды в выражениях. Когда строка используется как операнд в директиве DCB, длина строки может быть от 0 до 255. Когда строка используется как операнд в выражении, строка может содержать только один или два символа.
Выражения и базовые операнды
Базовые операнды - числа, идентификаторы, предопределенный символ ($) для счетчика команд, предопределенная переменная (STACK) для вершины стека, и строки из одного или двух символов.
Выражение состоит из чисел, идентификаторов, специальных знаков и соединяющих их знаков операций.
Например: 23, Data1, $; -25; 166/32.
Выражения используются для определения 16-битных констант.