
Лабораторная работа № 2
Методы адресации реального режима
Содержание работы
цель работы
введение
методы адресации процессора Intel
указание методов адресации в Ассемблере Intel
порядок выполнения работы
содержание отчета
варианты заданий
заключение
Цель работы
Целью работы является изучение методов адресации реального режима, применяемых в процессорах Intelи способы их использования в языке Ассемблера.
Введение
Процессор после включения питания при условии получения тактовых импульсов занимается только одним: он выполняет команды. Если команда предполагает преобразование информации (данных), то входные и выходные данные называются операндами. Любая машинная команда, таким образом, содержит две части:
-
КОП (Код операции)
Адресная часть
Поле кода операции указывает, чтобудет выполняться в данной команде. Адресная часть команды определяет,гденаходятся операнды (входные и/или выходные) и как найти (вычислить) их адреса. Операнды могут находиться в процессоре, в памяти или в портах ввода-вывода. Способы указания (вычисления) адресов операндов называютметодами адресации.
Процессоры Intel, начиная отi8086и до современных в реальном режиме работы поддерживают т.н. сегментную организацию памяти. Суть ее состоит в формировании 20-разрядного физического адреса (т.е. для памяти до 1Mb) в 16-разрядном процессоре, каким былi8086. Все рассматриваемые ниже способы адресации выполняются процессором с использованием 16-разрядной арифметики (АЛУ и регистров). Полученный в результате 16-разрядныйэффективный адресне является физическим адресом памяти, а попадает в блок преобразования адреса, где используютсясегментные регистры. ЭтоCS,DS,SS,ES, задающие, соответственно, адреса начала сегментовкода,данных,стекаидополнительного сегмента данных, каждый из которых является областью памяти размером 64 Кбайт. Эффективный адрес складывается с содержимым сегментного регистра, сдвинутым на 4 двоичных разряда, в результате получается 20-разрядный физический адрес.
Р
эффективный адрес
(смещение в сегменте)
сегментный адрес
(начало сегмента)
исунок 1. Вычисление 20-разрядного
физического адреса памяти20-Разрялный физический адрес памяти
Методы адресации процессора Intel
Все методы адресации в различных процессорах сводятся к нескольким основным. Во-первых, операнд может быть указан в команде, и это называют непосредственной адресацией.
Рисунок 2. Непосредственная адресация.
Если в команде указывают адрес операнда, находящегося в памяти, то имеет место прямая адресация. Таким же способом для процессораIntelможет быть указан операнд, находящийся в порте ввода/вывода, правда, порт может быть указан только от 0-го до 255-го.
Рисунок 3. Прямая адресация.
Особым случаем прямой адресации является регистровая адресация, когда операнд находится в одном из регистров процессора, а в команде указан этот регистр.
Рисунок 4. Регистровая адресация.
Если же в команде указан адрес адреса операнда (в адресном пространстве памяти или ввода/вывода), то это один из вариантов косвенной адресации. Обычно хранилищем адреса операнда является опять же один из процессорных регистров, который также указывается в команде, как и при регистровой адресации.
Рисунок 5. Косвенная адресация.
Косвенная адресация допускает следующие варианты (у Intelэто многообразие возможно лишь для адресации памяти):
собственно косвенная адресацияв чистом виде, называемаяIntelлибоиндексной, либобазовой, в зависимости от того, какой регистр используется в качестве указателя адреса;
косвенная адресация со смещением, когда к содержимому регистра прибавляется указанное в команде смещение (уIntel, соответственно,индексная со смещениемлибобазовая со смещением);
косвенная адресация со смещением из регистра, когда адрес операнда определяется как сумма содержимого двух регистров смещение (уIntelэто называетсябазовая индексная адресация);
косвенная адресация со смещением из регистра и из команды, в этом случае складывается содержимое двух регистров и к полученной сумме прибавляется смещение, опять же указанное в команде,Intelназывает этот метод адресации какбазовая индексная адресация со смещением;
косвенная адресация с автоинкрементом/автодекрементом указателя, т.е. модификацией содержимого регистра до или после использования его в качестве адреса операнда,Intelназывает этоцепочечными(строковыми) командами. Строковые команды будут рассмотрены в отдельной лабораторной работе. Особым случаем этого способа адресации являютсяоперации со стеком, но здесьIntelне рискнула придумать особое название для адресации стека.
Адресация во всех методах дает адрес в сегменте данных (регистр DS), за исключением адресации через регистрBP, который указывает на смещение в сегменте стека (SS). Кроме того, в строковых операциях индексный регистр источникаSIуказывает на смещение в сегментеDS, а индексный регистр приемникаDIуказывает на смещение в сегментеES, таким образом, строковые операнды (цепочки) адресуются парамиDS:SIиES:DI.
В любой команде, адресующей операнды в памяти, приведенную выше «привязку» к сегментам, принятую по умолчанию, можно изменить, применив перед командой префикс замены сегмента (префикс сегментного регистра).
Следует иметь в виду также тот факт, что в командах процессора Intelво многих случаях используется неявное указание операндов (скрытое в коде операции), как в памяти, так и в регистрах. Например, многие арифметические команды используют неявно аккумулятор, команды цикла – «регистр-счетчик»CX,команда16-битного умножения помещает результат в пару регистровDX,AXи т.д.