Каждый из сегментных регистров имеет свое, отмеченное выше назначение. В некоторых случаях, однако, более удобна связь с данными вне сегмента данных, например, с небольшой областью данных в программе. В большинстве случаев программа работает с данными в той области, на которую указывает регистр DS, но иногда программе требуется ссылка на локальную переменную, находящуюся в кодовом сегменте программы. Чтобы осуществитьэту ссылку, приходится изменять обычное использование сегментов. Фиг.3.8 показывает такую органзацию программы.
| Сегмент | Программа и локальные данные |
|---|---|
| CS | CS:LOCAL_VALUE |
| DS | DS:Основная область даных |
Фиг. 3.8 Переназначение CS на локальные данные.
Вместо изменения значения регистра DS, чтобы он указывал на программный сегмент, команда изменяет ссылку на данные, показывая, что переменная расположена в сегменте кодов (Code Segment).
Это делается с помощью префикса "CS:". В машинном языке команда переопределения сегмента выглядит как однобайтовый префикс перед обычной командой машинного языка. 8088 понимает этот префикс переназначения сегмента и изменяет обычный способ вычисления адреса. Вместо регистра DS процессор использует для вычисления физического адреса данных регистр CS. Одного префикса в команде всегда достаточно, таккак 8088 может адресоваться в ней не более чем к одной ячейке памяти. Для нормального обращения к данным команда может использовать любой из четырех сегментных регистров. Регистр DS используется по умолчанию, то есть когда в команде не указан другой сегментный регистр, то используется DS. Помните, что при использовании в адресных вычислениях регистра BP сегментом по умолчанию становится стековый сегмент. Команда может определить и любой из трех других сегментных регистров, указав его в адресном выражении. Некоторые команды, правда,не могут пользоваться переназначением сегментов. Это - команды обработки строк. Строковая команда определяет использование регистров неявным образом, и оно не может быть изменено. В главе 4 мы обсудим строковые команды и их специфическое пользование сегментами.