В способе прямой адресации памяти привлекательна простота, но во многих случаях программа вынуждена вычислять действительный адрес в памяти. Простейший пример - операции с вектором, одномерным массивом. В программе на языке Фортран такую структуру можно создать оператором
В других языках высокого уровня существуют аналогичные способы создания массивов. При выполнении программа получает доступ к разным элементам в соответствии со значением индекса,например, OPND(5). Написание программы на языке ассемблера требует от программиста вычисления местонахождения пятого элемента в поле данных OPND. Затем программа может использовать полученное значение для прямой адресации. Однако, в случае с выражением OPND(I), где I вычисляется входе выполнения программы, способа прямого указания правильного адреса для программы на языке ассемблера не существует. Адрес должен вычисляться в ходе выполнения программы. Набор команд 8088 допускает несколько способов определения исполнительного адреса (Effective Address - EA) операнда. Эти способы вычисления адреса называют способами адресации. Их количество предназначено для облегчения задачи определения исполнительных адресов. Благодаря правильному выбору способа адресации программист может минимизировать количество вычислений в программе. Формула для определения I-го элемента массива OPND такова:
где длина - это длина каждого элемента массива. В данном примере OPND - массив, состоящий из слов, поэтому каждый элемент в нем имеет длину 2 байта. Тогда формула выглядит так:
Для вычисления этого адреса требуется по крайней мере один регистр, содержащий адрес операнда. Программа может вычислить исполнительный адрес, оставив результат в одном из регистров. Тогда, вместо указния адреса в самой команде INC, можно просто указать, какой из регистров его содержит. Для хранения адресов операндов программа может использовать любой из четырех адресных регистров. Так, в нашем примере программа добавляет к адресу базы 2*I и помещает результат в регистр BX. Соответствующий элемент вектора в этом случае будет увеличиваться командой
Выражение [BX] сообщает ассемблеру, что регистр BX содержит адрес операнда,а не является операндом сам по себе. Скобки [ и ], заключающиекакое-либо значение, указывают ассемблеру, что это значение - адрес. Другая часть операндного выражения, WORD PTR, требуется ассемблеру для информации, что операнд является переменной типаWORD (слово). Далее мы обсудим оператор PTR более подробно.