Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конюховавсит.doc
Скачиваний:
106
Добавлен:
28.03.2015
Размер:
1.56 Mб
Скачать

5.2.2 Способы адресации команд

В зависимости от того, в каком сегменте кода находится требуемая команда и явно или нет указывается её адрес, выделяют следующие режимы адресации команд:

1) Внутрисегментный прямой – эффективный адрес перехода вычисляется как сумма текущего содержимого указателя команд IP и 8- или 16- битного относительного смещения. Данный режим допустим в условных и безусловных переходах. Например,

cmp ah, al

jne met

met:

Если содержимое регистров ah и al не равны (команда jne), то осуществляется переход к команде с меткой met.

2) Межсегментный прямой – в команде указывается пара: сегмент и смещение. Сегмент загружается в сегментный регистр CS, а смещение - в регистр IP. Данный режим допусти только в командах безусловного перехода. Например, call far ptr quickSort (вызов процедуры quickSort, расположенной в другом сегменте кода).

Таким образом, при прямой адресации в адресном поле команды содержится адрес перехода – адрес, по которому размещается следующая выполняемая команда.

3) Внутрисегментный косвенный – смещение адреса перехода есть содержимое регистра или ячейки памяти, указанные в любом режиме адресации данных, кроме непосредственного. Содержимое указателя команд IP заменяется соответствующим содержимым регистра или ячейки памяти. Данный способ допустим только в командах безусловного перехода. Например, jmp [bx] (перейти на команду, адрес которой находится в ячейке по адресу, указанному в регистре bx).

4) Межсегментный косвенный – содержимое регистров CS и IP заменяется содержимым двух смежных слов памяти, адрес которых указан в любом режиме адресации данных, кроме непосредственного и регистрового. Младшее слово загружается в регистр IP, старшее – в регистр CS. Данный режим допустим только в командах безусловного перехода. Например, call far ptr [bp+4] (вызов процедуры, расположенной по адресу, указанном в регистре BP плюс ещё 4 байта).

Рассмотренные способы адресации команд используются практически во всех системах команд, расширяя или сокращая список команд конкретного микропроцессора.

Как уже отмечалось ранее, одной из важных характеристик любого процессора является разрядность его внутренних регистров, а также внешних шин адресов и данных. Например, процессор Intel 8086 имеет 16-разрядную архитектуру и такой же разрядности шину данных. Таким образом, максимальное число, с которым может работать процессор, составляет . Однако адресная шина процессора Intel 8086 содержит 20 линий, что соответствует адресному пространству Мбайт. Для получения 20-разрядного физического адреса ячейки памяти требуется сложить начальный адрес сегмента памяти, в котором располагается эта ячейка, и смещение этой ячейки относительно начала сегмента (Рисунок 5.5).

Рисунок 5.5 – Формирование физического адреса ячейки памяти

Сегментный адрес без 4 младших битов (т.е., делённый на 16), хранится в одном из сегментных регистров (SS, DS, CS, ES).

При вычислении физического адреса процессор умножает содержимое сегментного регистра на 16 и добавляет к полученному 20-разрядному адресу смещение.

Современные 32-разрядные процессоры имеют 32-разрядную адресную шину, что соответствует адресному пространству Гбайта. Однако описанный выше способ формирования физического адреса не позволяет выйти за пределы 1 Мбайта. Для преодоления этого ограничения в 32-разрядных процессорах используются два режима работы: реальный и защищённый. В реальном режиме процессор функционирует фактически также, как Intel 8086 с повышенным быстродействием и может обращаться только к 1 Мбайту адресного пространства. Оставшаяся память, даже если она установлена на компьютере, использоваться не может. В защищённом режиме также используются сегменты и смещения, но физические начальные адреса сегментов извлекаются из таблиц сегментных дескрипторов, индексируемых с помощью тех же сегментных регистров. Каждый сегментный дескриптор занимает 8 байт, из которых 4 байта (32 бита) отводятся под сегментный адрес. Такой механизм позволяет обеспечить полное использование 32-разрядного адресного пространства. В 64-разрядных процессорах также применяется сегментная организация памяти и может использоваться сегментно-страничная /1/ организация памяти; под физический адрес отводится 40, 44, 48, 64 разряда. Таким образом, объём адресного пространства в 64-разрядных микропроцессорах может составлять от 1Тбайта (1 терабайт - байт) до нескольких Эбайтов (1 эксабайт - байт).

В предыдущих главах упоминалось о том, что процессор, с одной стороны, координирует функционирование отдельных устройств вычислительной машины, с другой,- сам выполняет вычисления в соответствии с программой пользователя (принцип программного управления). Далее рассмотрим, каким образом осуществляется выполнение команд процессором и его взаимодействие с другими устройствами.