7.1.6. Режимы адресации

 

Способ определения операнда называется режимом адресации. Рассмотрим наиболее типичные режимы адресации микропроцессора 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.

 

 

HotLog

.  

Заказчику web дизайна и программирования - каталог сайтов, обзор дизайн студий