Справочник по языку Ассемблера IBM PC


Цепочечные команды - часть 3



Цепочка-источник, адресуемая операндом адрес_источника, может находиться в текущем сегменте данных, определяемом регистром ds.


Цепочка-приемник, адресуемая операндом адрес_приемника, должна быть в дополнительном сегменте данных, адресуемом сегментным регистром es.


Важно отметить, что допускается замена (с помощью префикса замены сегмента) только регистра ds, регистр es подменять нельзя.


Вторые части адресов - смещения цепочек — также находятся в строго определенных местах.


Для цепочки-источника это регистр esi/si

(Source Index register — индексный регистр источника).


Для цепочки-получателя это регистр edi/di

(Destination Index register - индексный регистр приемника).


Таким образом, полные физические адреса для операндов цепочечных команд следующие:

  • адрес_источника — пара ds:esi/si;

  • адрес_приемника — пара es:edi/di.

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


В каждом из этих наборов присутствует одна команда с явным указанием операндов и три команды, не имеющие операндов.


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


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


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

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




Начало  Назад  Вперед