Большая часть команд процессора работает с кодами данных (операнды). Одни команды требуют входных операндов (одного или двух), другие выдают выходные операнды (чаще всего один операнд). Все эти коды операндов должны где-то располагаться.
1. Они могут находиться во внутренних регистрах процессора (наиболее удобный и быстрый вариант).
2. Они могут располагаться в системной памяти (самый распространенный вариант).
3. Они могут находиться в устройствах ввода/вывода.
Определение место положения операндов производиться кодом команды. Существуют разные методы, с помощью которых код команды может определить, откуда брать входной операнд и куда помещать выходной операнд. Эти методы называются методами адресации. Количество методов адресации в разных процессорах может быть от 4 до 16. Эффективность выбранных методов адресации во многом определяет эффективность работы процессора в целом.
Выделяют следующие виды адресации:
1. Непосредственная;
Предполагает, что операнд (входной) находиться в памяти непосредственно за кодом команды. Операнд обычно представляет собой константу, которую надо куда-то добавить.
2. Прямая (абсолютная);
Предполагает, что операнд (входной или выходной) находиться в памяти по адресу код которого находиться внутри программы сразу же за кодом команды.
3. Регистровая;
Предполагает, что операнд находится во внутреннем регистре процессора.
4. Косвенно-регистровая (косвенная) адресация;
Предполагает, что во внутреннем регистре процессоре находиться не сам операнд, а сам его адрес в памяти.
Выделяют еще два метода адресации:
1) Автоинкрементная;
Очень близка к косвенной, но отличается от нее тем, что после выполнение команды содержимое используемого регистра увеличивается на единицу или на два.
2) Автодекрементная – означает, что содержимое выбранного регистра уменьшается на единицу или двойку перед выполнением команды;
Эти два вида адресации используются для организации стековой памяти.