|
Какже адреснаяинформация
передаетсямикропроцессору в машинном
языке?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.
|