DS:/ES:/SS:/CS: – префиксы замены сегмента
26 | ES: | использование сегмента ES | |||
2E | CS:
| использование сегмента CS | |||
36 | SS: | использование сегмента SS | |||
3E | DS: | использование сегмента DS |
Описание.
Префикс замены сегмента позволяет инструкции использовать операнд, расположенный не в сегменте, используемом по умолчанию, а в явно указанном сегменте.
В инструкциях обработки данных с явно заданными операндами (например, MOV, ADD, NEG
и т.п.) один из операндов (или единственный операнд) может находиться в памяти. Для доступа к нему по умолчанию используется сегментный регистр SS (если при вычислении адреса операнда используется содержимое регистра BP) или сегментный регистр DS (во всех остальных случаях). С помощью префикса замены сегмента можно обратиться к операнду с использованием любого из четырёх сегментных регистров. Например, инструкция MOV AX,[BP] загружает в регистр AX содержимое слова памяти по адресу SS:BP, однако инструкция MOV AX,ES:[BP]
загрузит содержимое слова по адресу ES:BP.
В инструкциях обработки строк операнды адресуются с помощью регистровых пар DS:SI и ES:DI. Вместо сегментного регистра DS может использоваться любой сегментный регистр, для чего необходимо задать соответствующий префикс замены сегмента. Сегментный регистр ES, используемый совместно с регистром DI, заменён быть не может.
Доступ к стековой памяти с использованием указателя стека SP всегда подразумевает использование сегментного регистра SS, который подменён быть не может.