<<
>>

Двухадресные команды

У двухадресных команд в системе команд процессора i8О86 один из операндов обязательно должен находиться в регистре процессора, а второй может находить- ся как в регистре процессора, так и в поле оперативной памяти.
Это ограничение отражается в структуре команды (см. рис. 4.12, г) следующим образом. Вместо дополнительной части кода операции KOПд команда содержит параметр rеg, который, как в регистровой модификации одноадресных команд, определяет код регистра процессора, а второй адрес задается так же, как в их общей модифика- ции — параметрами mod и r/m. Поскольку у двухадресных команд операнд может быть как однобайтовым, так и двухбайтовым, параметр rеg кодируется в соот- ветствии с табл. 4.9, то есть так же, как параметр r/m при mod = 112.

Представленный единственной частью код операции КОП занимает всего шесть битов. Зато в двухадресной модификации появился параметр d, влияющий на определение адреса записи результата. Если d = 0, то результат записывается по адресу, определяемому с помощью признаков mod и r/m, а при d = 1 он записы- вается в регистр процессора с кодом rеg.

Смысл и кодировка параметров W, mod и r/m по сравнению с одноадресными командами не изменились.

В качестве примера выясним действие машинной команды 00E816. Вначале за- пишем команду в двоичном виде, а затем в соответствии с изображенной на рис. 4.12, в структурой двухадресной команды выделим составляющие ее эле- менты: 00E816 = 00000010111010002 -» 000000 I 0 I 0 I 111 1011 0002. Получаем, что КОП = 0000002, d = 0, W = 0, mod = 112, rеg = 1012, r/m = 0002. По табл. 4.4 нахо- дим, что кодом операции КОП = 0000002 обладает команда сложения, имеющая мнемокод add.

По табл. 4.9 выясняем, что при W = 0 параметр rеg = 1012 опреде- ляет восьмибитный регистр сh, а параметр r/m = 0002 — регистр аl. Таким обра- зом, команда 00E816 задает операцию сложения для восьмибитовых слагаемых, коды которых находятся в регистрах сh и аl. Поскольку d = 0, результат на- правляется по адресу, заданному параметрами mod и r/m, то есть в регистр аl. Условно действие этой команды можно записать в виде а 1 := аl + сh.

В связи с отсутствием в ассемблерном формате параметра d, определяющего адрес записи результата, действует правило, в соответствии с которым первым в команде указывается операнд; принимающий результат: add сh, аl. Обратите внимание на то, что команда add сh, аl выполняет действие сh := сh + аl, которое задается машиной командой 02E816, отличающейся тем, что в ней пара- метр d = 1. Сравнение этих вариантов команды проиллюстрировано в табл. 4.17 в предположении, что регистр аl до выполнения команды содержит код 0516, а регистр сh — код 0716.

Таблица 4.17. Сравнение форматов команд

Попутно заметим, что команды 01E816 или add ах, bр и 03E816 или add bр, ах оперируют с двухбайтовыми слагаемыми из регистров ах и bр.

4.2.5.

<< | >>
Источник: Степанов А. Н.. Архитектура вычислительных систем и компьютерных сетей. 2007

Еще по теме Двухадресные команды:

  1. Определение команды.
  2. § 4.5. Деятельность команд в организации
  3. Признаки команды.
  4. Пример настройки и реабилитации в футбольной команде
  5. Работа с другими командами
  6. Четыре шага по созданию эффективной команды
  7. ШЕСТЬ СТУПЕНЕЙ НА ПУТИ СОЗДАНИЯ КОМАНДЫ.
  8. Кто становится лидером команды
  9. Создание деловой команды «Вероятно, я не лучший советчик в этом вопросе».
  10. Эд САЛЛИВАН. ВРЕМЯ — ДЕНЬГИ Создание команды разработчиков, программного обеспечения, 2001
  11. Проведение интервью
  12. Алистэр Коуберн. Каждому проекту своя методология, 1999