Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Особенность формирования физического адреса операндов адрес_источника и адрес_приемника.






Цепочка-источник, адресуемая операндом адрес_источника, может находиться в текущем сегменте данных, определяемом регистром ds. Цепочка-приемник, адресуемая операндом адрес_приемника, должна быть в дополнительном сегменте данных, адресуемом сегментным регистром еs. Допускается замена (с помощью префикса замены сегмента) только регистра ds, регистр es подменять нельзя.

Вторые части адресов – смещения цепочек должны находится:

- для цепочки-источника это регистр esi/si (Source Index register — индексный регистр источника);

- для цепочки-получателя это регистр edi/di (Destination Index register – индексный регистр приемника). Таким образом, полные физические адреса для операндов цепочечных команд следующие:

адрес__источника – пара ds: esi/si;

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

 

Команды lds и les позволяют получить полный указатель (сегмент: смещение) на ячейку памяти. Применение их очень удобно в силу жесткой регламентации использования регистров для адресации операндов источника и приемника в цепочечных командах.

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

 

Есть две возможности задания направление обработки цепочки:

- от начала цепочки к её концу, то сеть в направлении возрастания адресов;

- от конца цепочки к началу, то есть в направлении убывания адресов.

Направление определяется значением флага направления df (Direction Flag) в регистре eflags/flags:

- если df=0, то значения индексных регистров esi/si и edi/di будут автоматически увеличиваться (операция инкремента) цепочечными командами, то есть обработка будет осуществляться в направлении возрастания адресов;

- если df=1, то значения индексных регистров esi/si и edi/di будут автоматически уменьшаться (операция декремента) цепочечными командами, то есть обработка будет идти в направлении убывания адресов.

Состоянием флага df можно управлять с помощью двух команд, не имеющих операндов:

сld (Clear Direction Flag) – очистить флаг направления. Команда сбрасывает флаг направления df в 0.

std (Set Direction Flag) – установить флаг направления. Команда устанавливает флаг направления df в 1.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.