Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
81
Добавлен:
15.06.2014
Размер:
4.41 Mб
Скачать

Лабораторная работа № 2

Методы адресации реального режима

Содержание работы

  • цель работы

  • введение

  • методы адресации процессора Intel

  • указание методов адресации в Ассемблере Intel

  • порядок выполнения работы

  • содержание отчета

  • варианты заданий

  • заключение

Цель работы

Целью работы является изучение методов адресации реального режима, применяемых в процессорах Intelи способы их использования в языке Ассемблера.

Введение

Процессор после включения питания при условии получения тактовых импульсов занимается только одним: он выполняет команды. Если команда предполагает преобразование информации (данных), то входные и выходные данные называются операндами. Любая машинная команда, таким образом, содержит две части:

КОП (Код операции)

Адресная часть

Поле кода операции указывает, чтобудет выполняться в данной команде. Адресная часть команды определяет,гденаходятся операнды (входные и/или выходные) и как найти (вычислить) их адреса. Операнды могут находиться в процессоре, в памяти или в портах ввода-вывода. Способы указания (вычисления) адресов операндов называютметодами адресации.

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

Р

  • эффективный адрес (смещение в сегменте)

  • сегментный адрес (начало сегмента)

  • 20-Разрялный физический адрес памяти

исунок 1. Вычисление 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и т.д.

Соседние файлы в папке Лаба Лаб_1-5 Методички