В способе прямой адресации  памяти привлекательна  простота, но во многих случаях программа вынуждена вычислять действительный адрес в  памяти. Простейший  пример  -операции  с  вектором, одномерным  массивом. В  программе  на языке  Фортран  такую  структуру можно  создать оператором

  DIMENTION OPND(20)

В других языках  высокого  уровня  существуют  аналогичные способы  создания массивов.  При  выполнении программа  получает  доступ к  разным элементам в  соответствии со  значением индекса,  например,  OPND(5). Написание  программы  на  языке  ассемблера  требует от  программиста  вычисления местонахождения  пятого  элемента в поле  данных OPND. Затем программа может использовать полученное значение  для прямой адресации. Однако, в  случае с выражением OPND(I), где I  вычисляется в  ходе выполнения программы, способа прямого указания  правильного адреса для программы на языке ассемблера не существует.  Адрес должен вычисляться в ходе выполнения программы.

Набор команд 8088 допускает  несколько способов определения исполнительного адреса (Effective Address - EA) операнда. Эти способы  вычисления  адреса  называют способами  адресации.  Их количество  предназначено  для  облегчения  задачи определения  исполнительных  адресов. Благодаря правильному выбору способа адресации программист  может минимизировать количество вычислений в программе.  Формула для определения I-го элемента массива OPND такова:

  EA = адрес базы OPND + (I * длина),

где длина - это длина  каждого элемента массива.  В данном примере  OPND - массив,  состоящий из  слов, поэтому  каждый элемент  в нем  имеет длину 2 байта. Тогда формула выглядит так:

  EA = адрес базы + (I * 2)

Для вычисления этого адреса требуется по крайней мере один  регистр, содержащий адрес операнда. Программа может вычислить исполнительный адрес, оставив результат в  одном из  регистров.  Тогда,  вместо указания адреса в самой команде INC,  можно просто  указать,  какой из регистров его содержит.

Для хранения адресов операндов программа может использовать любой из  четырех адресных регистров. Так, в нашем примере программа  добавляет к адресу базы 2*I и помещает результат в регистр BX.  Соответствующий элемент вектора в этом случае будет увеличиваться командой

  INC WORD PTR [BX]

Выражение [BX] сообщает ассемблеру, что регистр BX содержит адрес операнда,  а не является операндом сам по себе. Скобки  [ и ],  заключающие  какое-либо  значение,  указывают ассемблеру,  что это  значение - адрес.  Другая часть  операндного выражения,  WORD PTR,  требуется ассемблеру для информации,  что  операнд является  переменной типа  WORD (слово). Далее мы обсудим оператор PTR более  подробно.