Процессор после включения питания при условии получения тактовых импульсов занимается только одним: он выполняет команды. Если команда предполагает преобразование информации (данных), то входные и выходные данные называются операндами. Любая машинная команда, таким образом, содержит две части:
КОП (Код операции)
Адресная часть
Поле кода операции указывает, что будет выполняться в данной команде. Адресная часть команды определяет, где находятся операнды (входные и/или выходные) и как найти (вычислить) их адреса. Операнды могут находиться в процессоре, в памяти или в портах ввода-вывода. Способы указания (вычисления) адресов операндов называют методами адресации.
Процессоры Intel, начиная от i8086 и до современных в реальном режиме работы поддерживают т.н. сегментную организацию памяти. Суть ее состоит в формировании 20-разрядного физического адреса (т.е. для памяти до 1 Mb) в 16-разрядном процессоре, каким был i8086. Все рассматриваемые ниже способы адресации выполняются процессором с использованием 16-разрядной арифметики (АЛУ и регистров). Полученный в результате 16-разрядный эффективный адрес не является физическим адресом памяти, а попадает в блок преобразования адреса, где используются сегментные регистры. Это CS, DS, SS, ES, задающие, соответственно, адреса начала сегментов кода, данных, стека и дополнительного сегмента данных, каждый из которых является областью памяти размером 64 Кбайт. Эффективный адрес складывается с содержимым сегментного регистра, сдвинутым на 4 двоичных разряда, в результате получается 20-разрядный физический адрес.
- эффективный адрес (смещение в сегменте)
- сегментный адрес (начало сегмента)
- 20-разрялный физический адрес памяти
Рисунок 1. Вычисление 20-разрядного физического адреса памяти