Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Способы указания адреса




Способом адресации операнда называются его различные формы представления в структуре поля команды. Способ адресации зависит от двух факторов:

а) от варианта доступа к данным;

б) от полноты представления адреса.

По варианту доступа к данным различают:

 

1. Непосредственная адресация (Immediate constants) - поле операнда непосредственно содержит данные, с которыми работает команда. Перед полем операнда (в большинстве случаев) ставится префикс #.

2. Прямая адресация (Direct Addressing) - префикса перед операндом нет. В поле операнда содержится адрес (ad) ячейки памяти, которая содержит данные. Эта адресация используется для внутренней памяти данных.

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

Полнота представления адреса может быть:

1. Полная - в поле операнда находится либо полный элемент данных, либо полный адрес, которые могут иметь формат 1 или 2 байта.

2. Регистровая (неполная) (Register Instruction) - операнд занимает место в байте, содержащем код операции. Он содержит несколько младших бит (1 или 3) полного адреса ячейки памяти, то есть работа осуществляется с усеченным адресным пространством – регистровым банком. Таким образом, усеченный адрес – это номер регистра. В случае прямой адресации используется 3 бита полного адреса, что соответствует размеру регистрового банка 8 регистров (R0-R7). В случае косвенной адресации используется только 1 бит полного адреса, поэтому возможна работа только с регистрами R0 и R1. Достоинство: повышение быстродействия за счет одновременной выборки из памяти программ кода операции и операнда(ов), поэтому часто регистровый банк называют сверхоперативным запоминающим устройством (СОЗУ).

3. Неявная (Register-Specific Instructions) - операнд представляет собой уникальный регистр, операция осуществляется только с ним. В этом случае нет необходимости включать его адрес в программный код. Например, это операции с аккумулятором А и DPTR.

Таблица 2

Адресация Вариант доступа к данным
непосредственная прямая косвенная
Полнота представления полная непосредственная полная прямая полная отсутствует
регистровая (неполная) не существует прямая регистровая косвенная регистровая
неявная не существует прямая неявная косвенная неявная

 

Таким образом, в зависимости от сочетания варианта представления адреса и полноты его указания существуют способы адресации, представленные в таблице 2:

1. Непосредственная полная адресация - когда в поле операнда представлен непосредственно элемент данных, т.е. число над которым выполняется операция, например: команда записи в аккумулятор непосредственного операнда - MOV A, #d (MOV A, #01H), двухбайтовая команда, в которой второй байт представляет непосредственный операнд #d (число 01H).

2. Прямая полная адресация – в поле операнда указывается адрес расположения операнда в памяти, например команда записи в аккумулятор содержимого ячейки памяти данных с прямым адресом - MOV A, ad(MOV A, 21Н), в которой второй байт представляет прямой адрес ad в памяти данных (адрес 21Н).

3. Прямая регистровая адресацияв поле кода операции (!) указывается трехбитный номер регистра rrr = 000÷1112, где расположен операнд. Поле адреса для данного операнда совмещено вместе с кодом операции в одном байте, например: команда инкремента рабочего регистра - INC Rn (00001rrr). Таким образом, изменяя номер регистра rrr, мы можем обращаться к любому из восьми рабочих регистров выбранного банка.

4. Косвенная регистровая адресация - в поле кода операции (!) указывается однобитный номер регистра i = 0÷12, в котором предварительно записан адрес расположения операнда в памяти, т.е. регистр выполняет роль указателя на фактический адрес. Поле адреса для данного операнда совмещено вместе с кодом операции в одном байте, например: команда инкремента ячейки памяти данных адрес которой находится в регистре Ri - INC @Ri (0000011i). Таким образом, изменяя номер регистра i, мы можем использовать регистры R0 и R1 в качестве указателей данных при косвенной адресации.

5. Прямая неявная адресация - код операции команды неявным образом определяет регистр (обычно это аккумулятор А), где находится операнд, например однобайтовая команда инверсии аккумулятора - CPL A.

6. Косвенная неявная адресация - код операции неявным образом определяет регистр (обычно это регистр DPTR, либо сумма (А+ DPTR)), который содержит фактический адрес, например команда относительного косвенного перехода – JMP @A+DPTR.

Длина или формат команды зависит от двух факторов:

а) от количества операндов, участвующих в операции;

б) от полноты представления адреса, т.е. от способа адресации.

В соответствии с этим команды микроконтроллера бывают однобайтовые, двухбайтовые и трехбайтовые, например:

1.

 

команда сложить содержимое аккумулятора и регистра R3 – формат 1 байт;

2.

команда переместить (копировать) содержимое ячейки памяти программ с косвенным адресом в аккумулятор – формат 1 байт;

3.

команда вычесть с учетом займаиз содержимого аккумулятора содержимое ячейки памяти ОЗУ с прямым адресом 23Н – формат 2 байта;

4.

команда переместить (копировать) в регистр R2 8-разрядное число #02Н – формат 2 байта;

5.

команда переместить (копировать) в ячейку ОЗУ с косвенным адресом содержимое ячейки ОЗУ с прямым адресом – формат 2 байта;

6.

команда переместить (копировать) в ячейку ОЗУ с прямым адресом 20Н содержимое ячейки ОЗУ с прямым адресом 32Н – формат 3 байта;

7.

команда переместить (копировать) в регистр DPTR 16-разрядное число #107FH – формат 3 байта.

 


Поделиться:

Дата добавления: 2015-02-10; просмотров: 97; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты