РЕЖИМЫ АДРЕСАЦИИ ДАННЫХ


Способ фор­мирования адреса операнда называется режимом адресации. Использование различных режимов адресации позволяет умень­шить длину команд процессора в случае задания в качестве операнда адреса расположения данного в памяти. Например, для задания физического адреса байта или слова в адресном пространстве памяти требуется поле длиной 20 бит, для за­дания части логического адреса (смещение в сегменте) требу­ется поле длиной 16 бит. В этом случае смещение в сегменте называется исполнительным или эффективным адресом данно­го. Эффективный адрес данного определяет, на каком расстоя­нии от начала сегмента располагается требуемая ячейка памя­ти.

В машинных командах микропроцессора К1810ВМ86 можно задавать следующие режимы адресации данных: непосред­ственный, прямой, регистровый, регистровый косвенный, регис­тровый относительный, базовый индексный и относительный базовый индексный.

При непосредственном режиме адресации данное, требуе­мое для выполнения команды процессора, содержится непос­редственно в коде команды. Например, команда на рис. 2.2,а длиной 2 байта выполняет сложение содержимого регистра AL c непосредственными данными, располагаемыми во втором Байте команды (число 10); а команда на рис. 2.2, б длиной 3 байта выполняет сложение содержимого регистра АХ с непосредственными данными, располагаемыми во 2 и 3 байтах команды (2 • 256 + 10 = 522).

адресация данных

прямая адресация данных

При прямом способе адресации 16-битовый эффективный адрес данного (смещение в сегменте) является частью коман­ды. Например, команда на рис. 2.3,а длиной 3 байта заносит в регистр AL байт, который расположен по адресу DS:EA, где ЕА представляет собой эффективный адрес (смещение в сегменте), непосредственно задаваемый в коде команды (ЕА = 3 • 256 + 10 = 778), а команда на рис. 2.3,6 записывает со­держимое регистра AL по адресу DS:EA, где ЕА = = 779.

а)

0 1 0 0 0

REG

REG = 000- AX или AL

REG = 001- CX или CL

REG = 010- DX или DL

REG = 011- BX или BL

REG =100- SP или AH

     

б)

1 0 1 1 0

REG

D A T A

REG = 101- BP или CH

REG = 110- SI или DH

REG = 111– DI или BH

Рис. 2.4. Регистровый способ адресации данных

При регистровом способе адресации данное содержится в регистре, определяемом командой. 16-битовый операнд может находиться в регистрах АХ, ВХ, СХ, DX, SI, DI, SP или ВР, а 8-битовый — в регистрах AL, АН, BL, BH, CL, CH, DL или DH. Например, на рис. 2.4,а представлена команда длиной в байт, которая увеличивает содержимое 16-битового регистра на 1; на рис. 2.4,6 представлена команда засылки в 8-5итовый регистр непосредственного данного DATA. В обоих случаях поле команды REG определяет используемый для опе­рации регистр, который определяется в зависимости от раз­рядности операции (для 8-разрядной операции используются 8-битовые регистры, для 16-разрядной ~ 16-битовые).

а)

1 1 1 1 1 1 1 0

0 0 0 0 1 1 1 1

б)

clip_image006

1 1 1 1 1 1 1 0

0 0 0 0 1 1 0 0

Рис. 2.5. Косвенный регистровый способ адресации данных

При регистровом косвенном способе адресации эффектив­ный адрес данного ЕА находится в 16-битовом регистре процессора. В качестве таких регистров могут использоваться базовый регистр ВХ и индексные регистры S1 или D1. Напри­мер, команда на рис. 2.5,а уменьшает на 1 содержимое ячейки памяти (байта), эффективный адрес которой находится в ре­гистре ВХ; а на рис. 2.5,6 — в SI. На рис. 2.5,в показано, что эффективный адрес данного может находиться ‘В одном из трех регистров: ВХ, SI или DI. Здесь и далее содержимое ре­гистра обозначается именем регистра, заключенным 6 квад­ратные скобки, а альтернативный выбор задается двойными квадратными скобками.

регистровый относительный способ адресации

При регистровом относительном способе адресации эффек­тивный адрес данного равен сумме содержимого базового или индексного регистра и 8- или 16-битового смещения (относи­тельно адреса в используемом регистре), которое задается в коде команды. Например, команда на рис. 2.6,а длиной 3 бай­та обменивает содержимое 16-битового регистра с адресуемой ячейкой памяти, эффективный адрес которой равен сумме со­держимого регистра DI и 8-битового смещения (ЕА = [DI] + 15), задаваемого в соответствующем поле команды; а команда на рис. 2.6,6 длиной 4 байта обменивает содержимое 8-битово­го регистра с адресуемой ячейкой памяти, эффективный адрес которой .равен сумме содержимого регистра ВР и 16-оитовою смешения (ЕА = [ВР] + 4 • 256 + 15). В обоих случаях ис­пользуется регистр, который определяется полем REG как представлено на рис. 2.4. На рис. 2.6,в показана схема фор­мирования эффективного адреса при регистровом относитель­ном способе адресации.

При базовом индексном способе адресации данных эффек­тивный адрес данного равен сумме содержимого базового и индексного регистров, которые определяются кодом команды. Например, команда на рис. 2.7,а длиной 2 байта сохраняет в стеке (по адресу SS:SP) содержимое слова (два байта), эффективный адрес которого равен сумме содержимого регистра ВХ и DI (ЕА = [ВХ] + [DI]). На рис. 2.6,6 показана схема форми­рования эффективного адреса при базовом индексном способе адресации данных.

РЕЖИМЫ АДРЕСАЦИИ ДАННЫХ

При относительном базовом индексном способе адресации данных эффективный адрес данного равен сумме содержимого базового и индексного регистра, а также 8- или 16-битового смещения, задаваемого в коде команды. Например, команда на рис. 2.8,а длиной 4 байта сдвигает содержимое адресуемой ячейкой памяти (байта) вправо на один двоичный разряд, эф­фективный адрес которой равен сумме содержимого регист­ров ВХ и SI, а также 16-битового смещения, задаваемого в соответствующем поле команды (ЕА = [ВХ] + [SI] + 7 • 256 + 31). На рис, 2.8,6 показана схема формирования эффектив­ного адреса при относительном базовом индексном способе ад­ресации данных.

Загрузка...