Пример 2.2. Использование непосредственной адресации 1. MOV AL, 00101011B Команда пересылки. Осуществляет загрузку двоичного числа 00101011 (5310) в младший байт регистра данных. 2. INT 21H Команда прерывания. Инициирует прерывание 2116 (3310). 3. XOR AX, BX Исключающее ИЛИ содержимого регистров АХ и ВХ. 2. Прямой режим адресации. В этом режиме адресации 16-битный адрес также непосредственно указан в команде. Физический адрес по умолчанию вычисляется с использованием сегментного регистра DS. Операнд в команде записывается в виде константного выражения или переменной, или комбинации «переменная ± константное выражение». Пример 2.3. Запись прямого режима адресации Если переменная описана как TABLE DB 5, 4, 3, 2, 1 то нижеследующие команды пересылки можно записать: 1. MOV AL, TABLE Загрузка в младший байт регистра данных числа 5. 2. MOV AL, TABLE+3 Загрузка в младший байт регистра данных числа 2. 3. Регистровый прямой режим адресации. При использовании этого режима данные находятся в регистре, который указан в команде в виде имени. Пример 2.4. Использование регистрового прямого режима адресации 1. INC AX Содержимое регистра данных АХ увеличивается на единицу. 2. MOV BP, SP Пересылать содержимое адреса стека (SP) в базовый регистр (ВР). 4. Регистровый косвенный режим адресации. В этом режиме адресации адрес данных может находиться в одном из следующих регистров: ЕВР, ЕВХ, ESI, EDI. Физический адрес вычисляется с использованием по умолчанию регистра сегмента стекаSS для регистра ЕВР и с использованием регистра сегмента данныхDS. Для остальных регистров в качестве операнда указывается имя регистра, заключенное в квадратные скобки. Пример 2.5. Использование косвенного регистрового режима адресации 1. INC WORD PTR [BX] Увеличить на единицу содержимое слова памяти, адрес которого находится в регистре ВХ. 5. Регистровый относительный режим адресации.В этом режиме адрес данных вычисляется как сумма смещения и содержимого одного из регистров EBP, EBX, ESI, EDI. При вычислении адреса по умолчанию используется содержимое регистра SS, если в команде указан регистрEBP, и регистраDS, если указан другой регистр. Операнд команды может быть записан в одном из следующих вариантов: · переменная [регистр ± константное выражение]; · переменная [регистр]; · [регистр ± константное выражение]. Пример 2.6. Использование регистрового относительного режима адресации 1. INC TABLE [BX] Увеличить на единицу элемент массива TABLE. Смещение элемента относительно TABLE находится в регистре BX. 2. INC WORD PTR [BX+3] Увеличить на 1 содержимое слова памяти, адрес которого определяется как сумма содержимого регистра ВХ плюс 3. 6. Базовый индексный режим адресации. В этом режиме адресации адрес данных вычисляется как сумма содержимого базового и индексного регистров. Возможны следующие 4 комбинации регистров: EBX+ESI, EBP+ESI, EBX+EDI, EBP+EDI. При вычислении физического адреса по умолчанию используется регистр SS, если используется регистр EBP, и регистр DS, если в команде указан другой регистр. Операнды в команде записываются в виде: [Базовый регистр] [Индексный регистр] Пример 2.7. Использование базового индексного режима адресации INC BYTE PTR [BX] [SI] Операнд адресует байт. 7. Относительный базовый индексный режим адресации. Исполнительный адрес в этом режиме адресации вычисляется как сумма смещения, содержимого базового и индексного регистров. Здесь также возможны 4 комбинации регистров: EBX + ESI + смещение, EBP + ESI + смещение, EBX + EDI + смещение, EBP + EDI + смещение. При вычислении адреса по умолчанию используется регистр SS, если в команде используется регистрBP, или регистрDS, если указан регистрDX. Операнд в команде может быть задан в одной из следующих комбинаций: · переменная [базовый регистр] [индексный регистр]; · переменная [базовый регистр ± константное выражение] [индексный регистр]; · переменная [базовый регистр] [индексный регистр ± константное выражение]; · переменная [базовый регистр ± константное выражение] [индексный регистр ± константное выражение]; · [базовый регистр ± константное выражение] [индексный регистр ± константное выражение]; · [базовый регистр] [индексный регистр ± константное выражение]; · [базовый регистр ± константное выражение] [индексный регистр]. |