ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
Часть 12 429 4STD5 - Установка флага направления P ЪДДДДДДДДДВДДДДДДДДВДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДД ДДї іКод іКоманда іЧисло і Описание і іоперации і ітактовыхі і і і іциклов і і ГДДДДДДДДДЕДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ іFD іSTD і 2 іУстановка флага направления,і і і і ічто соответствует декрементуі і і і і(E)SI или (E)DI і АДДДДДДДДДБДДДДДДДДБДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ M Работа команды DF <- 1; Описание Команда STD устанавливает флаг направления DF, в результате чего все последующие строковые операции будут выполнять декремент индексных регистров, (E)SI или (E)DI, с которыми они работают. Изменяемые флаги Устанавливается флаг DF. Исключения защищенного режима Отсутствуют Исключения режима реальных адресов Отсутствуют Исключения виртуального режима 8086 Отсутствуют 430 4STI5 - Установка флага прерывания P ЪДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД ДДї іКод іКоманда Число Описание і іоперации і тактовых і і і циклов і ГДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ іF13 іSTI 5 Установка флага прерывания: і і і прерывания разрешены, начинаяі і і с конца следующей команды і АДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ M Работа команды IF <- 1; Описание Команда STI устанавливает флаг IF. После выпол- нения следующей команды процессор может реагировать на внешние прерывания, если эта следующая команда оставляет флаг IF в состоянии, разрешающем прерыва- ния. Если внешние прерывания запрещены, и вы после команды RET использовали команду RET (например, в конце подпрограммы), то команда RET будет выполнена до того, как начнут распознаваться внешние прерыва- ния. Также, если внешние прерывания запрещены, а вы использовали команду STI и за ней команду CLI, то внешние прерывания не будут распознаваться, посколь- ку команда CLI очищает флаг IF во время своего вы- полнения. Изменяемые флаги Устанавливается флаг IF. Исключения защищенного режима #GP, если текущий уровень привилегированности больше (имеет меньшую привилегированность), чем уро- 431 вень привилегированности ввода/вывода (IOPL). Исключения режима реальных адресов Отсутствуют Исключения виртуального режима 8086 Отсутствуют 4STOS/STOSB/STOSW/STOSD5 - Сохранение строковых данных P ЪДДДДДДДДДВДДДДДДДДДДДВДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДД ДДДДДДї іКод іКоманда іЧисло і Описание і іоперации і ітактовых і і і і іциклов і і ГДДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДД ДДДґ іAA іSTOS m8 і 5 іСохранение AL в байте і і і і іES:[(E)DI], обновление (E)DI і іAB іSTOS m16 і 5 іСохранение AX в слове і і і і іES:[(E)DI], обновление (E)DI і іAB іSTOS m32 і 5 іСохранение EAX в двойном сло ве і і і і іES:[(E)DI], обновление (E)DI і іAA іSTOSB і 5 іСохранение AL в байте і і і і іES:[(E)DI], обновление (E)DI і іAB іSTOSW і 5 іСохранение AX в слове і і і і іES:[(E)DI], обновление (E)DI і іAB іSTOD і 5 іСохранение EAX в двойном сло ве і і і і іES:[(E)DI], обновление (E)DI і АДДДДДДДДДБДДДДДДДДДДДБДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДД ДДДЩM Работа команды IF AddressSize = 16 THEN использование ES:DI в качестве DestReg ELSE P(* AddressSize = 32 *) использование ES:EDI в качестве DestReg; 432 FI; IF байтовый тип команды THEN (ES:DestReg) <- AL; IF DF = 0 THEN DestReg <- DestReg + 1; ELSE DestReg <- DestReg - 1; FI; ELSE IF OperandSize = 16 THEN (ES:DestReg) <- AX; IF DF = 0 THEN DestReg <- DestReg + 2; ELSE DestReg <- DestReg - 2; FI; ELSE P(* OperandSize = 32 *)M (ES:DestReg) <- EAX; IF DF = 0 THEN DestReg <- DestReg + 4; ELSE DestReg <- DestReg - 4; FI; FI; FI; Описание Команда STOS пересылает содержимое регистра AL, AX или EAX в байт или слово памяти, заданное регист- ром назначения относительно сегмента ES. Регистром назначения является регистр DI для атрибута размера адреса 16 битов, или EDI для атрибута размера адреса 32 бита. Операнд назначения должен адресоваться из ре- гистра ES; переопределение сегмента не допускается. Адрес назначения определяется содержимым регист- ра назначения, а не явно заданным операндом команды STOS. Этот операнд используется только для удостове- рения адресуемости сегмента ES и определения типа данных. Перед выполнением команды STOS следует заг- рузить в регистр DI или EDI правильное значение ин- 433 декса. После того, как пересылка выполнена, регистр DI автоматически обновляется. Если флаг направления ра- вен 0 (была выполнена команда CLD), происходит инк- ремент регистра назначения; если флаг направления равен 1 (была выполнена команда STD), происходит декремент регистра назначения. При сохранении байтов инкремент или декремент равен 1; при сохранении слов инкремент или декремент равен 2; при сохранении двойных слов инкремент или декремент равен 4. Команды STOSB, STOSW и STOSD являются синонимами команды STOS, работающими с байтом, словом и двойным словом, соответственно, не требующими операндов. Их проще программировать, но они не обеспечивают про- верки типа или сегмента. Команде STOS может предшествовать префикс REPE или REPNE для заполнения блока из CX или ECX байтов, слов или двойных слов. Подробности см. в описании команды REP. Изменяемые флаги Отсутствуют Исключения защищенного режима #GP(0), если назначением является сегмент, не- доступный для записи; #GP(0) в случае недопустимого исполнительного адреса операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в случае недопустимого адреса в сегменте SS; #PF(код сбоя) в случае страничного сбоя; #AC для невыравненной ссылки к памяти при теку- щем уровне привилегированности, равном 3. 434 Исключения режима реальных адресов Прерывание 13, если какая-либо часть операнда лежит вне пространства исполнительных адресов от 0 до 0FFFFH. Исключения виртуального режима 8086 Те же исключения, что и для режима реальных ад- ресов: #PF (код сбоя) для страничных сбоев. #AC для невыравненной ссылки к памяти при теку- щем уровне привилегированности, равном 3. 4STR5 - Сохранение регистра задачи P ЪДДДДДДДДДВДДДДДДДДДДДВДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДД ДДДДДДї іКод іКоманда іЧисло і Описание і іоперации і ітактовых і і і і іциклов і і ГДДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДД ДДДґ і0F 00 /1 іSTR r/m16 і 2/3 іСохранение регистра задачи в і і і і іслове, заданным исполнительн ым і і і і іадресом і АДДДДДДДДДБДДДДДДДДДДДБДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДД ДДДЩM Работа команды r/m <- регистр задачи; Описание Содержимое регистра задачи копируется в двух-байтовый регистр или адрес памяти, заданный операндом с исполнительным адресом. Команда STR используется только операционным программным обеспечением. Прикладные программы ее не используют. 435 Изменяемые флаги Отсутствуют Исключения защищенного режима #GP(0), если назначением является сегмент, не- доступный для записи; #GP(0) в случае недопустимого исполнительного адреса операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в случае недопустимого адреса в сегменте SS; #PF(код сбоя) в случае страничного сбоя; #AC для невыравненной ссылки к памяти при теку- щем уровне привилегированности, равном 3. Исключения режима реальных адресов Прерывание 6; команда STR в режиме реальных ад- ресов не распознается. Исключения виртуального режима 8086 Те же исключения, что и для режима реальных ад- ресов. Примечания Атрибут размера операнда на действие этой коман- ды не влияет. 436 4SUB5 - Целочисленное вычитание P ЪДДДДДДДДДВДДДДДДДДДДДВДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДД ДДї іКод іКоманда іЧисло і Описание і іоперации і ітактовых і і і і іциклов і і ГДДДДДДДДДЕДДДДДДДДДДДБДДДВДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ і2C ib іSUB AL,imm8 і1 іВычитание непосредственногоі і і і ібайта из AL і і2D iw іSUB AX,imm16 і1 іВычитание непосредственногоі і і і іслова из AX і і2D id іSUB EAX,imm32 і1 іВычитание непосредственногоі і і і ідвойного слова из EAX і і80 /5 ib іSUB r/m8,imm8 і1/3 іВычитание непосредственногоі і і і ібайта из байта r/m і і81 /5 iw іSUB r/m16,imm16і1/3 іВычитание непосредственногоі і і і іслова из слова r/m і і81 /5 id іSUB r/m32,imm32і1/3 іВычитание непосредственногоі і і і ідвойного слова из і і і і ідвойного слова r/m і і83 /5 ib іSUB r/m16,imm8 і1/3 іВычитание непосредственногоі і і і ірасширенного знаком байта і і і і іиз слова r/m і і83 /5 ib іSUB r/m32,imm8 і1/3 іВычитание непосредственногоі і і і ірасширенного знаком байта і і і і іиз двойного слова r/m і і28 /r іSUB r/m8,r8 і1/3 іВычитание регистра - і і і і ібайта из байта r/m і і29 /r іSUB r/m16,r16 і1/3 іВычитание регистра - і і і і іслова из слова r/m і і29 /r іSUB r/m32,r32 і1/3 іВычитание регистра - і і і і ідвойного слова из і і і і ідвойного слова r/m і і2A /r іSUB r8,r/m8 і1/2 іВычитание регистра - і і і і ібайта из байта r/m і і2B /r іSUB r16,r/m16 і1/2 іВычитание регистра - і і і і іслова из слова r/m і і2B /r іSUB r32,r/m32 і1/2 іВычитание регистра - і і і і ідвойного слова из і і і і ідвойного слова r/m і АДДДДДДДДДБДДДДДДДДДДДДДДДБДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ M 437 Работа команды IF SRC это байт, а DEST это слово или двойное слово THEN DEST = DEST - SignExtend(SRC); ELSE DEST <- DEST - SRC; FI; Описание Команда SUB вычитает второй операнд (SRC) из первого (DEST). Первому операнду присваивается ре- зультат вычитания, а флаги устанавливаются соот- ветствующим образом. При вычитании из операнда - слова непосредствен- ного байтового значения последнее расширяется знаком до размера операнда назначения. Изменяемые флаги Флаги OF, SF, ZF, AF, PF и CF устанавливаются в соответствии с результатом. Исключения защищенного режима #GP(0), если назначением является сегмент, не- доступный для записи; #GP(0) в случае недопустимого исполнительного адреса операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в случае недопустимого адреса в сегменте SS; #PF(код сбоя) в случае страничного сбоя; #AC для невыравненной ссылки к памяти при теку- щем уровне привилегированности, равном 3. Исключения режима реальных адресов Прерывание 13, если какая-либо часть операнда лежит вне пространства исполнительных адресов от 0 до 0FFFFH. 438 Исключения виртуального режима 8086 Те же исключения, что и для режима реальных ад- ресов: #PF (код сбоя) для страничных сбоев. #AC для невыравненной ссылки к памяти при теку- щем уровне привилегированности, равном 3. 4TEST5 - Логическое сравнение P ЪДДДДДДДДВДДДДДДДДДДДДВДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДД ДДДДї іКод і Команда іЧисло і Описание і іоперацииі ітактовых і і і і іциклов і і ГДДДДДДДДЕДДДДДДДДДДДДБДДДВДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДД Дґ іA8 ib іTEST AL,imm8 і1 іAND для непосредственног оі і і і ібайта и AL і іA9 iw іTEST AX,imm16 і1 іAND для непосредственног оі і і і іслова и AX і іA9 id іTEST EAX,imm32 і1 іAND для непосредственног оі і і і ідвойного слова и EAX і іF6 /0 ibіTEST r/m8,imm8 і1/2 іAND для непосредственног оі і і і ібайта и байта r/m і іF7 /0 iwіTEST r/m16,imm16і1/2 іAND для непосредственног оі і і і іслова и слова r/m і іF7 /0 idіTEST r/m32,imm32і1/2 іAND для непосредственног оі і і і ідвойного слова и і і і і ідвойного слова r/m і і84 /r іTEST r/m8,r8 і1/2 іAND для регистра - і і і і ібайта и байта r/m і і85 /r іTEST r/m16,r16 і1/2 іAND для регистра - і і і і іслова и слова r/m і і85 /r іTEST r/m32,r32 і1/2 іAND для регистра - і і і і ідвойного слова и і і і і ідвойного слова r/m і АДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДД ДЩM 439 Работа команды DEST := LeftSRC AND RightSRC; CF <- 0; OF <- 0; Описание Команда TEST вычисляет поразрядное логическое И (AND) для двух заданных ей операндов. Каждый бит ре- зультата равен 1, если оба соответствующих бита опе- рандов равны 1; в противном случае этот бит равен 0. Результат операции теряется, а модифицируются только флаги. Изменяемые флаги Флаги OF и CF очищаются; флаги SF, ZF и PF устанавливаются в соответствии с результатом. Исключения защищенного режима #GP(0) в случае недопустимого исполнительного адреса операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в случае недопустимого адреса в сегменте SS; #PF(код сбоя) в случае страничного сбоя; #AC для невыравненной ссылки к памяти при теку- щем уровне привилегированности, равном 3. Исключения режима реальных адресов Прерывание 13, если какая-либо часть операнда лежит вне пространства исполнительных адресов от 0 до 0FFFFH. 440 Исключения виртуального режима 8086 Те же исключения, что и для режима реальных ад- ресов: #PF (код сбоя) для страничных сбоев. #AC для невыравненной ссылки к памяти при текущем уровне привилегированности, равном 3. 4VERR, VERW5 - Верификация доступности чтения или записи сегмента ЪДДДДДДДДВДДДДДДДДДДВДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДї іКод іКоманда іЧисло і Описание і іоперацииі ітактовыхі і і і іциклов і і ГДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ і0F 00 /4іVERR r/m16і 11/11 іУстановка ZF=1, если сегменті і і і ідоступен для чтения, і і і і іселектор в r/m16 і і0F 00 /5іVERW r/m16і 11/11 іУстановка ZF=1, если сегменті і і і ідоступен для записи, і і і і іселектор в r/m16 і АДДДДДДДДБДДДДДДДДДДБДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ Работа команды IF сегмент с селектором в (r/m) доступен для текущего уровня защиты AND ((сегмент доступен для чтения согласно VERR) OR (сегмент доступен для записи согласно VERW)) THEN ZF <- 1; ELSE ZF <- 0; FI; Описание Двух-байтовый регистр или операнд памяти команд VERR и VERW содержит значение селектора. Команды VERR и VERW определяют доступность сегмента, указан- ного селектором, с текущего уровня привилегирован- 441 ности, а также, доступен ли он для чтения (VERR), или для записи (VERW). Если сегмент доступен, то устанавливается флаг ZF; если сегмент недоступен, то флаг ZF очищается. Для установки флага ZF должны удовлетворяться следующие условия: - Селектор должен обозначать дескриптор в преде- лах границ таблицы (GDT или LDT): селектор должен быть "определен". - Селектор должен обозначать дескриптор сегмента кода или данных (а не дескриптор сегмента состояния задачи, LDT или шлюза). - Для команды VERR сегмент должен быть доступен для чтения. Для команды VERW сегмент должен быть се- ментом данных, доступным для чтения. - Если кодовый сегмент доступен для чтения и яв- ляется конформным, уровень привилегированности деск- риптора (DPL) для команды VERR может иметь любое значение. В противном случае DPL должен быть больше или равен (это соответствует меньшей или равной при илегированности) как текущего уровня привилегирован- ности, так и RPL селектора. Выполняется такая же проверка достоверности, как если бы сегмент был загружен в регистр DS, ES, FS или GS, и был выполнен указанный доступ (чтения или записи). Флаг ZF принимает результат проверки досто- верности. Значение селектора не может давать в р зультате исключение защиты, позволяя программному обеспечению предупреждать возможные проблемы доступа к сегменту. Изменяемые флаги Флаг ZF устанавливается, если сегмент доступен, и очищается в противном случае. Исключения защищенного режима Сбои, генерируемые неверной адресацией операнда памяти, содержащего селектор; селектор не загружа- ется в какой-либо сегментный регистр, а сбои, от- 442 носящиеся к операнду селектора, не генерируются. #GP(0) в случае недопустимого исполнительного адреса операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в случае недопустимого адреса в сегменте SS; #PF(код сбоя) в случае страничного сбоя; #AC для невыравненной ссылки к памяти при теку- щем уровне привилегированности, равном 3. Исключения режима реальных адресов Прерывание 6; команды VERR и VERW в режиме ре- альных адресов не распознаются. Исключения виртуального режима 8086 Те же исключения, что и для режима реальных ад- ресов: #AC для невыравненной ссылки к памяти при теку- щем уровне привилегированности, равном 3. 4WAIT5 - Ожидание P ЪДДДДДДДДДВДДДДДДДДДДДВДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДД ДДДДДДї іКод іКоманда іЧисло і Описание і іоперации і ітактовых і і і і іциклов і і ГДДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДД ДДДґ і9B іWAIT і 1-3 іЗаставляет процессор провери ть і і і і іналичие числовых исключений і АДДДДДДДДДБДДДДДДДДДДДБДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДД ДДДЩM Описание Команда WAIT заставляет процессор проверить на- личие подвешенных немаскируемых числовых исключений, прежде чем перейти к следующей команде. 443 Изменяемые флаги Отсутствуют Исключения защищенного режима #NM, если MP и TS в CR0 установлены. Исключения режима реальных адресов Прерывание 7, если MP и TS в CR0 установлены. Исключения виртуального режима 8086 #NM, если MP и TS в CR0 установлены. Примечания Помещение команды WAIT после команды ESC гаран- тируют, что все немаскируемые исключения операций с плавающей точкой, которые могут быть сгенерированы командами, будут обработаны до того, как процессор сможет моддифицировать результаты этих команд. FWAIT это альтернативная мнемоническая форма ко- манды WAIT. Информация об использовании команды WAIT (FWAIT) приводится в главе 18, в разделе "Параллельная обра- ботка". 4WBINVD5 - Обратная запись и аннулирование кеша P ЪДДДДДДДДДВДДДДДДДДДДДВДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДД ДДДДДДї іКод іКоманда іЧисло і Описание і іоперации і ітактовых і і і і іциклов і і ГДДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДД ДДДґ і0F 09 іWBINVD і 5 іОбратная запись и аннулирова ниеі і і і івсего кеша і АДДДДДДДДДБДДДДДДДДДДДБДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДД ДДДЩM 444 Работа команды Очистка внутреннего кеша Сигнал внешнему кешу о необходимости выполнить обратную запись Сигнал внеш- нему кешу о необходимости очистки Описание Очищается внутренний кеш, и генерируется специ- альный цикл шины, указывающий, что внешний кеш дол- жен выполнить запись его содержимого в главную опе- ративную память. Далее следует еще один специальный цикл шины, указывающий внешнему кешу на то, что внешний кеш должен быть очищен. Изменяемые флаги Отсутствуют Исключения защищенного режима Отсутствуют Исключения режима реальных адресов Отсутствуют Исключения виртуального режима 8086 Отсутствуют Примечания Команда зависима от реализации; ее работа может по-разному реализовываться будущими процессорами Intel. Ответственность за исполнение сигналов обратной записи и очистки внешнего кеша лежит на соответству- ющем аппаратном обеспечении. Процессорами 386 эта команда не поддерживается. 445 Информация об использовании этой команды совместимо с процессорами 386 см. в разделе 3.11. Запрет кеши- рования описан в разделе 12.2. 4XADD5 - Обмен местами и сложение P ЪДДДДДДДДДВДДДДДДДДДДДВДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДД ДДДДДДї іКод іКоманда іЧисло і Описание і іоперации і ітактовых і і і і іциклов і і ГДДДДДДДДДЕДДДДДДДДДДДБДДВДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДД ДДДґ і0F C0 /r іXADD r/m8,r8 і3/4 іОбмен местами регистра - бай та і і і і іи байта r/m; загрузка суммы і і і і ів байт r/m і і0F C1 /r іXADD r/m16,r16і3/4 іОбмен местами регистра - сло ва і і і і іи слова r/m; загрузка суммы і і і і ів слово r/m і і0F C1 /r іXADD r/m32,r32і3/4 іОбмен местами регистра - і і і і ідвойного слова и двойного сл оваі і і і іr/m; загрузка суммы в і і і і ідвойное слово r/m і АДДДДДДДДДБДДДДДДДДДДДДДДБДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДД ДДДЩM Работа команды врем <- DEST DEST <- врем + SRC SRC <- врем Описание Команда XADD загружает DEST и SRC, а затем заг- ружает сумму DEST с исходным значением SRC в DEST. Изменяемые флаги Флаги CF, PF, AF, SF, ZF и OF получают такие же значения, как и в случае команды ADD. 446 Исключения защищенного режима #GP(0), если назначением является сегмент, не- доступный для записи; #GP(0) в случае недопустимого исполнительного адреса операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в случае недопустимого адреса в сегменте SS; #PF(код сбоя) в случае страничного сбоя; #AC для невыравненной ссылки к памяти при теку- щем уровне привилегированности, равном 3. Исключения режима реальных адресов Прерывание 13, если какая-либо часть операнда лежит вне пространства исполнительных адресов от 0 до 0FFFFH. Исключения виртуального режима 8086 Те же исключения, что и для режима реальных ад- ресов: #PF (код сбоя) для страничных сбоев. #AC для невыравненной ссылки к памяти при теку- щем уровне привилегированности, равном 3. Примечания Данная команда может быть использована с пре- фиксом LOCK. Микропроцессор 386 DX не реализует эту команду. При использовании команды вы должны обеспе- чить эквивалентный код, также работающий и на про- цессоре 386 DX. О том, как во время выполнения опре- делить, является ли процессор процессором i486, на- писано в разделе 3.11. 447 4XCHG5 - Обмен местами регистра/памяти и регистра P ЪДДДДДДДДДВДДДДДДДДДДДВДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДД ДДДДДДї іКод іКоманда іЧисло і Описание і іоперации і ітактовых і і і і іциклов і і ГДДДДДДДДДЕДДДДДДДДДДДБДДДВДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДД ДДДґ і90 +r іXCHG AX,r16 і3 іОбмен местами регистра - сло ва і і і і іи AX і і90 +r іXCHG r16,AX і3 іОбмен местами регистра - сло ва і і і і іи AX і і90 + r іXCHG EAX,r32 і3 іОбмен местами регистра - і і і і ідвойного слова и EAX і і90 + r іXCHG r32,EAX і3 іОбмен местами регистра - і і і і ідвойного слова и EAX і і86 /r іXCHG r/m8,r8 і3/5 іОбмен местами регистра - бай та і і і і іи байта по исполнительному і і і і іадресу і і86 /r іXCHG r8,r/m8 і3/5 іОбмен местами регистра - бай та і і і і іи байта по исполнительному і і і і іадресу і і87 /r іXCHG r/m16,r16 і3/5 іОбмен местами регистра - сло ва і і і і іи слова по исполнительному і і і і іадресу і і87 /r іXCHG r16,r/m16 і3/5 іОбмен местами регистра - сло ва і і і і іи слова по исполнительному і і і і іадресу і і87 /r іXCHG r/m32,r32 і3/5 іОбмен местами регистра - і і і і ідвойного слова и двойного сл оваі і і і іпо исполнительному адресу і і87 /r іXCHG r32,r/m32 і3/5 іОбмен местами регистра - і і і і ідвойного слова и двойного сл оваі і і і іпо исполнительному адресу і АДДДДДДДДДБДДДДДДДДДДДДДДДБДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДД ДДДЩM Работа команды врем <- DEST DEST <- SRC SRC <- врем 448 Описание Команда XCHG меняет местами два операнда. Опе- ранды могут следовать в любой последовательности. Если в команде участвует операнд памяти, то на время обмена возбуждается сигнал LOCK#, независимо от присутствия или отсутствия префикса LOCK или от зна- чения IOPL. Изменяемые флаги Отсутствуют Исключения защищенного режима #GP(0), если назначением является сегмент, не- доступный для записи; #GP(0) в случае недопустимого исполнительного адреса операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в случае недопустимого адреса в сегменте SS; #PF(код сбоя) в случае страничного сбоя; #AC для невыравненной ссылки к памяти при теку- щем уровне привилегированности, равном 3. Исключения режима реальных адресов Прерывание 13, если какая-либо часть операнда лежит вне пространства исполнительных адресов от 0 до 0FFFFH. Исключения виртуального режима 8086 Те же исключения, что и для режима реальных ад- ресов: #PF (код сбоя) для страничных сбоев. #AC для невыравненной ссылки к памяти при теку- щем уровне привилегированности, равном 3. 449 4XLAT/XLATB5 - Ассоциативная трансляция в таблице P ЪДДДДДДДДДВДДДДДДДДДДДВДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДД ДДДДДДї іКод іКоманда іЧисло і Описание і іоперации і ітактовых і і і і іциклов і і ГДДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДД ДДДґ іD7 іXLAT m8 і 4 іУстановка AL равным байту і і і і іпамяти DS:[(E)BX+AL без знак а] і іD7 іXLATB і 4 іУстановка AL равным байту і і і і іпамяти DS:[(E)BX+AL без знак а] і АДДДДДДДДДБДДДДДДДДДДДБДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДД ДДДЩM Работа команды IF AddressSize = 16 THEN AL <- (BX + ZeroExtend(AL)) ELSE (* AddressSize = 32 *) AL <- (EBX + ZeroExtend(AL)) FI; Описание Команда XLAT изменяет регистр AL с индекса таб- лицы на элемент таблицы. Регистр AL должен представ- лять собой индекс без знака для таблицы, адресуемой парой регистров DS:BX (в случае атрибута размера ад- реса, равного 16), или DS:EBX (в случае атрибута размера адреса 32 бита). Операнд команды XLAT позволяет переопределение сегмента. Команда XLAT использует содержимое регист- ра BX даже при его отличии от смещения операнда. Смещение операнда должно быть помещено в регистр BX или EBX предыдущей командой. Форма команды, не имеющая операнда, XLATB, может быть использована, если таблица для BX или EBX всег- да находится в сегменте DS. 450 Изменяемые флаги Отсутствуют Исключения защищенного режима #GP(0) в случае недопустимого исполнительного адреса операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в случае недопустимого адреса в сегменте SS; #PF(код сбоя) в случае страничного сбоя; #AC для невыравненной ссылки к памяти при теку- щем уровне привилегированности, равном 3. Исключения режима реальных адресов Прерывание 13, если какая-либо часть операнда лежит вне пространства исполнительных адресов от 0 до 0FFFFH. Исключения виртуального режима 8086 Те же исключения, что и для режима реальных ад- ресов: #PF (код сбоя) для страничных сбоев. #AC для невыравненной ссылки к памяти при теку- щем уровне привилегированности, равном 3. 451 4XOR5 - Логическое исключающее ИЛИ P ЪДДДДДДДДВДДДДДДДДДДДДВДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДД ДДї іКод і Команда іЧисло і Описание і іоперацииі ітактовых і і і і іциклов і і ГДДДДДДДДЕДДДДДДДДДДДДБДДДВДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ і34 ib іXOR AL,imm8 і1 іXOR для непосредственногоі і і і ібайта и AL і і35 iw іXOR AX,imm16 і1 іXOR для непосредственногоі і і і іслова и AX і і35 id іXOR EAX,imm32 і1 іXOR для непосредственногоі і і і ідвойного слова и EAX і і80 /6 ibіXOR r/m8,imm8 і1/3 іXOR для непосредственногоі і і і ібайта и байта r/m і і81 /6 iwіXOR r/m16,imm16і1/3 іXOR для непосредственногоі і і і іслова и слова r/m і і81 /6 idіXOR r/m32,imm32і1/3 іXOR для непосредственногоі і і і ідвойного слова и і і і і ідвойного слова r/m і і83 /6 ibі XOR r/m16,imm8 і1/3 іXOR для непосредственногоі і і і ірасширенного знаком байта і і і і іиз слова r/m і і83 /6 ibі XOR r/m32,imm8 і1/3 іXOR для непосредственногоі і і і ірасширенного знаком байта і і і і іиз двойного слова r/m і і30 /r і XOR r/m8,r8 і1/3 іXOR для регистра - і і і і ібайта и байта r/m і і31 /r і XOR r/m16,r16 і1/3 іXOR для регистра - і і і і іслова и слова r/m і і31 /r і XOR r/m32,r32 і1/3 іXOR для регистра - і і і і ідвойного слова и і і і і ідвойного слова r/m і і32 /r і XOR r8,r/m8 і1/2 іXOR для регистра - і і і і ібайта и байта r/m і і33 /r і XOR r16,r/m16 і1/2 іXOR для регистра - і і і і іслова и слова r/m і і33 /r і XOR r32,r/m32 і1/2 іXOR для регистра - і і і і ідвойного слова и і і і і ідвойного слова r/m і АДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ M 452 Работа команды DEST <- LeftSRC XOR RightSRC; CF <- 0; OF <- 0; Описание Команда XOR вычисляет исключающее ИЛИ (XOR) для двух заданных ей операндов. Каждый бит результата равен 1, если соответствующие биты операндов различ- ны; в противном случае этот бит равен 0. Ответ заме- щает собой первый операнд. Изменяемые флаги Флаги OF и CF очищаются; флаги SF, ZF и PF уста- навливаются в соответствии с результатом; флаг AF неопределен. Исключения защищенного режима #GP(0), если назначением является сегмент, не- доступный для записи; #GP(0) в случае недопустимого исполнительного адреса операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в случае недопустимого адреса в сегменте SS; #PF(код сбоя) в случае страничного сбоя; #AC для невыравненной ссылки к памяти при теку- щем уровне привилегированности, равном 3. Исключения режима реальных адресов Прерывание 13, если какая-либо часть операнда лежит вне пространства исполнительных адресов от 0 до 0FFFFH. 453 Исключения виртуального режима 8086 Те же исключения, что и для режима реальных ад- ресов: #PF (код сбоя) для страничных сбоев. #AC для невыравненной ссылки к памяти при теку- щем уровне привилегированности, равном 3. |