Регистры


Регистр CS

Регистр CS указывает на начало блока памяти объемом 64К, или сегмент кода, в котором находится следующая выполняемая инструкция. Следующая инструкция, которую нужно выполнить, находится по смещению, определяемому в сегменте кода регистром IP, то есть на нее указывает адрес (в форме «сегмент:смещение») CS:IP. Процессор 8086 никогда не может извлечь инструкцию из сегмента, отличного от того, который определяется регистром CS.

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

Никакие другие режимы адресации или указатели памяти, отличные от IP, не могут нормально работать относительно регистра CS.

Регистр DS

Регистр DS указывает на начало сегмента данных, которые представляет собой блок памяти объемом 64К, в котором находится большинство размещенных в памяти операндов. Обычно для ссылки на адреса памяти используются смещения, предполагающие использование регистров BX, SI или DI. В основном сегмент данных представляет собой то, о чем говорит его название: как правило это сегмент, в котором находится текущий набор данных. Адресация памяти обсуждается далее, в Главе 5 «Основные элементы программы на языке Ассемблера».

Регистр ES

Регистр ES указывает на начало блока памяти объемом 64К, который называется дополнительным сегментом. Как и подразумевает его название, дополнительный сегмент не служит для какойто конкретной цели, но доступен тогда, когда в нем возникает необходимость. Иногда дополнительный сегмент используется для выделения дополнительного блока памяти объемом 64К для данных. Однако доступ к памяти в дополнительном сегменте менее эффективен, чем доступ к памяти в сегменте данных (см. Главу 10 «Развитое программирование на Турбо Ассемблере»).

Особенно полезен дополнительный сегмент, когда используются строковые инструкции. Все строковые инструкции, которые выполняют запись в память, используют в качестве адреса памяти, в которую нужно выполнить запись, пару регистров ES:DI. Это означает, что регистр ES особенно полезен при использовании его в качестве целевого сегмента при копировании блоков, сравнении строк, просмотре памяти и очистке блоков памяти. Мы рассмотрим строковые инструкции и использование в связи с ними регистра ES в Главе 5 «Более подробно о программировании на Турбо Ассемблере».

Загрузка...