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

1.3. Способы адресации

Для микропроцессора Intel 8086 режимы адресации делятся на два класса: для данных и для переходов.

Непосредственная, при котором операнд длиной 8 или 16 бит является частью команды.

Прямая, при котором 16-битовый исполнительный адрес (ИА) операнда является частью команды.

Регистровая, при котором операнд может находиться в одном из регистров: АХ, АН, AL, ВХ, ВН, BL, СХ, СН, CL, DX, DH, DL, ВР, SP. SI, DI.

Регистрово-косвенная, при котором ИА операнда находится в одном из указанных регистров: [ВХ], [ВР], [SI], [DI]. В зависимости от используемых регистров, эта адресация называется базовая и индексная.

Регистровая относительная, при котором ИА операнда вычисляется как сумма 8- или 16-битового смещения и содержимого базового ([ВХ],[ВР]) или индексного ([SI], [DI]) регистра.

Базово - индексная, при котором ИА определяемся как сумма содержимого базового ([ВХ], [ВР]) и индексного ([SI],.[DI]) регистров.

Относительная базово-индексная (комбинированная), при котором ИА равен сумме адреса, который вычисляется в базовом индексном режиме, и 8-или 16-битового смещения.

Примеры ассемблерных мнемоник для различных режимов адресации приведены ниже (команда MOV AX, OPR пересылает OPR в регистр АХ, где OPR - операнд):

MOV АХ, 55 ; Непосредственный

MOV AX, VAR ; Прямой

MOV АХ, ВХ ; Регистровый

MOV АХ, [ВХ] ; Регистровый косвенный

MOV АХ, [ВХ-10] ; Регистровый относительный

MOV AX, [BP+Dl] ; Базовый индексный

MOV AX, [BP+SI+4] ; Относительный базовый индексный

При выполнении программ микропроцессор реализует такую последовательность действий:

1. Выбирает команду по адресу, содержащемуся в регистре IP.

2. Загружает команду в программно-недоступный регистр и дешифрирует ее с одновременным увеличением содержимого регистра IP для адресации следующей команды.

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

Внутрисегментный прямой переход, при котором адрес команды в сегменте кода определяется как сумма содержимого регистра IP и 8' или 16-битового смещения. В командах условных переходов допускается использовать только 8-битовое смещение.

Внутрисегментный косвенный переход используется только в командах безусловного перехода, при этом содержимое регистра IP заменяется 16-битовым значением выбранного регистра или ячейки, указывается в любом из режимов адресации данных, кроме непосредственного.

Межсегментный прямой переход, при котором содержимое регистров IP и С заменяется двумя словами, располагающимися непосредственно в команде.

Межсегментный косвенный переход, при котором содержимое регистров IP и С заменяется двумя последовательно расположенными в памяти словами. Эти слова могут быть указаны в любом режиме адресации данных, кроме непосредственного и регистрового.

Примеры ассемблерных мнемоник для различных режимов адресации переходов:

JMP LAB ; внутрисегментный прямой переход

JMP [ВХ] ; внутрисегментный косвенный переход

JMP FAR PTR LAB ; межсегментный прямой переход

JMP DWORD |BX] ; межсегментный косвенный переход

Как было указано выше, микропроцессор КР1810ВМ86 генерирует 20-разрядный физический адрес, состоящий из 16-разрядного адреса сегмента и 16-разрядного смещения. При этом используются следующие правила адресации:

  • выборка команд происходит только по адресу, заданному регистрами IP и CS;

  • регистр SP применяется только как смещение по отношению к регистру SS;

  • если регистр ВХ является базовым, то по умолчанию операнд находится в сегменте данных и для вычисления физического адреса используется регистр DS;

  • если регистр ВР является базовым, то по умолчанию операнд находится в сегменте стека и для вычисления физического адреса используется регистр SS;

  • если используются оба регистра - базовый и индексный, то операнд находится в сегменте, на который указывает базовый регистр;

  • если используется только индексный регистр, то операнд находится в сегменте данных, на который указывает регистр DS.

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