Косвенная регистровая (базовая) адресация
Адрес операнда находится в одном из регистров BX, SI или DI.
Примеры:
add ax,[bx]
mov dl,[si]
Размер операнда в памяти здесь определяется размером первого операнда. Так как AX – 16-разрядный регистр, то из памяти берётся слово по адресу в BX. Так как DL – 8-разрядный регистр, то из памяти берётся байт по адресу в SI. Это правило верно и для других режимов адресации.
Рис. 6.9. Косвенная адресация.
Косвенная регистровая (базовая) адресация со смещением
Адрес операнда вычисляется как сумма содержимого регистра BX, BP, SI или DI и 8- или 16-разрядного смещения.
Примеры:
add ax,[bx+2]
mov dx,[array1+si]
В качестве смещения можно указать число или адрес метки. О размере смещения не беспокойтесь – компилятор сам его определяет и использует нужный формат машинной команды.