2.2.7. Адресация по базе с индексированием

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

mov ax,[bx+si+2]

mov ах, [bx][si]+2

mov ax, [bx+2][si]

mov ax, [bx][si+2]

mov ax,2[bx][si] '

В регистр АХ помещается слово из ячейки памяти со смещением, равным сум­ме чисел, содержащихся в ВХ, SI, и числа 2. Из 16-битных регистров так можно складывать только ВХ + SI, ВХ + DI, ВР + SI и ВР + DI, а из 32-битных — все восемь регистров общего назначения. Как и для прямой адресации, вместо непос­редственного указания числа разрешено использовать имя переменной, заданной одной из директив определения данных. Таким образом можно считать, напри-число из двумерного массива: если задана таблица байт, 2 - смещение

ее начала от начала сегмента данных (на практике будет использоваться имя этой таблицы), ВХ = 20, a SI = 7, приведенные команды прочитают слово, состоящее из седьмого и восьмого байтов третьей строки. Если таблица состоит не из оди­ночных байтов, а из слов или двойных слов, удобнее использовать наиболее пол­ную форму - адресацию по базе с индексированием и масштабированием.