- •С и с т е м а к о м а н д о д н о к р и с т а л ь н ы х м и к р о к о н т р о л л е р о в с е м е й с т в а m c s 5 1 у ч е б н о – м е т о д и ч е с к о е п о с о б и е
- •1. Способы адресации операндов
- •2. Система команд мк
- •Djnz r5,again ;
- •3. Правила написания программ на языке assembler
- •Метка операция операнд(ы) комментарии
- •3.1. Метка
- •3.2. Операция
- •3.3. Операнды
- •3.4. Комментарий
- •Директивы ассемблера
- •4.1. Директивы символических определений
- •Пример:
- •Ozu_org xdata 0800h; Адрес начала области внешнего озу.
- •4.2. Директивы резервирования и инициализации памяти
- •4.3. Директивы управления состоянием ассемблера
- •Задания для самостоятельной проработки материала
1. Способы адресации операндов
Система команд МК предоставляет большие возможности программисту для обработки данных, обеспечивает реализацию логических, арифметических операций, а также управление в режиме реального времени. Реализована побитовая, потетрадная, побайтная и шестнадцатиразрядная обработка данных.
Синтаксис большинства команд ассемблерного языка МК состоит из мнемонического (аббревиатура) обозначения функции, вслед за которым идут операнды, указывающие методы адресации и типы данных.
В машинном коде команда занимает один, два или три байта. Команды выполняются за один, два или четыре (умножение и деление) машинных цикла. При тактовой частоте 12 МГц одноцикловые команды выполняются за 1 мкс, двухцикловые за 2мкс и т.д. Большинство команд имеют формат в один или два байта и выполняются за один или два машинных цикла. На рис. 1 показаны 13 типов команд.
Первый байт команды любого типа и формата всегда содержит код операции (КОП). Второй и третий байты содержат либо адреса операндов, либо непосредственные операнды.
-
1-й байт
D7… D0
1
КОП
2-й байт
D7… D0
2
КОП
#data
3
КОП
Direct
4
КОП
Bit
5
КОП
Rel
6
a10a9a8
КОП
a7… a0
3-й байт
D7… D0
7
КОП
Direct
#data
8
КОП
Direct
Rel
9
КОП
Direct
Direct
10
КОП
#data
Rel
11
КОП
Bit
Rel
12
КОП
Adr16 H
Ad16 L
13
КОП
#data16 H
#data16 L
Рис. 1. Типы команд
Существуют следующие способы адресации операндов – источников:
регистровая; прямая адресация; косвенная регистровая; непосредственная адресация; косвенная регистровая по сумме базового и индексного регистра.
Рассмотрим каждый вид адресации в отдельности.
Регистровая адресация.Регистровая адресация используется для обращения к восьми рабочим регистрам (R0 –R7) выбранного банка (эти же регистры могут быть выбраны с помощью прямой адресации и косвенно-регистровой адресации как обычные ячейки внутреннего ОЗУ данных). Регистровая адресация используется также для обращения к регистрам А, В, АВ (сдвоенному регистру),DPTRи к флагу переноса С. Использование регистровой адресации позволяет получать двухбайтовый эквивалент трехбайтовых команд прямой адресации.
Прямая адресация. Прямая байтовая адресация используется для обращения к ячейкам внутренней памяти (ОЗУ) данных (0—127) и к регистрам специальных функций. Прямая побитовая адресация используется для обращения к отдельно адресуемым 128 битам, расположенным в ячейках с адресами 20Н—2FH, и к отдельно адресуемым битам регистров специального назначения. Старший бит байта кода прямого адреса выбирает одну из двух групп отдельно адресуемых битов, расположенных в ОЗУ или регистрах специального назначения. Прямо адресуемые биты с адресами 0—127 (00H—7FH) расположены в блоке из 16 ячеек внутреннего ОЗУ, имеющих адреса 20Н—2FH. Указанные ячейки последовательно пронумерованы от младшего бита младшего байта до старшего бита старшего байта. Отдельно адресуемые биты в регистрах специального назначения пронумерованы следующим образом: пять старших разрядов адреса совпадают с пятью старшими разрядами адреса самого регистра, а три младших — определяют местоположение отдельного бита внутри регистра.
Косвенно-регистровая адресация. Косвенно - регистровая адресация используется для обращения к ячейкам внутреннего ОЗУ данных. В качестве регистров-указателей используются только регистры R0, R1 выбранного банка регистров.
Косвенно-регистровая адресация используется также для обращения к внешней памяти данных. В этом случае с помощью регистров-указателей R0 и R1 (выбранного банка рабочих регистров) можно адресовать 256 байт внешней памяти данных. Номер блока предварительно задается содержимым порта Р2.
16-разрядный указатель данных (DPTR) может быть использован для обращения к любой ячейке адресного пространства внешней памяти данных объемом до 64 Кбайт.
Непосредственная адресация. Непосредственная адресация позволяет выбрать из адресного пространства памяти программ константы, явно указанные в команде.
Косвенно-регистровая адресация по сумме базового и индексного регистров. Косвенно-регистровая адресация по сумме: базовый регистр плюс индексный регистр (содержимое аккумулятора А) упрощает просмотр таблиц, зашитых в памяти программ. Любой байт из таблицы может быть выбран по адресу, определяемому суммой содержимого DPTR или PC и содержимого А.