Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
12-12-2013_11-21-32 / пособие_m.doc
Скачиваний:
76
Добавлен:
10.05.2015
Размер:
484.35 Кб
Скачать
    1. 2.3. Режимы адресации

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

При использовании неявной адресации операнд адресуется неявно, т.е. в команде отсутствуют в явном виде поля для адресации этого операнда.

При использовании регистровой адресации операнд находится в одном из внутренних регистров микропроцессора.

В режиме непосредственной адресации операнд находится в самой команде, т.е. хранится вместе с командой в сегменте кода.

Остальные режимы адресации осуществляют обращение к памяти. При использовании прямой адресации в команде содержится адрес, по которому процессор выполняет обращение к памяти. Другие режимы используют косвенную адресацию, при этом адрес, по которому процессор может обратиться к памяти, находится либо в регистре общего назначения, либо же находится в ячейке памяти. Если адрес находится в регистре, то такая адресация называется косвенной регистровой.

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

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

Начиная с микропроцессора 80386 появилась возможность реализовать базовую индексную адресацию, при которой содержимое индексного регистра может быть умножено на коэффициент, равный 1, 2, 4 или 8.

Для указания того, какой режим адресации используется, служит специальный байт, который называется байтом MOD R/M, и в зависимости от значений отдельных полей этого байта и будет использован тот или иной режим адресации. Если же должен быть использован режим адресации, при котором содержимое индексного регистра умножается на какой-либо коэффициент, то в этом случае после байта MOD R/M в команде микропроцессора следует байт, который называется SIB байт.

    1. 2.4. Управление стеками

Одним из сегментов, предназначенных для временного хранения данных при работе микропроцессора, является стек, который располагается в стековом сегменте. Стек – это одномерная структура данных, добавление элемента в которую (или исключение элемента из которой) производится с одного конца, который называется вершиной стека. Стек работает по принципу LIFO (last-in-first-out - последний вошел - первый вышел).

На вершину стека указывает регистр ESP и в вершине стека хранится последний записанный байт. Микропроцессор не может записывать в стек единичный байт, а могут записываться только слова или двойные слова. Для того, чтобы записать в стек какую-либо информацию, микропроцессор декрементирует регистр ESP на два или четыре, в зависимости от длины включаемой в стек информации, и после этого по адресу, указываемому регистром ESP, осуществляет запись.

При считывании информации из стека микропроцессор использует значение регистра ESP для указания, откуда брать из стека операнд, а после считывания информации из стека микропроцессор инкрементирует регистр ESP на два или четыре, в зависимости от длины считываемой информации из стека.

Соседние файлы в папке 12-12-2013_11-21-32