Методы адресации - это методы вычисления адресов для данных, находящихся в различных компонентах компьютера (в ОЗУ, вне программы, в области программы, в регистрах микропроцессора, в портах и т. д.). Эта информация передается программистом процессору через специальный синтаксис компилятора. Одна и та же команда, использующая разные методы адресации, будет отличаться по синтаксису только аргументами. В МП 8086 24 метода адресации, но мы рассмотрим только 7 основных.
1. Регистровый
2. Прямой
3. Косвенно-регистровый
4. Непосредственный
5. По базе
6. Прямой с индексированием
7. По базе с индексированием.
Все методы адресации рассмотрим на примере самой простой команды MOV - переслать.
1. Регистровый. Использует команды для записи, хранения и чтения данных в регистрах МП.
mov AX, BX - переслать данные из регистра BX в AX.
AX - приемник
BX - источник.
2. Прямой. Использует команды для доступа к данным, расположенным в оперативной памяти вне программы. Адрес прямо записан к команде.
MOV AL, [1FA7H]
MOV AL, MASS
3. Косвенно-регистровый. Аналогичный предыдущему, но адрес ячейки указан не прямо в программе, а в каком-либо регистре МП. В качестве регистров можно использовать BX, SI, DI.
MOV AL, [BX] - команда означает переписать из памяти данные в аккумулятор, а адрес ячейки памяти читать в регистре BX.
4. Непосредственный. Использует команды для доступа к данным, расположенным в самой программе.
MOV AL, 7
MOV AL, ‘A’ - переслать ASCII код A - 065.
5. По базе. Использует команды для доступа к данным структур.
MOV AL, [BX+5] - команда означает, что если в BX записать адрес начала структуры или массива, то компилятор прибавит к этому адресу число 5 и сгенерирует адрес пятого элемента массива и передаст его процессору, записав в BX адрес этого элемента.
6. Прямой с индексированием.
MOV AL, MASS [SI].
Использует команды для упорядоченного просмотра всей структуры. Если в переменную MASS записать адрес структуры, а в индексы от 0 до последнего элемента, то изменяя их в цикле, получаем адрес каждого элемента.
7. По базе с индексированием. Используют команды для работы с двумерными массивами.
MOV AL, MASS [BX][SI]
Если в переменную MASS записать адрес массива, а в BX и SI соответственно номер строки и столбца, то зафиксировав либо строку, либо столбец, просматривается структура либо по строкам, либо по столбцам.