Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОГРАММНАЯ ИНЖЕНЕРИЯ.docx
Скачиваний:
115
Добавлен:
09.09.2018
Размер:
2.83 Mб
Скачать

4.3.1. Непосредственная адресация

Операнд указывается непосредственно в поле команды, например:

mov ax,312 ; здесь 312 задается непосредственно

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

Непосредственная адресация сокращает время выполнения команды, так как не требуется обращение к памяти за операндом.

4.3.2. Регистровая адресация

Операнд находится в одном из регистров. Например, оба операнда в команде

mov ds,bx

задаются с помощью регистрового способа адресации.

Регистровая адресация(РА) напоминает прямую адресацию. Различие состоит в том, что адресное поле инструкции указывает не на ячейку памяти, а на регистр процессора. 

Двумя основными преимуществами регистровом адресации являются: короткое адресное поле в команде и исключение обращений к памяти

4.3.3. Косвенная адресация

Адрес операнда находится в одном из регистров — SI, DI, BX, BP. Например, команда

mov ax,[si]

помещает в регистр AX слово из ячейки памяти, смещение которой указано в регистре SI. Второй операнд задан с помощью косвенной адресации.

с помощью ограниченного адресного поля команды указывается адрес ячейки, содержащей полноразрядный исполнительный адрес операнда.

При косвенной адресации содержимое адресного ноля команды остается неизменным, в то время как косвенный адрес в процессе выполнения программы можно изменять. Это позволяет проводить вычисления, когда адреса операндов заранее неизвестны и появляются лишь в процессе решения задачи. 

Следует отметить, что регистры SI, DI, BX, BP использовались до 80386 процессора, но в последующих поколениях процессоров для задания адреса операнда можно еще использовать регистры EAX, EBX, ECX, EDX, ESI, EDI, EBP и ESP.

4.3.4. Прямая адресация (адресация по смещению)

Абсолютный адрес операнда можно задавать в виде СЕГМЕНТ:СМЕЩЕНИЕ, гдеСЕГМЕНТ— адрес сегмента на который указываеткакой-либосегментный регистр (CS, DS, SS или ES), аСМЕЩЕНИЕ — адрес операнда относительно сегментного регистра (относительный адрес).

Примеры:

mov ax,ss:0037h mov bx,es:var

http://www.sklyaroff.ru

75

4.3.5. Базовая адресация

Адрес операнда формируется сложением содержимого базового регистра (BP или BX) и смещения. Если смещение не задано, то предполагается нулевое значение.

Если используется BP, то адрес определенного операнда отсчитывается относительно сегмента, на который указывает регистр SS. Если используется BX, то адрес отсчитывается относительно сегмента, на который указывает регистр DS.

Например, команда:

mov ax,[bx+2]

помещает в регистр AX слово, которое находится в сегменте, указанном в DS, со смещением на два больше, чем число из BX.

Базовая адресация имеет множество альтернативных форм. Так, эквивалентными формами являются:

смещение[BP] [смещение][BP] [BP+смещение] [BP].смещение [BP]+смещение

В каждом случае адрес операнда равен сумме значений указанного смещения и содержимого заданного регистра.