Способ формирования адреса операнда называется режимом адресации. Использование различных режимов адресации позволяет уменьшить длину команд процессора в случае задания в качестве операнда адреса расположения данного в памяти. Например, для задания физического адреса байта или слова в адресном пространстве памяти требуется поле длиной 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.
|
а) |
|
REG = 000- AX или AL REG = 001- CX или CL REG = 010- DX или DL REG = 011- BX или BL REG =100- SP или AH |
|||
|
б) |
|
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-битовые).
а)
|
|
|
||
|
б) |
|
|||
|
|
|
Рис. 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 показана схема формирования эффективного адреса при относительном базовом индексном способе адресации данных.
