Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБ_МИУС_14.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.81 Mб
Скачать

2.4 Система команд микроконтроллеров семейства Intel 8051

Для программирования однокристальных микроконтроллеров семейства Intel 8051 могут быть использованы язык высокого уровня Си или язык низкого уровня ассемблер. Объектные коды, полученные путем трансляции исходных программ, написанных на языке высокого уровня, занимают в памяти больше места и требуют большего времени на исполнение.

Большинство прикладных задач управления предъявляет высокие требования к быстродействию. Поэтому для их решения основным языковым средством еще долгие годы будет оставаться ассемблер. Кроме того, причиной его преимущественного использования является то, что однокристальные микроконтроллеры имеют ограниченный объем резидентной памяти программ и, следовательно, критичны к размеру прикладных программ.

2.4.1. Правила записи программ на языке ассемблера

Правила записи программ на языке ассемблера А51 предполагают, что текст программы разбивается на специализированные поля, которые отделяются друг от друга пробелами или табуляцией. Таким образом, каждая команда представляет собой строку:

<МЕТКА>: ОПЕРАЦИЯ <ОПЕРАНД 1> <ОПЕРАНД 2> ;<КОММЕНТАРИЙ>

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

Поле операции содержит код операции, который несет информацию о выполняемом действии. Код операции записывается при помощи мнемонического обозначения команды – сокращенного английского наименования выполняемого действия.

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

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

Шестнадцатиразрядные операнды – это двухбайтные константы и адреса внешней памяти, для представления которых используются второй и третий операнды команды.

2.4.2. Режимы адресации данных

Способ представления данного в поле операнда называется режимом адресации. Для адресации данных в микроконтроллерах семейства Intel 8051 используются следующие режимы.

Прямая адресация (Direct Addressing) используется для обращения к внутренней памяти данных и регистров специальных функций. Операнд определяется восьмиразрядным адресом соответствующего байта или бита.

MOV A,10h ;переслать в аккумулятор содержимое

;ячейки РПД с адресом 10h

Непосредственная адресация (Immediate constants). Операнд содержится непосредственно в поле команды вслед за кодом операции и может занимать один или два байта. Префиксом непосредственной адресации является знак #.

MOV A,#10h ;переслать в аккумулятор число 10h

Косвенная адресация (Indirect Addressing) применяется при обращении, как к резидентной, так и к внешней памяти. В этом случае инструкция адресует регистр-указатель, содержащий адрес операнда. Префиксом косвенной адресации является знак @. Для указания однобайтных адресов резидентной памяти могут использоваться регистры R0 и R1 выбранного банка регистров общего назначения. Для двухбайтной адресации внешней памяти используется регистр указатель данных DPTR.

MOVX A,@DPTR ;переслать в аккумулятор содержимое

;ячейки ВПД, адресуемой регистром DPTR

Регистровая адресация (Register Instruction). Данная адресация применяется для доступа к регистрам R0…R7 выбранного банка регистров общего назначения. Команды с регистровой адресацией содержат в байте кода операции трехразрядное поле, определяющее номер регистра.

MOV A,R2 ;переслать в аккумулятор содержимое

;регистра R2

Индексная адресация (Indexed Addressing) используется при чтении памяти программ. Двухбайтные регистр DPTR (или PC) указывает базовый адрес таблицы, а аккумулятор А – указывает на точку входа. Адрес элемента таблицы находится сложением базы с индексом (содержимым аккумулятора).

MOVC A,@A+DPTR ;переслать в аккумулятор содержимое

;ячейки ВПП, адрес которой определен

;как (A)+(DPTR)

Неявная адресация (Register-Specific Instructions). Некоторые инструкции используют индивидуальные регистры (например, аккумулятор), при этом данные в поле операнда отсутствуют, но адрес, указывающий на регистр, заложен в код операции.

CLR А ;сбросить содержимое аккумулятора