На главную Назад
Добро пожаловать, уважаемый посетитель!

Какже адреснаяинформация передаетсямикропроцессору в машинном

языке?8088используетпочтидлявсехопераций адресации байт

MOD-R/M(байтрежимаадресацииирегистра/модификатора - прим.

перев.).Фиг.3.4показываетформатэтогобайтакоманды.Байт

MOD-R/M следуетза байтом кода операциии определяет один операнд

памяти команды 8088. Этот байт может вместо ячейки памяти указывать

и регистр.Такоеединствоструктурыпозволяетреализоватьвсе

возможности адресации операндов.

ЪДДДДДДДВДДДДДДДДДДДВДДДДДДДДДДДї

ііі і

АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

РежимЗаданнаяРегистр-

командамодификатор

 

РежимСмещение

-------------------------------------------------

00DISP=0, нет байтов смещения

01-128<DISP<127, однобайтовое смещение

10-32768<DISP<32767, двухбайтовое смещение

11В поле r/m - регистр, а не адрес

 

Фиг. 3.4 Байт режима адресации и регистра-модификатора

 

Первые двабита байта MOD-R/M определяютвыбранный способ ад-

ресации.Этидвабитаопределяютчислобайт смещения, которые

следуют забайтом MOD-R/M - ниодного, один или два.Последние 3

бита байта MOD-R/M определяют видадреса - одну из восьми комбина-

ций базисных и индексных регистров. Это поле называется полем R/M -

полем регистра/модификатора. Это те самые3 бита из колноки R/M на

Фиг.3.3, где показаны возможныекомбинации при адресации. Значение

оставшихся 3-хбит в середине байтаMOD-R/M зависят от конкретной

команды.Длякомандысдвумяоперандами,вродеADD, это поле

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

операндом,как INC,эти трибита обычносоставляют часть самого

кода операции. 8088не знает, что имеет делос командой INC, пока

не расшифрует средние три бита байта MOD-R/M.

Этот же байт используется ещев паре специальных случаев. Если

в команде определенрегистр, а неадрес памяти, тов поле режима

помещается код11B, чтобы сообщитьмикропроцессору, что полеR/M

содержиткод регистра,а неадрес памяти.Наконец, вывозможно

заметили, что в механизме работыс байтом MOD-R/M не предусмотрена

прямаяадресация. 8088рассматривает какпрямую адресацию случай

типа[BP +СМЕЩЕНИЕ] при нулевом смещении.В этомслучае поле

смещения имеет длину два байта,и в вычислении адреса не участвует

ни один регистр. Из-за этого особого случая доступ к ячейке памяти,

накоторуюуказываетрегистрBP,вмашинномкодетребуется

однобайтовое поле смещения с нулевым значением. Использование в той

жеситуации регистровBX, SIи DIне требуетбайта смещения. В

следующем пункте будет показаноеще одно различие между адресацией

через регистры BP и BX.


 

Mail.ru