Организация ЭВМ и систем: Курс лекций (Позиционные системы счисления. Процессоры семейства IA-32. Лазерные принтеры), страница 15

транслируются в одну и ту же машинную команду и помещают в регистр AX слово, которое находится в сегменте, указываемом DS, со смещением, равным значению BX плюс 2.

С помощью данного способа адресации часто организуется доступ к одномерному массиву однобайтных данных. Непосредственно заданное число соответствует адресу начала массива, а число в регистре — индексу элемента массива, к которому нужно обратиться.

6.6.  Косвенная адресация с масштабированием и сдвигом

Если элементами одномерного массива являются не байты, а одинарные, двойные или четверные слова, то предыдущий способ адресации не годится. Он дополняется масштабированием.

Например, команда

                MOV     AX, [ESI*2]+2

Помещает в регистр AX слово, которое находится в сегменте, указываемом DS, со смещением, равным сумме удвоенного значения ESI и числа 2.

В данном способе адресации можно использовать только регистр BX или 32-разрядные регистры общего назначения.

6.7.  Косвенная адресация со сдвигом и индексированием

В данном способе адресации смещение операнда в памяти вычисляется как сумма двух чисел, содержащихся в двух различных регистрах, и смещения, если таковое задано.

Например, все нижеследующие команды:

                MOV     AX, [BX+SI+2]
                MOV     AX, [BX][SI]+2
                MOV     AX, [BX+2][SI]
                MOV     AX, [BX][SI+2]
                MOV     AX, 2[BX][SI]

транслируются в одну и ту же машинную команду, которая помещает в регистр AX слово, которое находится в сегменте, указываемом DS, со смещением, равным сумме значений, хранящихся в BX и SI, и числа 2.

Из 16-разрядных регистров так складывать можно BX+SI, BX+DI, BP+SI и BP+DI, а из 32-разрядных — все регистры общего назначения в любом сочетании.

Примечание. Как и в случае прямой адресации, вместо числа обычно ставится имя переменной.

6.8.  Косвенная адресация со сдвигом, индексированием и масштабированием

Это самый полный способ адресации, включающий все ранее рассмотренные случаи как частные. Полный адрес операнда задаётся выражением по следующей схеме:

[сегментный регистр:][РОН1+РОН2*{1|2|4|8}]+смещение где РОН1 — любой 32-разрядный регистр общего назначения;

РОН2 — любой 32-разрядный регистр общего назначения, кроме ESP.

Смещение может быть байтом или двойным словом.

7. Основные непривилегированные команды

7.1. Команды пересылки данных

7.2. Команды арифметических операций

7.3. Команды двоично-десятичной арифметики

7.4. Команды логических операций

7.5. Команды операций сдвига

7.6. Команды операций над битами и байтами

7.7. Команды передачи управления

7.8. Строковые операции

7.9. Команды управления флагами

7.10. Команды загрузки сегментных регистров

7.11. Другие команды

[1, 3, 10]

7.1.  Команды пересылки данных

Команды пересылки данных не изменяют флагов.

MOV            приёмник, источник           пересылка данных                       8086

Базовая команда пересылки данных. Копирует содержимое источника в приёмник. Содержимое источника не изменяется.

Источником может быть:

—  непосредственный операнд,

—  регистр общего назначения,

—  сегментный регистр,

—  память.

Приёмником может быть:

—  регистр общего назначения,

—  сегментный регистр, кроме CS,

—  память.

Оба операнда должны быть одного и того же размера.

Недопустимые сочетания приёмника и источника:

—  переменная, переменная;

—  сегментный регистр, сегментный регистр;

—  сегментный регистр, непосредственное число.

Примечание. Помещение значения одного сегментного регистра или непосредственного значения в другой сегментный регистр, кроме CS, выполняются парой команд MOV или через стек парой команд PUSH, POP.

CMOVxx     приёмник, источник           условная пересылка данных           P6

Условная пересылка данных. Копирует содержимое источника в приёмник. Содержимое источника не изменяется.

Источником может быть:

—  регистр общего назначения;

—  память.

Приёмником может быть регистр.

xx имеют то же значение, что и в командах условного перехода.