Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_i_otvety_MPT.doc
Скачиваний:
7
Добавлен:
01.03.2025
Размер:
3.94 Mб
Скачать

23. Язык Ассемблер для микроконтроллеров семейства mcs-51: назначение, структура полей предложений на языке Ассемблер, директивы Ассемблера.

Язык Ассемблер, называемый также языком символического кодирования, является в настоящее время основным инструментом разработки программ для МК семейства MCS-51. Главное его достоинство заключается в том, что он допускает представление всех элементов программы в символической (буквенно-цифровой) форме, отражающей их содержательный смысл. Преобразование символических наименований в двоичные коды команд МК возлагается на специальную компьютерную программу, называемую ассемблирующей программой, а чаще всего, просто ассемблером. Программа-ассемблер действует как «сборщик», объединяя элементы программы в конкретные машинные команды.

Основное отличие языка Ассемблер от машинного языка заключается в использовании вместо двоичных кодов команд и адресов мнемонических и символических наименований – символических имен. Символическое имя в языке Ассемблер – это последовательность букв латинского алфавита и цифр, причем имя не может начинаться с цифры. Допускается использование в имени символа подчеркивания (нижнего тире). Длина последовательности символов не должна превышать 31. В языке используют два типа имен постоянные и определенные пользователем.

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

Символические имена пользователя следует обязательно определять в исходной программе, причем они не должны совпадать с постоянными именами (иначе ассемблирующая программа-транслятор выдает сообщение об ошибке).

Программа на языке Ассемблер представляется в виде последовательности команд, называемых также операторами или предложениями Ассемблера. Для каждой команды отводится одна строка. В общем случае предложение на языке Ассемблер содержит 4 поля и имеет следующий вид

Метка  Операция Операнды  Комментарий

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

Поля предложения на языке Ассемблер

Поле метки. Оно используется для записи либо имени, либо метки. Поле метки отделяется от соседнего поля двоеточием. Имя служит для идентификации элементов программы в директивах Ассемблера EQU, REG (см. далее). Если имя используется для организации адресных ссылок на указанные операторы, оно называется меткой. Синтаксически метка определяется так же, как и имя. Числовое значение метки определяется по содержимому счетчика адреса ассемблирующей программы при трансляции исходной программы. Метка всегда соответствует адресу первого байта машинной команды или области памяти, которые она именует.

Примеры допустимых меток

AGAIN , DONE , LAB1 , M1 , DEL50MS LOOP_1

Следующие метки недопустимы 8ABC - начинается не с буквы DONE - не заканчивается двоеточием SP - использовано ключевое слово (имя регистра МК) A ONE - содержит пробел.

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

Поле операции. В этом поле содержится символическое описание (мнемокод) выполняемой команды микроконтроллером, которое заменяет числовое значение кода операции. Это обозначение состоит из двух – четырех букв и является сокращением от английских слов, описывающих данную операцию. Запоминать и использовать мнемокоды значительно проще и удобнее, чем численные коды операций. Мнемокоды являются ключевыми словами языка Ассемблер и, если содержимое этого поля не входит в множество допустимых мнемокодов, программа-ассемблер выдает сообщение о недействительной команде.

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

Операнд может быть задан непосредственно или в виде его адреса (прямого или косвенного). Непосредственный операнд представляется числом (MOV A,#15H) или символическим именем (ADDC A, #OPER2) с обязательным указанием префикса непосредственного операнда ( # ). Прямой адрес операнда может быть задан числом (INC 40H), мнемоническим обозначением (MOV A, P1) или символическим именем (MOV A, MEMORY). Указанием на косвенную адресацию служит префикс @.

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

Рассмотрим способы определения информации указанных типов.

Шестнадцатиричные данные. Содержащееся в поле операндов 16-ричное число должно начинаться с цифр 0…9 и завершаться буквой H (Hehadecimal). Число, начинающееся с букв A…F, дополняется слева незначащим нулем (чтобы отличить его от символического имени или метки).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]