КАТЕГОРИИ: Архитектура-(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. Символические имена операндов, переопределяемых в процессе ис
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; Просмотров: 801; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |