Префиксы.

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

1) Префикс замены сегмента. В явной форме указывает, какой сегментный регистр используется в данной команде для адресации стека или данных. Префикс отме­няет выбор сегментного регистра по умолчанию. Префиксы замены сегмента име­ют следующие значения: 2eh — замена сегмента cs, 36h — замена сегмента ss, 3eh — замена сегмента ds, 26h — замена сегмента es, 64h — замена сегмента fs, 65h — замена сегмента gs.

2) Префикс разрядности адреса уточняет разрядность адреса (32 или 16-разряд­ный). Каждой команде, в которой используется адресный операнд, ставится в соответствие разрядность адреса этого операнда. Этот адрес может иметь раз­рядность 16 или 32 бит. Если разрядность адреса для данной команды 16 бит, это означает, что команда содержит 16-разрядное смещение (см. рис. 8.1) и оно соответствует 16-разрядному смещению адресного операнда относительно начала некоторого сегмента. Это смещение называется эффек­тивным адресом. Если разрядность адреса 32 бит, это означает, что команда содержит 32-разрядное смещение (см. рис. 8.1), оно соответствует 32-разряд­ному смещению адресного операнда относительно начала сегмента и по его зна­чению формируется 32-битное смещение в сегменте. С помощью префикса разрядности адреса можно изменить действующее по умолчанию значение раз­рядности адреса. Это изменение будет касаться только той команды, которой предшествует префикс.

3) Префикс разрядности операнда аналогичен префиксу разрядности адреса, но указывает на разрядность операндов (32 или 16-разрядные), с которыми рабо­тает команда.

4) Префикс повторения используется с цепочечными командами (командами обра­ботки строк). Этот префикс ««зацикливает» команду для обработки всех элемен­тов цепочки. Система команд поддерживает два типа префиксов: безусловные (rep — 0f3h), заставляющие повторяться цепочечную команду некоторое количе­ство раз, и условные (repe/repz - 0f3h, repne/repnz - 0f2h), которые при зацикли­вании проверяют некоторые флаги, — и в результате проверки возможен досроч­ный выход из цикла.