Способ
определения операнда называется режимом адресации. Рассмотрим наиболее типичные
режимы адресации микропроцессора 8086. Они разделяются на два класса — режимы
адресации данных и режимы адресации переходов. На Рис. 7.14 графически показаны
определения операндов для различных режимов адресации данных. Различают
следующие режимы адресации.
Непосредственный. Данное длиной 8 или 16 бит является частью команды.
Прямой. 16-битный эффективный адрес данного является частью
команды.
Регистровый. Данное содержится в определяемом командой регистре.
16-битный операнд может находиться в регистрах АХ, ВХ, СХ, DX, SI, DI, SP или
ВР, а 8-битный - в регистрах AL, АН, BL, ВН, CL, CH, DL или DH.
Регистровый
косвенный. Эффективный адрес данного
находится в базовом регистре ВХ или индексном регистре, определяемых командой:

Регистровый
относительный. Эффективный адрес
равен сумме 8- или 16-битного смещения и содержимого базового или индексного
регистров:

Базовый
индексный. Эффективный адрес равен
сумме содержимого базового и индексного регистров, определяемых командой:
![]()
Относительный
базовый индексный. Эффективный адрес
равен сумме 8-или 16-битного смещения и базово-индексного адреса:
![]()
Предположим,
что (ВХ) =0158, (DI) = 10А5, смещение = 1В57, (DS) = * 2100 и что в качестве
сегментного регистра применяется DS. Тогда различные режимы адресации дают
следующие эффективные и физические адреса:
Прямой:
ЕА=1В57,
Физический
адрес = 1В57 + 21000 = 22В57.

Рис. 7.14. Непосредственный (а), прямой
(б), регистровый (в), регистровый косвенный (г), регистровый относительный (д),
базовый индексный (е), относительный базовый индексный (ж) режимы адресации
данных
Регистровый:
ЕА нет — данное в указанном регистре. Регистровый косвенный (с участием регистра
ВХ) :
ЕА
= 0158,
Физический
адрес = 0158 + 21000 = 21158.
Регистровый
относительный (с участием регистра ВХ) :
ЕА
= 0158+1B57 = 1CAF;
Физический
адрес = 1CAF + 21000 = 22CAF.

Рис. 7.15. Внутрисегментный прямой
(а), внутрисегментный косвенный (б), межсегментный прямой (в), межсегментный
косвенный (г) режимы адресации переходов ЕА суммируется с умноженным на 16
содержимым соответствующего сегментного регистра
Базовый
индексный (с участием регистров ВХ и DI): ЕА = 0158+ 10A5 = 11FD, Физический
адрес = 11FD + 21000 = 221FD.
Относительный
базовый индексный (с участием регистров ВХ и DI) : ЕА = 0158 + 10А5 + 1В57 =
2D54, Физический адрес = 2D54 + 21000 = 23D54.
Режимы
для указания адресов перехода графически определены на Рис. 7.15. Рассмотрим их
подробнее.
Внутрисегментный
прямой. Эффективный адрес перехода
равен сумме 8-или 16-битного смещения и текущего содержимого IP. Когда смещение
имеет длину 8 бит, этот режим называется коротким переходом. Внутрисегментную
прямую адресацию в большинстве книг называют относительной адресацией, так как
смещение вычисляется "относительно" IP. Этот режим допустим в
условных и безусловных переходах, но в команде условного перехода может быть
только смещение длиной 8 бит.
Внутрисегментный
косвенный. Эффективный адрес перехода
есть содержимое регистра или ячейки памяти, которые указываются в любом режиме
(кроме непосредственного) адресации данных. Содержимое IP заменяется
эффективным адресом перехода. Данный режим допустим только в командах
безусловного перехода.
Межсегментный
прямой. Заменяет содержимое IP одной
частью команды, а содержимое CS — другой частью команды. Назначение данного
режима адресации — обеспечить переход из одного сегмента кода в другой.
Межсегментный
косвенный. Заменяет содержимое IP и
CS содержимым двух смежных слов из памяти, которые определяются в любом режиме
адресации данных кроме непосредственного и регистрового.
Отметим,
что физический адрес перехода равен сумме нового содержимого IP и содержимого
CS, умноженного на 16ю- Межсегментный переход может быть только безусловным.
Для
иллюстрации косвенного перехода с некоторыми режимами адресации данных
предположим, что (ВХ) = 1256, (SI) = 528F, смещение = 20А1. Тогда при прямой
адресации эффективный адрес перехода равен 20А1 + (DS) х 1610. При
регистровой косвенной адресации (с участием регистра ВХ) эффективный адрес
перехода 1256 + 20А1 + (DS) х 1610- Наконец, в базовой индексной
адресации (с участием регистров ВХ и SI) эффективный адрес перехода 1256 + 528F
+ (DS) х 1610.