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

4.6 Косвенная регистровая адресация

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

В качестве операндов могут быть использованы регистровые пары DE и HL.

Пример:

MOV A, [DE]; При этом DE осуществляет адресацию ячейки памяти

Рисунок 21 – схематическое представление команды MOV A, [DE]

4.7 Базовая адресация

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

Формат операнда записывается как [HL + byte]

Пример:

MOV A, [HL+10H]; При этом byte соответствует значению 10H

Рисунок 22 – схематическое представление команды MOV A, [HL+10h]

4.8 Относительная индексная адресация

При этом виде доступа содержимое регистра C или В, указанное в слове команды добавляются к содержимому базового регистра, то есть регистровой паре HL указанной флагами выбора банка регистра (RBS0 и RBS1). Сумма используется для обращения к памяти. Добавление выполняется расширением содержимого регистра C или В как положительное 16-разрядное число. Перенос 16-ого бита игнорируется. Эта адресация может быть выполнена для всего пространства памяти.

Формат операнда имеет вид [HL+B] либо [HL+C].

Пример:

MOV A, [HL + B] – в качестве операнда выбран регистр В.

Код операции

Рисунок 23 – схематическое представление команды MOV A, [HL + B]

4.9 Стековая адресация

При стековой адресации происходит доступ к ячейке памяти, адрес которой хранится в указателе стека (SP). Этот метод адресации используется при выполнении команд PUSH, POP, вызове подпрограмм и возврате из подпрограмм, а также при автоматическом сохранении/восстановлении регистра PSW при обработке прерываний. При стековой адресации доступ может осуществляться только к внутреннему высокоскоростному ОЗУ.

Пример:

PUSH DE

Рисунок 24 – сохранение данных в стек.

5 Система команд.

5.1 Операции

При написании программы на языке ассемблера большинство команд имеют операнды, записанные в определенном формате. Причем действия, выполняемые некоторыми командами, могут отличаться в зависимости от формы представления операндов данной команды. Некоторые символы (модификаторы) такие как #, !, $ и [] являются зарезервированными. Применение модификаторов следует трактовать следующим образом:

• # – Непосредственно заданные данные

• ! – Абсолютный адрес

• $ - Относительный адрес

• [] – Косвенный адрес

В качестве непосредственно заданных данных в команде можно использовать соответствующее числовое значение или метку. При использовании метки обязательно следует указать какой-либо из модификаторов #, !, $ или [].

При описании команд, в качестве операндов вместо функциональных (Х, А, С и т.д.) или абсолютных (в таблице приведены в скобках R0, R1, R2 и т.д.) имен регистров, возможно использование обозначения r и rp для регистров и регистровых пар соответственно.

Операнды и принимаемые ими значения приведены в таблице 6.

Таблица 6 – Операнды и принимаемые ими значения.

Операнд

Значения операнда

r

rp

sfr

sfrp

X (R0), A (R1), C (R2), B (R3), E (R4), D (R5), L (R6), H (R7)

AX (RP0), BC (RP1), DE (RP2), HL (RP3)

Регистр специального назначения

Регистры специального назначения

saddr

saddrp

0хFE20 – 0хFF1F непосредственно заданный адрес или метка

0хFE20 – 0хFF1F непосредственно заданный адрес или метка (только четные адреса).

addr16

addr11

addr5

0х0000– 0хFFFF непосредственно заданный адрес или метка (для команд передачи 16-разрядных данных только четные адреса).

0х0800 – 0х0FFF непосредственно заданный адрес или метка

0x0040 – 0x007F непосредственно заданный адрес или метка (только четные адреса).

word

byte

bit

Непосредственно заданные 16-разрядные данные или метка

Непосредственно заданные 8-разрядные данные или метка

Непосредственно заданные 3-разрядные данные или метка

RBn

RB0 – RB3

Внимание! Данными операндами нельзя обратиться к адресам 0хFFD0 – 0xFFDF

Соседние файлы в папке методички к 78К0