Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Мова асемблер для програмування мікроконтролерів. Структура програми на асемблері. Синтаксис асемблера. Директиви

Исходный текст программы на языке ассемблера имеет определенный формат. Каждая команда (и псевдокоманда) представляет собой стро­ку четырехзвенной конструкции;

МЕТКА ОПЕРАЦИЯ ОПЕРАНД(Ы) КОММЕНТАРИЙ

Звенья (поля) могут отделяться друг от друга произвольным числом пробелов.

Метка. В поле метки размещается символическое имя ячейки памяти, в которой хранится отмеченная команда или операнд. Метка представ­ляет собой буквенно-цифровую комбинацию, начинающуюся с буквы. Используются только буквы латинского алфавита. Ассемблер МК51 допускает использование в метках символа подчеркивания (_). Длина метки не должна превышать шесть символов для МК48 и 31 — для MKS1. Метка всегда завершается двоеточием (:).

Псевдокоманды ассемблера не преобразуются в двоичные коды. а потому не могут иметь меток. Исключение составляют псевдокоман­ды резервирования памяти и определения данных (DS, DB, DW). У псев­докоманд, осуществляющих определение символических имен, в поле метки записывается определяемое символическое имя, после которого двоеточие не ставится.

В качестве символических имен и меток не могут быть использованы мнемокоды команд, псевдокоманд и операторов ассемблера, а также мнемонические обозначения регистров и других внутренних блоков МК.

Операция. В поле операции записывается мнемоническое обозначение команды МК или псевдокоманды ассемблера, которое является сокра­щением (аббревиатурой) полного английского наименования выпол­няемого действия. Например: MOV — move — переместить, JMP — jump — перейти, DB — define byte — определить байт.

Для МК48 и МК51 используется строго определенный и ограниченный набор мнемонических кодов. Любой другой набор символов, размещен­ный в поле операции, воспринимается ассемблером как ошибочный.

Операнды. В этом поле определяются операнды (или операнд), участ­вующие в операции. Команды ассемблера могут быть без-, одно- или двухоперандными. Операнды разделяются запятой (,).

Операнд может быть задан непосредственно или в виде его адреса (прямого или косвенного). Непосредственный операнд представляется числом (MOV А, #15) или символическим именем (ADDC A,#OPER2) обязательным указанием префикса непосредственного операнда (#). Прямой адрес операнда может быть задан мнемоническим обозначе­нием (IN A, P1), числом (INC 40), символическим именем (MOV A, MEMORY). Указанием на косвенную адресацию служит префикс @. В командах передачи управления операндом может являться число (LCALL 0135H), метка (JMP LABEL), косвенный адрес (JMPP @А) или выражение (JMP —2, где — текущее содержимое счетчика команд).

Используемые в качестве операндов символические имена и метки должны быть определены, а числа представлены с указанием системы счисления, для чего используется суффикс (буква, стоящая после чис­ла) " В — для двоичной, Q — для восьмеричной, D — для десятичной и Н — для шестнадцатеричной. Число без суффикса по умолчанию счи­тается десятичным.

Обработка выражений в процессе трансляции. Ассемблеры МК48 и МК51 допускают использование выражений в поле операндов, значения которых вычисляются в процессе трансляции.

Выражение представляет собой совокупность символических имен и чисел, связанных операторами ассемблера. Операторы ассемблера обес­печивают выполнение арифметических ("+" — сложение, "—" — вычита­ние, * — умножение, / — целое деление, MOD — деление по модулю) и логических (OR - ИЛИ, AND - И, XOR - исключающее ИЛИ, NOT -отрицание) операций в формате 2-байтных слов.

Например, запись ADD A,#((NOT 13) + 1) эквивалентна записи ADD A,#0F3H и обеспечивает сложение содержимого аккумулятора с числом —13, представленным в дополнительном коде.

Широко используются также операторы LOW и HIGH, позволяющие выделить младший и старший байты 2-байтного операнда.

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

Псевдокоманды ассемблера. Ассемблирующая программа трансли­рует исходную программу в объектные коды. Хотя транслирующая программа берет на себя многие из рутинных задач программиста, та­ких как присвоение действительных адресов, преобразование чисел, Присвоение действительных значений символьным переменным и т.п., программист все же должен указать ей некоторые параметры: началь­ный адрес прикладной программы, конец ассемблируемой программы, форматы данных и т.п. Всю эту информацию программист вставляет в; исходный текст своей прикладной программы в виде псевдокоманда (директив) ассемблера, которые только управляют процессом трансляции и не преобразуются в коды объектной программы. 1

Псевдокоманда ORG 100Н задает ассемблеру адрес ячейки памяти (100Н), в которой должна быть расположена следующая за ней команда прикладной программы.

Псевдокомандой EQU можно любому символическому имени, исполь­зуемому в программе, поставить в соответствие определенный операнд. Например, запись

PET EQU 13

приводит к тому, что в процессе ассемблирования всюду, где встретится символическое имя PET, оно будет заменено числом 13.

Символические имена операндов, переопределяемых в процессе ис­
полнения программы, определяются псевдокомандой SET:


alfa set 3

alfa set alfa+1

Ассемблер МК51 позволяет определить символическое имя как адрес внутренних (псевдокоманда DATA), внешних (XDATA) данных или адрес бита (псевдокоманда BIT). Например, директива

ERROR_FLAG BIT 25H.3

определяет символическое имя ERROR _ FLAG как третий бит ячейки ОЗУ с адресом 25Н.

Псевдокоманда DB обеспечивает занесение в ПП константы, пред­ставляющей собой байт.

Псевдокомандой END программист дает ассемблеру указание об окончании трансляции.

В результате трансляции должна быть получена карта памяти про­грамм, где каждой ячейке памяти поставлен в соответствие хранящийся в ней код.

В соответствии с форматом команд для представления их объектных кодов отводятся одна, две или три ячейки памяти программ. В первой ячейке всегда располагается код операции, во второй (а для МК51 в третьей) — непосредственный операнд, адрес прямоадресуемого one-ранда, адрес перехода внутри страницы памяти программ (для команд передачи управления МК48) или смещение (для команд передачи управления МК51). Для команд LCALL и LJMP во втором и третьем байтах объектного кода указывается адрес передачи управления (во втором — старшая часть, в третьем — младшая).

 

<== предыдущая лекция | следующая лекция ==>
 | Ввод, редактирование, трансляция и отладка прикладных программ в кросс-системах разработки
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 776; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.