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

2.1.2.5. Способы адресации операндов в мп Intel 8086

Микропроцессором Intel 8086 для определения адреса операнда исполь­зуется:

  • прямая адресация;

  • непосредственная адресация;

  • регистровая адресация;

  • регистровая косвенная адресация;

  • базовая адресация;

  • индексная адресация;

  • базово-индексная адресация;

  • относительная адресация;

  • адресация в командах обработки строк;

  • стековая адресация.

Прямая адресация. В адресной части команды находится 16-разрядный исполнительный адрес (см. рис. 2.7). В командах безусловных переходов и обращения к подпрограммам содержится логический адрес: 16-разрядный адрес сегмента и 16-разрядный адрес смещения. В процессе выполнения команды смещение передается в указатель команд IP, а базовый адрес сегмента – в регистр CS.

Рис. 2.7. Прямая адресация

Непосредственная адресация. В адресной части команды содержится непосредственно сам одно- или двухбайтный операнд. Операнд располагается в конце кода команды, причем младший байт всегда предшествует старшему. Однобайтовый операнд записывается в дополнительном коде и может представлять константы в диапазоне от -128 до +127.

Рис. 2.8. Непосредственная адресация

Регистровая адресация. Операнд находится в одном из регистров общего назначения. Для адресации регистров используются 2-3 разряда кода команды.

Рис. 2.9. Регистровая адресация

Регистровая косвенная адресация. В командах с регистровой косвенной адресацией 16-разрядный исполнительный адрес находится в одном из регистров общего назначения. Для косвенной адресации могут использоваться только регистры BX, SI и DI.

Рис. 2.10. Регистровая косвенная адресация

Базовая адресация. Исполнительный адрес получается путем сложения содержимого регистра BX или BP с 8- или 16-разрядным смещением. 8-разрядное смещение представляет числа в диапазоне от -128 до +127, записанные в дополнительном коде.

Рис. 2.11. Базовая адресация

Индексная адресация. Исполнительный адрес получается путем сложе­ния содержимого регистра SI или DI с 8- или 16-разрядным смещением. 8-разрядное смещение представляет числа в диапазоне от -128 до +127, записанные в дополнительном коде.

Рис. 2.12. Индексная адресация

Базово-индексная адресация. Исполнительный адрес формируется сло­жением содержимого базового (BX или BP) и индексного (SI или DI) регистров со смещением. 8-разрядное смещение представляет числа в диапазоне от -128 до +127, записанные в дополнительном коде.

Рис. 2.13. Базово-индексная адресация

Относительная адресация. Исполнительный адрес вычисляется как сумма текущего содержимого указателя команд IP и смещения в команде. 8-разрядное и 16-разрядное смещение представляет числа со знаком в диапазоне от -128 до +127 или от -32768 до +32767.

Рис. 2.14. Относительная адресация

Адресация в командах обработки строк символов. Для адресации эле­ментов строк источников данных применяется регистр SI, а сами элементы по умолчанию располагаются в сегменте данных DS. Результаты обработки строк символов адресуются с помощью регистра DI и всегда помещаются в дополнительный сегмент ES. Если перед командой обработки строки раз­мещается однобайтовый префикс повторения REP, то соответствующая операция будет повторяться до тех пор, пока содержимое счетчика циклов повторения CX не станет равным нулю.

В процессе выполнения команды обработки строки автоматически кор­ректируется содержимое регистров SI и DI в зависимости от значения флага направления DF. Если флаг установлен в 0, то после каждой операции содержимое соответствующих индексных регистров увеличивается на единицу для операций с байтами и на два – для операций со словами. При установке флага DF в 1 процесс выполнения команды производится с уменьшением со­держимого индексных регистров на те же величины. Таким образом, в командах обработки строк в зависимости от состояния флага DF обеспе­чиваются автоинкрементный и автодекрементный способы адресации.

Стековая адресация. Исполнительный адрес операнда находится в указателе стека SP и автоматически уменьшается на два при записи в стек или увеличивается на два при чтении из стека. Заполнение стека происходит в направлении уменьшения адресов ячеек памяти («перевернутый» стек).

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