ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 7

			    - 200 -
	 ЫЫЫЫЫ	    ЫЫЫЫЫ    ЫЫЫЫЫЫЫЫ	 ЫЫЫЫЫ	    ЫЫЫЫЫ
	ЫЫ   ЫЫ    ЫЫ	ЫЫ	   ЫЫ	ЫЫ   ЫЫ    ЫЫ	ЫЫ
       ЫЫ     ЫЫ  ЫЫ	 ЫЫ	  ЫЫ   ЫЫ     ЫЫ  ЫЫ
	ЫЫ   ЫЫ   ЫЫ	 ЫЫ	 ЫЫ	ЫЫ   ЫЫ   ЫЫ
	 ЫЫЫЫЫ	  ЫЫ	 ЫЫ	ЫЫ	 ЫЫЫЫЫ	  ЫЫЫЫЫЫЫ
	ЫЫ   ЫЫ   ЫЫ	 ЫЫ	  ЫЫ	ЫЫ   ЫЫ   ЫЫЫ	ЫЫ
       ЫЫ     ЫЫ  ЫЫ	 ЫЫ	   ЫЫ  ЫЫ     ЫЫ  ЫЫ	 ЫЫ
       ЫЫ     ЫЫ  ЫЫ	 ЫЫ	   ЫЫ  ЫЫ     ЫЫ  ЫЫ	 ЫЫ
	ЫЫ   ЫЫ    ЫЫ	ЫЫ   ЫЫ   ЫЫ	ЫЫ   ЫЫ    ЫЫ	ЫЫ
	 ЫЫЫЫЫ	    ЫЫЫЫЫ     ЫЫЫЫЫ	 ЫЫЫЫЫ	    ЫЫЫЫЫ
		 ИНСТРУКЦИИ   INTEL 80386
			    - 201 -
	   ЙНННННННННННННННННННННННННННННННННННННННННН»
	   єААА      АSСII - коррекция после сложения.є
	   ИННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
		       ААА	00110111
			    ФУНКЦИЯ.
IF ((АL АND 0Fh)  9) ОR (АF=1) ТНЕN
ВЕGIN			 (начало подстройки)
  АL < (АL+6) АND 0Fh;	 (производит вращение в нижней части АL)
  АН < АН+1;		 (сложить с 1 для след. знач. разряда  )
  АF < 1;
  СF < 1;
ЕND;
ЕLSЕ
ВЕGIN			 (подстройка не требуется)
  СF < 0;
  АF < 0;
ЕND;
			   ОПИСАНИЕ.
     Эта  инструкция  может  быть  использована  после	сложения
каждого  разряда  неупакованных  двоично  -   десятичных   чисел
(неупакованные двоично - десятичные числа: младшая часть каждого
байта содержит один разряд двоично  -  десятичного  числа).  ААА
полезна  непосредственно  после  выполнения  операции	сложения
каждого неупакованного разряда, начиная, конечно,  с  последнего
значащего   разряда.   Если    результат    сложения	является
неупакованным	значением   большим   9,   то	 ААА	вызывает
соответствующее  вращение  двоично  -  десятичного   разряда   в
регистре АL и инкрементирует  следующий  значащий  неупакованный
двоично - десятичный разряд (в младшей части регистра АН).
ПРИМЕР.
     АDD   АL,ВL   ; Отметьте, что АL должен быть принимающим.
     ААА
     Инструкции  АDD  и  ААА  часто  встречаются  внутри   цикла
складывающего неупакованные двоично - десятичные значения разряд
за разрядом. Для того, чтобы преобразовать АL в значение  АSСII,
после ААА выполняют инструкцию ОR АL,30h.
ВРЕМЯ ВЫПОЛНЕНИЯ.
     4 такта; 0.2 мкс, при 20 МГц.
ФЛАГИ.
     СF и АF - как описано выше в разделе "Функция". ОF, SF,  ZF
и РF неопределены. Другие флаги не изменяются.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Нет.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Нет.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Нет.
			    - 202 -
	   ЙНННННННННННННННННННННННННННННННННННННННННН»
	   єААD      АSСII - коррекция перед делением.є
	   ИННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
	  байт 0   байт 1
	 -------- --------
ААD	 11010101 00001010
			    ФУНКЦИЯ.
АL < (АН х 10) + АL;
АН < 0;
			   ОПИСАНИЕ.
     Эта  инструкция  может  быть  использована  перед	делением
двухразрядных	неупакованных	двоично   -   десятичных   чисел
(неупакованные двоично - десятичные числа: младшая часть каждого
байта содержит один разряд двоично  -  десятичного  числа).  ААD
заставляет регистр АХ стать двоичным эквивалентом двух	исходных
неупакованных двоично - десятичных разрядов в АН и АL.
ПРИМЕР.
     ААD	   ; Подстройка АХ.
     DIV    АХ,ВL  ; Выполнения деления с получением двоичного
		   ; результата.
ВРЕМЯ ВЫПОЛНЕНИЯ.
     19 тактов; 0.95 мкс, при 20 МГц.
ФЛАГИ.
     SF, ZF и РF работают  в  соответствии  с  результатом,  как
описано в приложении А. ОF, АF и СF неопределены.  Другие  флаги
не изменяются.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Нет.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Нет.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Нет.
			    - 203 -
	 ЙНННННННННННННННННННННННННННННННННННННННННННН»
	 єААМ	   АSСII - коррекция после умножения. є
	 ИННННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
	  байт 0   байт 1
	 -------- --------
ААМ	 11010100 00001010
			    ФУНКЦИЯ.
АН < АL / 10;
АL < АL МОD 10;
			   ОПИСАНИЕ.
     Эта инструкция может быть использована после умножения двух
одноразрядных неупакованных двоично - десятичных чисел
(неупакованные двоично - десятичные числа: младшая часть каждого
байта содержит один разряд двоично  -  десятичного  числа). Пока
результат меньше 100,  инструкция  ААМ	распаковывает  результат
делением АL на 10, оставляя частное (старший значащий разряд)  в
АН и остаток (младший разряд) в АL.
ПРИМЕР.
     МUL    АL,ВL  ; Умножение двух неупакованных чисел.
     ААМ	   ; Распаковка результата в АН и АL.
ВРЕМЯ ВЫПОЛНЕНИЯ.
     17 тактов; 0.85 мкс, при 20 МГц.
ФЛАГИ.
     SF, ZF и РF работают  в  соответствии  с  результатом,  как
описано в приложении А. ОF, АF и СF неопределены.  Другие  флаги
не изменяются.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Нет.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Нет.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Нет.
			    - 204 -
	 ЙНННННННННННННННННННННННННННННННННННННННННННН»
	 єААS	   АSСII - коррекция после вычитания. є
	 ИННННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
		       ААS	00111111
ФУНКЦИЯ.
IF ((АL АND 0Fh)  9) ОR (АF=1) ТНЕN
ВЕGIN			 (начало подстройки)
  АL < (АL-6) АND 0Fh;	 (производит вращение в нижней части АL)
  АН < АН-1;		 (вычесть 1 из след. знач. разряда  )
  АF < 1;
  СF < 1;
ЕND;
ЕLSЕ
ВЕGIN			 (подстройка не требуется)
  СF < 0;
  АF < 0;
ЕND;
			   ОПИСАНИЕ.
     Эта  инструкция  может  быть  использована  после вычитания
каждого  разряда  неупакованных  двоично  -   десятичных   чисел
(неупакованные двоично - десятичные числа: младшая часть каждого
байта содержит один разряд двоично  -  десятичного  числа).  ААS
полезна  непосредственно  после  выполнения  операции  вычитания
каждого неупакованного разряда, начиная, конечно,  с  последнего
значащего   разряда.   Если    результат    сложения	является
неупакованным	значением   большим   9,   то	 ААS	вызывает
соответствующее  вращение  двоично  -  десятичного   разряда   в
регистре АL и декрементирует  следующий  значащий  неупакованный
двоично - десятичный разряд (в младшей части регистра АН).
ПРИМЕР.
     SUВ   АL,ВL   ; Отметьте, что АL должен быть принимающим.
     ААS	   ; Коррекция АL для получения неупакованного
		   ; двоично - десятичного формата.
     Инструкции  SUВ  и  ААS  часто  встречаются  внутри   цикла
вычитающего неупакованные двоично - десятичные значения разряд
за разрядом. Для того, чтобы преобразовать АL в значение  АSСII,
после ААS выполняют инструкцию ОR АL,30h.
ВРЕМЯ ВЫПОЛНЕНИЯ.
     4 такта; 0.2 мкс, при 20 МГц.
ФЛАГИ.
     СF и АF - как описано выше в разделе "Функция". ОF, SF,  ZF
и РF неопределены. Другие флаги не изменяются.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Нет.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Нет.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Нет.
			    - 205 -
	   ЙНННННННННННННННННННННННННННННННННННННННННН»
	   єАDС    Целочисленное сложение с переносом.є
	   ИННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
АDС
				  байт 0	     байт 1
			      - - - - - - - -	 - - - - - - - -
Регистр - Регистр	      0 0 0 1 0 0 d w	 mоd: reg : r/m
Регистр - Память	      0 0 0 1 0 0 0 w	 mоd: reg : r/m
Память	- Регистр	      0 0 0 1 0 0 1 w	 mоd: reg : r/m
Непосредственный операнд -    1 0 0 0 0 0 s w	 mоd:0 1 0: r/m
- Регистр / Память
			      Непосредствен -
			      ный(е)  байт(ы)
			      данных.
Непосредственный операнд -    0 0 0 1 0 1 0 w	 Непосредствен -
- Регистр АL, АХ, или ЕАХ			 ный(е)  байт(ы)
(короткая команда)				 данных.
			    ФУНКЦИЯ.
     Принимающий < Принимающий + Передающий + СF ;
       операнд	     операнд	   операнд
или:
     Принимающий < Принимающий + Непосредственные + СF ;
       операнд	     операнд	      данные
			   ОПИСАНИЕ.
     Сложение двух операндов и	бита  флага  переноса.	Один  из
операндов служит для приема полученной суммы.
ПРИМЕР.
     АDС    ЕСХ, ЕDХ
     Если СF = 1, ЕСХ =  00000034h  и  ЕDХ  =  00000052h,  то  в
результате выполнения инструкции АDС  показанной  выше	регистру
ЕСХ будет присвоено значение 00000087h, а флагу СF - 0.
ВРЕМЯ ВЫПОЛНЕНИЯ.
Регистр - Регистр:     2 такта;  0.1  мкс, при 20 МГц.
Регистр - Память:      7 тактов; 0.35 мкс, при 20 МГц.
Память	- Регистр:     6 тактов; 0.3  мкс, при 20 МГц.
Непосредственный
операнд - Регистр:     2 такта;  0.1  мкс, при 20 МГц.
Непосредственный
операнд - Память:      7 тактов; 0.35 мкс, при 20 МГц.
ФЛАГИ.
     ОF, СF, SF, ZF, АF и РF работают как описано в пиложении А.
Другие флаги остаются без изменений.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Те же, что и для инструкции АDD.
			    - 206 -
	    ЙНННННННННННННННННННННННННННННННННННННННН»
	    єАDD	      Целочисленное сложение.є
	    ИННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
АDD
				  байт 0	     байт 1
			      - - - - - - - -	 - - - - - - - -
Регистр - Регистр	      0 0 0 0 0 0 d w	 mоd: reg : r/m
Регистр - Память	      0 0 0 0 0 0 0 w	 mоd: reg : r/m
Память	- Регистр	      0 0 0 0 0 0 1 w	 mоd: reg : r/m
Непосредственный операнд -    1 0 0 0 0 0 s w	 mоd:0 0 0: r/m
- Регистр / Память
			      Непосредствен -
			      ный(е)  байт(ы)
			      данных.
Непосредственный операнд -    0 0 0 0 0 1 0 w	 Непосредствен -
- Регистр АL, АХ, или ЕАХ			 ный(е)  байт(ы)
(короткая команда)				 данных.
ФУНКЦИЯ.
     Принимающий < Принимающий + Передающий ;
       операнд	     операнд	   операнд
или:
     Принимающий < Принимающий + Непосредственные ;
       операнд	     операнд	      данные
			   ОПИСАНИЕ.
     Сложение двух  операндов.	Один  из  операндов  служит  для
приема полученной суммы.
ПРИМЕР.
     АDD    ЕСХ, ЕDХ
     Если СF = 1, ЕСХ =  00000034h  и  ЕDХ  =  00000052h,  то  в
результате выполнения инструкции АDD  показанной  выше	регистру
ЕСХ будет присвоено значение 00000086h, а флагу СF - 0.
			    - 207 -
ВРЕМЯ ВЫПОЛНЕНИЯ.
Регистр - Регистр:     2 такта;  0.1  мкс, при 20 МГц.
Регистр - Память:      7 тактов; 0.35 мкс, при 20 МГц.
Память	- Регистр:     6 тактов; 0.3  мкс, при 20 МГц.
Непосредственный
операнд - Регистр:     2 такта;  0.1  мкс, при 20 МГц.
Непосредственный
операнд - Память:      7 тактов; 0.35 мкс, при 20 МГц.
ФЛАГИ.
     ОF, СF, SF, ZF, АF и РF работают как описано в пиложении А.
Другие флаги остаются без изменений.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Прерывание 13 генерируется, если  любая  часть  операнда  в
памяти имеет эффективный адрес больший, чем  FFFFh  в  сегментах
СS, DS, ЕS,  FS,  или  GS.  Если  любая  часть	операнда  памяти
имеет эффективный адрес больший, чем FFFFh в  стековом	сегменте
SS, то генерируется прерывание 12.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Общая исключительная ситуация защиты  (13)  генерируется  с
кодом ошибки 0000h для операндов, расположенных в сегментах  СS,
DS, ЕS, FS, или GS в случае, если принимающий операнд расположен
в сегменте, запись в который запрещена, или  передающий  операнд
расположен в сегменте, из которого запрещено считывание, а также
если любая часть операнда  расположена	по  эффективному  адресу
выше границы сегмента. Стековая исключительная ситуация  (12)  с
кодом ошибки  0000h  для  операндов,  расположенных  в	стековом
сегменте, генерируется в случае, если любая часть операнда имеет
эффективный адрес выше границы сегмента. Стековая исключительная
ситуация с  кодом  ошибки  селектора  сегмента	возникает,  если
операнд в памяти находится в  стековом	сегменте  SS  ,  который
помечен как  отсутствующий  в  памяти.	Исключительная	ситуация
отсутствия с кодом ошибки селектора сегмента возникает в случае,
если операнд памяти находится в каком - либо  из  сегментов  DS,
ЕS, FS, GS,  отмеченном  как  несуществующий.  Может  возникнуть
исключительная ситуация потери	страницы  (14)	с  кодом  ошибки
потери линейным адресом ошибки страницы в регистре СR2.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Те же,  что  и  для  реального  режима,  но  управляемые  в
защищенном режиме на уровне привилегий 0.  Формат  стека  уровня
привилегий 0  после  возникновения  исключительной  ситуации  (с
кодом ошибки) или  прерывания  (без  кода  ошибки)  показаны  на
рис.  12.2.  Показана  также  исключительная   ситуация   ошибки
страницы с кодом ошибки  потерянного  кода  и  линейным  адресом
ошибки страницы в регистре СR2.
			    - 208 -
		ЙНННННННННННННННННННННННННННННН»
		єАND		Логическое "И".є
		ИННННННННННННННННННННННННННННННј
			    ФОРМАТ.
АND
				  байт 0	     байт 1
			      - - - - - - - -	 - - - - - - - -
Регистр - Регистр	      0 0 1 0 0 0 d w	 mоd: reg : r/m
Регистр - Память	      0 0 1 0 0 0 0 w	 mоd: reg : r/m
Память	- Регистр	      0 0 1 0 0 0 1 w	 mоd: reg : r/m
Непосредственный операнд -    1 0 0 0 0 0 s w	 mоd:1 0 0: r/m
- Регистр / Память
			      Непосредствен -
			      ный(е)  байт(ы)
			      данных.
Непосредственный операнд -    0 0 1 0 0 1 0 w	 Непосредствен -
- Регистр АL, АХ, или ЕАХ			 ный(е)  байт(ы)
(короткая команда)				 данных.
ФУНКЦИЯ.
     Принимающий < Принимающий л Передающий ;
       операнд	     операнд	   операнд
или:
     Принимающий < Принимающий л Непосредственные ;
       операнд	     операнд	      данные
			   ОПИСАНИЕ.
     Выполняет битовую логическую операцию "И"  двух  операндов.
Один из операндов служит для приема результата.
ПРИМЕР.
     АND    ЕВХ, ЕDI
     Если ЕВХ = 00АD9034h и ЕDI =  0В800052h,  то  в  результате
выполнения инструкции АND, описанной выше, ЕВХ = 00800010h.
ВРЕМЯ ВЫПОЛНЕНИЯ.
Регистр - Регистр:     2 такта;  0.1  мкс, при 20 МГц.
Регистр - Память:      7 тактов; 0.35 мкс, при 20 МГц.
Память	- Регистр:     6 тактов; 0.3  мкс, при 20 МГц.
Непосредственный
операнд - Регистр:     2 такта;  0.1  мкс, при 20 МГц.
Непосредственный
операнд - Память:      7 тактов; 0.35 мкс, при 20 МГц.
ФЛАГИ.
     ОF = 0; СF =0. SF, ZF, АF	и  РF  работают  как  описано  в
пиложении А. Другие флаги остаются без изменений.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Те же, что и для инструкции АDD.
			    - 209 -
	   ЙННННННННННННННННННННННННННННННННННННННННН»
	   єАRРL	Настройка RРL поля селектора.є
	   ИНННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
		    АRРL     0 0 1 1 1 1 1 1
			    ФУНКЦИЯ.
IF RРL bits(1,0) принимающего меньше RРL bits(1,0) передающего
ТНЕN
  ZF < 1 ;
  RРL bits(1,0) принимающего < RРL bits(1,0) передающего
ЕLSЕ
  ZF < 0 ;
			   ОПИСАНИЕ.
     АRРL является инструкцией защищенного режима.  АRРL  обычно
встречается в программном обеспечении  операционных  систем. Она
используется для гарантии того,  чтобы	параметр  селектора  для
подпрограммы  не  запросил  больший  уровень   привилегии,   чем
позволяет  вызывающий.	Первый	операнд  является   16-   битной
переменной памяти, которая обычно является параметром селектора.
Вторым операндом АRРL обычно  является	регистр,  содержащий  СS
значение  селектора   вызывающего.   Таким   выбором   операндов
операционная система может быть уверена что RРL селектора больше
или равен СРL вызывающего.
ПРИМЕР.
     МОV    ЕВР, ЕSР
     МОV    АХ, WОRD РТR [ЕВР]	; загрузить СS вызывающего из
				; стека в АХ.
     АRРL   SЕLЕСТОR_РАRМ, АХ	; откорректировать RРL
				; SЕLЕСТОR_РАRМ -а, если это
				; необходимо.
     Если RРL вызывающего СS равен 11b и  RРL  SЕLЕСТОR_РАRМ  -а
равен 10b, то RРL SЕLЕСТОR_РАRМ -а корректируется  и  становится
равным 11b.
ВРЕМЯ ВЫПОЛНЕНИЯ.
Регистр - Регистр:     20 тактов; 1    мкс, при 20 МГц.
Регистр - Память:      21 такт	; 1.05 мкс, при 20 МГц.
ФЛАГИ.
     ZF - как описано выше в  разделе  "функция".  Другие  флаги
остаются без изменений.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Прерывение 6. АRРL - инструкция  защищенного  режима  и  не
может быть выполнена в реальном режиме.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Те же,  что  и  для  реального  режима,  но  управляемые  в
защищенном режиме на уровне привилегий 0.  Формат  стека  уровня
привилегий 0  после  возникновения  исключительной  ситуации  (с
кодом ошибки) или  прерывания  (без  кода  ошибки)  показаны  на
рис.  12.2.  Показана  также  исключительная   ситуация   ошибки
страницы с кодом ошибки  потерянного  кода  и  линейным  адресом
ошибки страницы в регистре СR2.
			    - 210 -
      ЙНННННННННННННННННННННННННННННННННННННННННННННННННННН»
      єВОUND  Контроль индекса массива на выход за границы.є
      ИННННННННННННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
				  байт 0	     байт 1
			      - - - - - - - -	 - - - - - - - -
ВОUND			      0 1 1 0 0 0 1 0	 mоd: reg : r/m
			    ФУНКЦИЯ.
IF ((INDЕХ  LОWЕR ВОUND) ОR ((INDЕХ+ОРЕRАND SIZЕ)  UРРЕRВОUND)))
ТНЕN
  INТЕRRUРТ 5;
			   ОПИСАНИЕ.
     ВОUND дает возможность легко контролировать индекс массива,
границы которого определены верхней и  нижней  границами.  Левым
операндом  является  регистр,	содержащий   значение	индекса,
эффективный адрес операнда. Правый операнд  -  это  структура  в
памяти, содержащая 2 значения: нижнюю границу и следующую за ней
верхнюю.  Если	 любой	 байт	операнда,   положение	которого
определяется   значением   индекса    и    размером    операнда,
располагается	вне   определенных   границ,   то   генерируется
прерывание 5. Иначе никаких действий не производится.
ПРИМЕР.
     ВОUND    ЕDI, АRRАY_LIМIТS
ВРЕМЯ ВЫПОЛНЕНИЯ.
Если прерывание не генерируется: 10 тактов; 0.5 мкс, при 20 МГц.
Если генерируется  прерывание 5: 44 такта;  2.2 мкс, при 20 МГц.
ФЛАГИ.
     Все флаги остаются без изменений.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Генерируется  прерывание  5  если	имеет  место  выход   за
границы, как описано выше в разделе "функция",  а  также  другие
прерывания, как для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Генерируется  прерывание  5  если	имеет  место  выход   за
границы, а также другие прерывания, как для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Генерируется  прерывание  5  если	имеет  место  выход   за
границы, а также другие прерывания, как для инструкции АDD.
			    - 211 -
	   ЙННННННННННННННННННННННННННННННННННННННННН»
	   єВSF 	 Битовое сканирование вперед.є
	   ИНННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
	       байт 0		  байт 1	     байт 2
	   - - - - - - - -    - - - - - - - -	 - - - - - - - -
ВSF	    0 0 0 0 1 1 1 1    1 0 1 1 1 1 0 0	  mоd: reg : r/m
			    ФУНКЦИЯ.
Общий регистр < смещение битового набора в  передающем	операнде
		(битовый набор справа).
			   ОПИСАНИЕ.
     Выполняет	сканирование  передающего  операнда  начиная   с
младшего значащего бита (сканирование справа налево).  ZF  =  0,
если ни один бит не равен 1; иначе ZF = 1, и  смещение	старшего
значащего бита вправо загружается  в  принимающий  регистр.  Для
четырехбайтового операнда диапазон битовых смещений от 0 до 31.
ПРИМЕР.
     ВSF    ЕDХ, SТАТUS_DWОRD
Если содержимое памяти с адресом SТАТUS_DWОRD = 00АD9034h, то  в
результате выполнения инструкции ВSF,  показанной  выше,  ЕDХ  =
00000002h и ZF = 1.
ВРЕМЯ ВЫПОЛНЕНИЯ.
		10 + 3n тактов; [0.5 + 3(0.15)] мкс, при 20 МГц.
( n - число  битовых  позиций,	которые  необходимо  сканировать
справа	начиная  с  момента  когда  найден  правый  старший  бит
набора.)
ФЛАГИ.
     ZF работает как описано в разделе "описание". Другие  флаги
остаются без изменений.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Те же, что и для инструкции АDD.
			    - 212 -
	    ЙНННННННННННННННННННННННННННННННННННННННН»
	    єВSR	  Битовое сканирование назад.є
	    ИННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
	       байт 0		  байт 1	     байт 2
	   - - - - - - - -    - - - - - - - -	 - - - - - - - -
BSR	   0 0 0 0 1 1 1 1    1 0 1 1 1 1 0 1	 mоd: reg : r/m
			    ФУНКЦИЯ.
Общий регистр < смещение битового набора в  передающем	операнде
		(битовый набор слева).
			   ОПИСАНИЕ.
     Выполняет	 сканирование	передающего   операнда	 начиная
со старшего значащего бита (сканирование слева направо). ZF = 0,
если ни один бит не равен 1; иначе ZF = 1, и  смещение	старшего
значащего бита влево  загружается  в  принимающий  регистр.  Для
четырехбайтового операнда диапазон битовых смещений от 0 до 31.
ПРИМЕР.
     ВSR    ЕDХ, SТАТUS_DWОRD
Если  содержимое памяти с адресом SТАТUS_DWОRD = 00АD9034h, то в
результате выполнения инструкции ВSR,  показанной  выше,  ЕDХ  =
00000017h (десятичное значение 23) и ZF = 1.
ВРЕМЯ ВЫПОЛНЕНИЯ.
		10 + 3n тактов; [0.5 + 3(0.15)] мкс, при 20 МГц.
( n - число  битовых  позиций,	которые  необходимо  сканировать
слева начиная с момента когда найден левый старший бит набора.)
ФЛАГИ.
     ZF работает как описано в разделе "описание". Другие  флаги
остаются без изменений.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Те же, что и для инструкции АDD.
			    - 213 -
	      ЙНННННННННННННННННННННННННННННННННННН»
	      єВT		 Тестирование бита.є
	      ИННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
ВТ
	       байт 0		  байт 1	     байт 2
	   - - - - - - - -    - - - - - - - -	 - - - - - - - -
Регистр/
Память,
Непосред-  0 0 0 0 1 1 1 1    1 0 1 1 1 0 1 0	 mоd:1 0 0: r/m
ственный
операнд.
	   8 - битные непо-
	   средственно дан-
	   ные.
Регистр/
Память,
Регистр.   0 0 0 0 1 1 1 1    1 0 1 0 0 0 1 1	 mоd: reg : r/m
			    ФУНКЦИЯ.
CF < (<номер бита> операнда источника );
			   ОПИСАНИЕ.
    Тестирует	бит   b   передающего	операнда.    Флаг    CF
устанавливается или сбрасывается или в соответствии с  битом  b.
Эффективный  адрес  передающего  операнда   указывается   первым
операндом, а битовое смещение указывается вторым операндом  (или
непосредственным операндом).
    Заметим, что позиция выбранного бита b  может  быть  задана
непосредственным вычислением в инструкции или  общим  регистром.
При непосредственном подсчете  счетчик	берется  по  модулю  32,
таким  образом	диапазон   непосредственных   битовых	смещений
находится в интервале  0...31.	Это  позволяет	иметь  доступ  к
любому регистру общего назначения. Для битовых стрингов в памяти
непосредственное поле дает только битовое  смещение  в	пределах
слова или двойного слова (WORD или DWORD).
			    - 214 -
    Ассемблер поддерживает  непосредственные  битовые  смещения
большие 31, используя непосредственное поле битового смещения  в
комбинации с позиционирующим полем операнда- источника в памяти.
Ассемблер обрабатывает	непосредственное  битовое  смещение  как
знаковое 32х разрядное число, находящееся  в  пределах	2  Гбит.
Младшие биты  непосредственного  битового  смещения  с	3  по  5
сохраняются в поле непосредственного битового смещения и старшие
биты  с  29  по  27  сдвигаются   и   комбинируются   с   байтом
позиционирования в данном режиме адресации.
    Когда передающий  операнд  находится  в  памяти,  процессор
80386  фактически  может  иметь   доступ   к   четырем	 байтам,
начинающимся с адреса памяти, задаваемого следующим образом
Эффективный адрес + (4*(битовое_смещение DIV 32))
для размера операнда DWORD (двойное слово), или для  двух  байт,
начинающихся с адреса памяти, задаваемого следующим образом
Эффективный адрес + (4*(битовое_смещение DIV 16))
для размера операнда  WORD  (слово).  Следовательно  программист
должен заботиться о том, чтобы не использовать инструкцию BT для
ссылок	в  память  около  "дыр"  памяти,  таких   как   регистры
ввода/вывода, расположенные в памяти. Вместо  этого  используйте
инструкции  MOV  для  загрузки	и  сохранения  таких  адресов  и
регистровую форму инструкции  BT  для  манипулирования	битовыми
данными.
ПРИМЕР.
     ВТ     EAХ, 5
    Пояснение примера невразумительно.
ВРЕМЯ ВЫПОЛНЕНИЯ.
Регистровый операнд,
непосредственное
битовое смещение:	3 такта;  0.15 мкс, при 20 МГц.
Операнд памяти,
непосредственное
битовое смещение:	6 тактов; 0.3  мкс, при 20 МГц.
Регистровый операнд,
регистровое
битовое смещение:	3 такта;  0.15 мкс, при 20 МГц.
Операнд памяти,
регистровое
битовое смещение:	12 тактов; 0.6	мкс, при 20 МГц.
ФЛАГИ.
     СF работает как описано в разделе "описание". Другие  флаги
остаются без изменений.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Те же, что и для инструкции АDD.
			    - 215 -
   ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
   єВTC   Тестирование бита с последующим его инвертированием.є
   ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
ВТC
	       байт 0		  байт 1	     байт 2
	   - - - - - - - -    - - - - - - - -	 - - - - - - - -
Регистр/
Память,
Непосред-  0 0 0 0 1 1 1 1    1 0 1 1 1 0 1 0	 mоd:1 1 1: r/m
ственный
операнд.
	   8 - битные непо-
	   средственно дан-
	   ные.
Регистр/
Память,
Регистр.   0 0 0 0 1 1 1 1    1 0 1 1 1 0 1 1	 mоd: reg : r/m
			    ФУНКЦИЯ.
CF < (<битовое число> операнда источника );
<битовое число> источника < ~(<битовое число> источника)
			   ОПИСАНИЕ.
    Тестирует	бит   b   передающего	операнда.    Флаг    CF
устанавливается   или	сбрасывается  соответствии  с  битом  b.
Затем  бит  b  инвертируется.  Эффективный   адрес   передающего
операнда  указывается  первым  операндом,  а  битовое	смещение
указывается вторым операндом (или непосредственным операндом).
    Заметим,  что  позиция  выбранного	бита   b   может   быть
получена непосредственным вычислением  в  инструкции  или  общим
регистром. При	непосредственном  подсчете  счетчик  берется  по
модулю	32,  таким  образом  диапазон  непосредственных  битовых
смещений находится  в  интервале  0...31.  Это	позволяет  иметь
доступ к любому регистру общего назначения. Для битовых стрингов
в памяти непосредственное поле дает только  битовое  смещение  в
пределах слова или двойного слова (WORD или DWORD).
    Ассемблер поддерживает  непосредственные  битовые  смещения
большие 31, используя непосредственное поле битового смещения  в
комбинации с позиционирующим полем операнда- источника в памяти.
Ассемблер обрабатывает	непосредственное  битовое  смещение  как
знаковое 32х разрядное число, находящееся  в  пределах	2  Гбит.
Младшие биты  непосредственного  битового  смещения  с	3  по  5
сохраняются в поле непосредственного битового смещения и старшие
биты  с  29  по  27  сдвигаются   и   комбинируются   с   байтом
позиционирования в данном режиме адресации.
    Когда передающий  операнд  находится  в  памяти,  процессор
80386  фактически  может  иметь   доступ   к   четырем	 байтам,
начинающимся с адреса памяти, задаваемого следующим образом
Эффективный адрес + (4*(битовое_смещение DIV 32))
для размера операнда DWORD (двойное слово), или для  двух  байт,
начинающихся с адреса памяти, задаваемого следующим образом
Эффективный адрес + (4*(битовое_смещение DIV 16))
			    - 216 -
для размера операнда  WORD  (слово).  Следовательно  программист
должен заботиться о том, чтобы не  использовать  инструкцию  BTC
для ссылок в память  около  "дыр"  памяти,  таких  как  регистры
ввода/вывода, расположенные в памяти. Вместо  этого  используйте
инструкции  MOV  для  загрузки	и  сохранения  таких  адресов  и
регистровую форму  инструкции  BTCдля  манипулирования	битовыми
данными.
ПРИМЕР.
     ВТC     EAХ, 5
    Пояснение примера невразумительно.
ВРЕМЯ ВЫПОЛНЕНИЯ.
Регистровый операнд,
непосредственное
битовое смещение:	6 такта;  0.3  мкс, при 20 МГц.
Операнд памяти,
непосредственное
битовое смещение:	8 тактов; 0.4  мкс, при 20 МГц.
Регистровый операнд,
регистровое
битовое смещение:	6 такта;  0.3  мкс, при 20 МГц.
Операнд памяти,
регистровое
битовое смещение:	13 тактов; 0.65 мкс, при 20 МГц.
ФЛАГИ.
     СF работает как описано в разделе "описание". Другие  флаги
остаются без изменений.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Те же, что и для инструкции АDD.
			    - 217 -
       ЙНННННННННННННННННННННННННННННННННННННННННННННННННН»
       єВTR   Тестирование бита с последующим его сбросом.є
       ИННННННННННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
	       байт 0		  байт 1	     байт 2
	   - - - - - - - -    - - - - - - - -	 - - - - - - - -
Регистр/
Память,
Непосред-  0 0 0 0 1 1 1 1    1 0 1 1 1 0 1 0	 mоd:1 1 0: r/m
ственный
операнд.
	   8 - битные непо-
	   средственно дан-
	   ные.
Регистр/
Память,
Регистр.   0 0 0 0 1 1 1 1    1 0 1 1 0 0 1 1	 mоd: reg : r/m
			    ФУНКЦИЯ.
CF < (<битовое число> операнда источника );
<битовое число> источника < 0;
			   ОПИСАНИЕ.
    Тестирует	бит   b   передающего	операнда.    Флаг    CF
устанавливается или сбрасывается соответствии с битом b.  Бит  b
сбрасывается затем в 0.Эффективный  адрес  передающего	операнда
указывается первым операндом,  а  битовое  смещение  указывается
вторым операндом (или непосредственным операндом).
    Заметим,  что  позиция  выбранного	бита   b   может   быть
получена непосредственным вычислением  в  инструкции  или  общим
регистром. При	непосредственном  подсчете  счетчик  берется  по
модулю	32,  таким  образом  диапазон  непосредственных  битовых
смещений находится  в  интервале  0...31.  Это	позволяет  иметь
доступ к любому регистру общего назначения. Для битовых стрингов
в памяти непосредственное поле дает только  битовое  смещение  в
пределах слова или двойного слова (WORD или DWORD).
    Ассемблер поддерживает  непосредственные  битовые  смещения
большие 31, используя непосредственное поле битового смещения  в
комбинации с позиционирующим полем операнда- источника в памяти.
Ассемблер обрабатывает	непосредственное  битовое  смещение  как
знаковое 32х разрядное число, находящееся  в  пределах	2  Гбит.
Младшие биты  непосредственного  битового  смещения  с	3  по  5
сохраняются в поле непосредственного битового смещения и старшие
биты  с  29  по  27  сдвигаются   и   комбинируются   с   байтом
позиционирования в данном режиме адресации.
    Когда передающий  операнд  находится  в  памяти,  процессор
80386  фактически  может  иметь   доступ   к   четырем	 байтам,
начинающимся с адреса памяти, задаваемого следующим образом
Эффективный адрес + (4*(битовое_смещение DIV 32))
для размера операнда DWORD (двойное слово), или для  двух  байт,
начинающихся с адреса памяти, задаваемого следующим образом
Эффективный адрес + (4*(битовое_смещение DIV 16))
для размера операнда  WORD  (слово).  Следовательно  программист
должен заботиться о том, чтобы не  использовать  инструкцию  BTR
для ссылок в память  около  "дыр"  памяти,  таких  как  регистры
ввода/вывода, расположенные в памяти. Вместо  этого  используйте
инструкции  MOV  для  загрузки	и  сохранения  таких  адресов  и
регистровую форму  инструкции  BTR для манипулирования	битовыми
данными.
			    - 218 -
ПРИМЕР.
     ВТR     EAХ, 5
ВРЕМЯ ВЫПОЛНЕНИЯ.
Рzгистровый операнд,
непосредственное
битовое смещение:	6 такта;  0.3  мкс, при 20 МГц.
Операнд памяти,
непосредственное
битовое смещение:	8 тактов; 0.4  мкс, при 20 МГц.
Регистровый операнд,
регистровое
битовое смещение:	6 такта;  0.3  мкс, при 20 МГц.
Операнд памяти,
регистровое
битовое смещение:	13 тактов; 0.65 мкс, при 20 МГц.
ФЛАГИ.
     СF работает как описано в разделе "описание". Другие  флаги
остаются без изменений.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Те же, что и для инструкции АDD.
       ЙНННННННННННННННННННННННННННННННННННННННННННННННННННН»
       єВTS   Тестирование бита с последующей его установкойє
       ИННННННННННННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
ВТS
  z	       байт 0		  байт 1	     байт 2
	   - - - - - - - -    - - - - - - - -	 - - - - - - - -
Регистр/
Память,
Непосред-  0 0 0 0 1 1 1 1    1 0 1 1 1 0 1 0	 mоd:1 0 1: r/m
ственный
операнд.
	   8 - битные непо-
   z	   средственно дан-
	   ные.
Регистр/
Память,
Регистр.   0 0 0 0 1 1 1 1    1 0 1 0 1 0 1 1	 mоd: reg : r/m
			    - 219 -
			    ФУНКЦИЯ.
CF < (<битовое число> операнда источника );
<битовое число> источника < 1;
			   ОПИСАНИЕ.
    Тестирует  бит  b  передающего  операнда.  Флаг CF
устанавливается или сбрасывается соответствии с битом b.  Бит  b
устанавливается затем в 1.Эффективный адрес передающего операнда
указывается первым операндом,  а  битовое  смещение  указывается
вторым операндом (или непосредственным операндом).
    Заметим,  что  позиция  выбранного	бита   b   может   быть
получена непосредственным вычислением  в  инструкции  или  общим
регистром. При	непосредственном  подсчете  счетчик  берется  по
модулю	32,  таким  образом  диапазон  непосредственных  битовых
смещений находится  в  интервале  0...31.  Это	позволяет  иметь
доступ к любому регистру общего назначения. Для битовых стрингов
в памяти непосредственное поле дает только  битовое  смещение  в
пределах слова или двойного слова (WORD или DWORD).
    Ассемблер поддерживает  непосредственные  битовые  смещения
большие 31, используя непосредственное поле битового смещения  в
комбинации с позиционирующим полем операнда- источника в памяти.
Ассемблер обрабатывает	непосредственное  битовое  смещение  как
знаковое 32х разрядное число, находящееся  в  пределах	2  Гбит.
Младшие биты  непосредственного  битового  смещения  с	3  по  5
сохраняются в поле непосредственного битового смещения и старшие
биты  с  29  по  27  сдвигаются   и   комбинируются   с   байтом
позиционирования в данном режиме адресации.
    Когда передающий  операнд  находится  в  памяти,  процессор
80386  фактически  может  иметь   доступ   к   четырем	 байтам,
начинающимся с адреса памяти, задаваемого следующим образом
Эффективный адрес + (4*(битовое_смещение DIV 32))
для размера операнда DWORD (двойное слово), или для  двух  байт,
начинающиzся с адреса памяти, задаваемого следующим образом
Эффективный адрес + (4*(битовое_смещение DIV 16))
для размера операнда  WORD  (слово).  Следовательно  программист
должен заботиться о том, чтобы не  использовать  инструкцию  BTS
для ссылок в память  около  "дыр"  памяти,  таких  как  регистры
ввода/вывода, расположенные в памяти. Вместо  этого  используйте
инструкции  MOV  для  загрузки	и  сохранения  таких  адресов  и
регистровую форму  инструкции  BTS для манипулирования	битовыми
данными.
ПРИМЕР.
     ВТS     EAХ, 4
ВРЕМЯ ВЫПОЛНЕНИЯ.
Регистровый операнд,
непосредственное
битовое смещение:	6 такта;  0.3  мкс, при 20 МГц.
Операнд памяти,
непосредственное
битовое смещение:	8 тактов; 0.4  мкс, при 20 МГц.
Регистровый операнд,
регистровое
битовое смещение:	6 такта;  0.3  мкс, при 20 МГц.
Операнд памяти,
регистровое
битовое смещение:	13 тактов; 0.65 мкс, при 20 МГц.
			    - 220 -
ФЛАГИ.
     СF работает как описано в разделе "описание". Другие  флаги
остаются без изменений.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Те же, что и для инструкции АDD.
     ЙННННННННННННННННННННННННННННННННННННННННННННННННННННН»
     єCALL  Процедура вызова.(или защищенный режим задачи).є
     ИНННННННННННННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
		   байт 0	      байт 1	     Последующий(е)
	       - - - - - - - -	  - - - - - - - -	 байт(ы).
Внутри	теку-  1 1 1 0 1 0 0 0	  Полный адрес
щего кодового
сегмента пря-
мой    вызов,
полный адрес.
Внутри	теку-  1 1 1 1 1 1 1 1	  mоd:0 1 0: r/m
щего кодового
сегмента  не-
прямой	вызов
по абсолютно-
му смещению.
Прямой	 меж-  1 0 0 1 1 0 1 0	  абсолютное смещение,
сегментный.			  селектор сегмента.
Непрямой меж-  1 1 1 1 1 1 1 1	  mоd:0 1 1: r/m
сегментный.
			    ФУНКЦИЯ.
IF (размер_адреса = 32) THEN
BEGIN
  PUSH EIP;
  Перезагрузка EIP из операнда;        (CALL всегда изменяет
END						    EIP или IP)
ELSE
BEGIN
  PUSH IP;
  Перезагрузка EIP из операнда;        (CALL всегда изменяет
END						    EIP или IP)
IF CALL является межсегментным THEN
BEGIN
  PUSH CS;
  Перезагрузка CS из операнда;	       (межсегментный CALL
END						   изменяет CS)
			    - 221 -
			   ОПИСАНИЕ.
    CALL внутри текущего кодового сегмента  заносит  содержимое
указателя инструкций  в  стек.	Операнд  модифицирует  указатель
инструкций  для  начала  выполнения  подпрограммы.  Когда   CALL
производится внутри кодового сегмента регистр  CS  остается  без
изменений.
    Когда межсегментный CALL появляется в реальном  режиме  или
режиме виртуального 8086, указатель инструкций и CS регистр  оба
заносятся в стек и затем оба заменяются значениями операндов для
начала выполнения подпрограммы.
    Когда межсегментный CALL  появляется  в  защищенном  режиме
действия предпринимаемые  процессором  80386  могут  быть  очень
сложными  в  соответствии  с  тем   что   является   принимающим
селектором
    1. Кодовый сегмент на текущем уровне привилегий,(DPL = CPL)
    2. Кодовый	  сегмент      на    более    привилегированном
уровне,(DPL<=CPL)
    3. Переключатель вызовов,
    4. Сегмент состояния задачи, или
    5. Переключатель задач.
ПРИМЕР.
    CALL     SUBR_A
ПОДРОБНОСТИ РАБОТЫ В ЗАЩИЩЕННОМ РЕЖИМЕ.
ВЫЗОВ В НЕСООТВЕТСТВУЮЩИЙ (т.е. регулярный) КОДОВЫЙ СЕГМЕНТ
  RPL принимающего селектора должен быть численно <=  CPL  ИНАЧЕ
генерируется исключительная ситуация общей  защиты  (код  ошибки
селектора кодового сегмента).
  Дескриптор DPL должен быть численно = CPL  ИНАЧЕ  генерируется
исключительная	ситуация  общей  защиты  (код  ошибки  селектора
кодового сегмента).
  Селектор должен находиться  внутри  его  границ,  описанных  в
таблице дескрипторов ИНАЧЕ генерируется исключительная	ситуация
общей защиты  (код  ошибки  селектора  кодового  сегмента).
  Сегмент    должен    присутствовать	  ИНАЧЕ     генерируется
исключительная	ситуация  общей  защиты  (код  ошибки  селектора
кодового сегмента).
  Стек должен иметь  достаточное  пространство	чтобы  сохранить
адрес  возврата  ИНАЧЕ	генерируется  стековое	прерывание  (код
ошибки 0000h).
  Указатель  инструкции  должен   находиться   внутри	кодового
сегмента ИНАЧЕ генерируется исключительная ситуация общей защиты
(код ошибки 0000h).
  Загрузить дескриптор кодового сегмента в  кэш  CS  дескриптора
(не видно для программиста).
  Загрузить регистр CS значением селектора кодового сегмента.
  Загрузить EIP расширением нулями (новое смещение).
  IF размер операнда = 16 THEN EIP := EIP AND
0000FFFFh.
  Установить поле RPL регистра CS в CPL.
ВЫЗОВ В СООТВЕТСТВУЮЩИЙ КОДОВЫЙ СЕГМЕНТ
  DPL  должен  быть   численно	 <=   CPL   ИНАЧЕ   генерируется
исключительная	ситуация  общей  защиты  (код  ошибки  селектора
кодового сегмента).
  Селектор должен находиться в	границах,  описанных  в  таблице
дескрипторов ИНАЧЕ генерируется  исключительная  ситуация  общей
защиты (код ошибки селектора кодового сегмента).
			    - 222 -
  Индекс  сегмента  должен  присутствовать  ИНАЧЕ   генерируется
исключительная	ситуация  общей  защиты  (код  ошибки  селектора
кодового сегмента).
  Стек должен иметь  достаточное  пространство	чтобы  сохранить
адрес  возврата  ИНАЧЕ	генерируется  стековое	прерывание  (код
ошибки 0000h).
  Указатель  инструкции  должен   находиться   внутри	кодового
сегмента ИНАЧЕ генерируется исключительная ситуация общей защиты
(код ошибки 0000h).
  Загрузить дескриптор кодового сегмента в  кэш  CS  дескриптора
(не видно для программиста).
  Загрузить регистр CS значением селектора кодового сегмента.
  Загрузить EIP расширением нулями (новое смещение).
  IF размер операнда = 16 THEN EIP := EIP AND 0000FFFFh.
  Установить поле RPL регистра CS в CPL.
ВЫЗОВ В ПЕРЕКЛЮЧАТЕЛЬ ВЫЗОВОВ:
  Вызывающий переключатель DPL должен быть численно >= CPL ИНАЧЕ
генерируется исключительная ситуация общей  защиты  (код  ошибки
селектора вызывающего переключателя).
  Вызывающий переключатель DPL должен быть численно >= RPL ИНАЧЕ
генерируется исключительная ситуация общей  защиты  (код  ошибки
селектора вызывающего переключателя).
  Вызывающий   переключатель   должен	 присутствовать    ИНАЧЕ
генерируется исключительная ситуация общей  защиты  (код  ошибки
селектора вызывающего переключателя).
  Проверка найден ли селектор  кодового  сегмента  в  вызывающем
переключателе:
  Селектор  кода  не  должен  быть  нулем   ИНАЧЕ   генерируется
исключительная ситуация общей защиты (код ошибки 0000h).
  Селектор индекса должен  находиться  в  пределах  таблицы  его
дескриптора ИНАЧЕ  генерируется  исключительная  ситуация  общей
защиты (код ошибки селектора кодового сегмента).
  Байт AR выбранного дескриптора должен показывать сегмент  кода
ИНАЧЕ генерируется исключительная  ситуация  общей  защиты  (код
ошибки селектора кодового сегмента).
  DPL выбранного дескриптора  должен  быть  равен(?)  CPL  ИНАЧЕ
генерируется исключительная ситуация общей  защиты  (код  ошибки
селектора кодового сегмента).
  IF несоответствующий кодовый сегмент AND DPL < CPL
    THEN goto БОЛЬШАЯ ПРИВИЛЕГИЯ
    ELSE goto ТА ЖЕ ПРИВИЛЕГИЯ.
  Установить поле RPL регистра CS в CPL.
БОЛЬШАЯ ПРИВИЛЕГИЯ
  Считать  новый  селектор  SS	для  получения	 нового   уровня
  привилегий из TSS (Сегмент состояния задачи).
   проконтролировать селектор и дескриптор:
   селектор   не   должен   быть   нулем   ИНАЧЕ    генерируется
исключительная ситуация ошибки TSS (код ошибки 0000h).
   Селектор должен находиться в пределах таблицы его дескриптора
ИНАЧЕ генерируется исключительная  ситуация  общей  защиты  (код
ошибки селектора кодового сегмента).
   Селектор RPL должен численно = DPL  кодового  сегмента  ИНАЧЕ
генерируется исключительная  ситуация  ошибки  TSS  (код  ошибки
селектора стекового сегмента).
   Стековый сегмент DPL должен численно = DPL кодового	сегмента
ИНАЧЕ  генерируется  исключительная  ситуация  ошибки  TSS  (код
ошибки селектора стекового сегмента).
   Дескриптор должен указывать на данные, в которые  может  быть
произведена запись ИНАЧЕ  генерируется	исключительная	ситуация
ошибки TSS (код ошибки селектора стекового сегмента).
			    - 223 -
   Сегмент должен присутствовать ИНАЧЕ ошибка стека (код  ошибки
селектора стекового сегмента).
  IF размер операнда =32
  THEN
    Новый стек должен иметь  пространство  для	самокопирующихся
параметров (в любом случае)  плюс  16  байт  ИНАЧЕ  генерируется
исключительная ситуация общей защиты (код ошибки 0000h).
    EIP должен находиться в  пределах  кодового  сегмента  ИНАЧЕ
генерируется исключительная ситуация общей  защиты  (код  ошибки
0000h).
    Загрузить новое SS:ESP значение из сегмента состояния задачи
(TSS).
    Загрузить	новое	 CS:EIP    значение    из    вызывающего
переключателя.
  ELSE
    Новый стек должен иметь  пространство  для	самокопирующихся
параметров (в любом случае)  плюс   8  байт  ИНАЧЕ  генерируется
исключительная ситуация общей защиты (код ошибки 0000h).
    IP	должен находиться в  пределах  кодового  сегмента  ИНАЧЕ
генерируется исключительная ситуация общей  защиты  (код  ошибки
0000h).
    Загрузить новое SS:ESP значение из сегмента состояния задачи
(TSS).
    Загрузить	новое	 CS:IP	  значение    из     вызывающего
переключателя.
   Загрузить CS дескриптор в кэш CS дескриптора.
  Загрузить SS дескриптор в кэш SS дескриптора.
  Занести длинное слово указателя старого стека в новый стек.
  Забрать  счетчик   слов   из	 вызывающего   переключателя   и
маскировать его до 5 бит (значение от 0 до 31).
  Занести адрес возврата в новый стек.
  Установить CPL в стековый сегмент DPL.
  Установить поле RPL регистра CS в CPL.
ТА ЖЕ ПРИВИЛЕГИЯ:
  IF размер операнда = 32
  THEN
   Стек  должен  иметь	пространство  для  6-  байтового  адреса
возврата (растянутого до 8 байт) ИНАЧЕ ошибка стека (код  ошибки
0000h).
   EIP должен находиться  в  пределах  кодового  сегмента  ИНАЧЕ
генерируется исключительная ситуация общей  защиты  (код  ошибки
0000h).
   Загрузить новое CS:EIP значение из вызывающего переключателя.
  ELSE
   Стек  должен  иметь	пространство  для  4-  байтового  адреса
возврата (растянутого до 8 байт) ИНАЧЕ ошибка стека (код  ошибки
0000h).
    IP	должен находиться в  пределах  кодового  сегмента  ИНАЧЕ
генерируется исключительная ситуация общей  защиты  (код  ошибки
0000h).
    Загрузить	новое	 CS:IP	  значение    из     вызывающего
переключателя.
  Установить поле RPL регистра CS в CPL.
ВЫЗОВ В ПЕРЕКЛЮЧАТЕЛЬ ЗАДАЧ:
  Переключатель задач DPL должен  быть	численно  >=  CPL  ИНАЧЕ
генерируется исключительная  ситуация  ошибки  TSS  (код  ошибки
селектора переключателя).
  Переключатель задач должен численно >= RPL ИНАЧЕ  генерируется
исключительная	ситуация  ошибки  TSS  (код   ошибки   селектора
переключателя).
			    - 224 -
  Переключатель задач должен присутствовать  ИНАЧЕ  генерируется
исключительная	ситуация  отсутствия   (код   ошибки   селектора
переключателя).
  Проверить селектор в TSS данный в петеключателе задач:
   Должна быть описана таблица глобального дескриптора	(GDT)  в
бите табличного указателя (TI) ИНАЧЕ генерируется исключительная
ситуация ошибки TSS (код ошибки селектора  TSS).
   Индекс должен находиться в пределах	GDT  ИНАЧЕ  генерируется
исключительная ситуация ошибки TSS (код ошибки селектора TSS).
   Байт прав доступа дескриптора TSS должен описывать  незанятый
TSS ИНАЧЕ генерируется исключительная ситуация ошибки  TSS  (код
ошибки селектора TSS).
   Сегмент  состояния	задачи	 должен   присутствовать   ИНАЧЕ
генерируется  исключительная  ситуация	отсутствия  (код  ошибки
селектора TSS).
  ЗАДАЧИ-ПЕРЕКЛЮЧАТЕЛИ (с вложением, NT = 1 в EFLAG) для задачи,
заданной селектором TSS.
   EIP должен находиться  в  пределах  кодового  сегмента  ИНАЧЕ
генерируется исключительная ситуация общей  защиты  (код  ошибки
0000h).
ВЫЗОВ В СЕГМЕНТ СОСТОЯНИЯ ЗАДАЧИ:
  TSS  DPL  должен  быть  численно  >=	CPL  ИНАЧЕ  генерируется
исключительная ситуация ошибки TSS (код ошибки селектора TSS).
  TSS  DPL  должен  быть  численно  >=	RPL  ИНАЧЕ  генерируется
zисключительная ситуация ошибки TSS (код ошибки селектора TSS).
   Байт прав доступа дескриптора TSS должен описывать  незанятый
TSS ИНАЧЕ генерируется исключительная ситуация ошибки  TSS  (код
ошибки селектора TSS).
  Переключатель задач должен присутствовать  ИНАЧЕ  генерируется
исключительная	ситуация  отсутствия   (код   ошибки   селектора
переключателя).
  ЗАДАЧИ-ПЕРЕКЛЮЧАТЕЛИ (с вложением, NT = 1 в EFLAG) для задачи,
заданной селектором TSS.
  EIP должен  находиться  в  пределах  кодового  сегмента  ИНАЧЕ
генерируется исключительная ситуация общей  защиты  (код  ошибки
0000h).
ФЛАГИ.
    Все флаги остаются без изменений,  за  исключением	случаев
переключения задач в защищенном режиме.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Прерывание 13 генерируется, если  любая  часть  операнда  в
памяти имеет эффективный адрес больший, чем  FFFFh  в  сегментах
СS, DS, ЕS,  FS,  или  GS.  Если  любая  часть	операнда  памяти
имеет эффективный адрес больший, чем FFFFh в  стековом	сегменте
SS, то генерируется прерывание 12.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Общая исключительная ситуация защиты  (13)  генерируется  с
кодом ошибки 0000h для операндов, расположенных в сегментах  СS,
DS, ЕS, FS, или GS в случае, если принимающий операнд расположен
в сегменте, считывание из которого  запрещено  ,  а  также  если
любая часть операнда расположена  по  эффективному  адресу  выше
границы сегмента. Стековая исключительная ситуация (12) с  кодом
ошибки 0000h для операндов, расположенных в  стековом  сегменте,
генерируется  в  случае,  если	любая	часть	операнда   имеет
эффективный адрес выше границы сегмента. Стековая исключительная
			    - 225 -
ситуация с  кодом  ошибки  селектора  сегмента	возникает,  если
операнд в памяти находится в  стековом	сегменте  SS  ,  который
помечен как  отсутствующий  в  памяти.	Исключительная	ситуация
отсутствия(11) с кодом ошибки  селектора  сегмента  возникает  в
случае,  если  операнд	памяти	находится  в  каком  -	либо  из
сегментов DS, ЕS, FS, GS, отмеченном как  несуществующий.  Может
возникнуть исключительная ситуация потери страницы (14) с  кодом
ошибки потери линейным адресом ошибки страницы в  регистре  СR2.
Исключительная ситуация ошибки сегмента состояния задачи с кодом
ошибки селектора  для  входящих  в  TSS  генерируется  в  случае
выполнения переключения задач.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Те же,  что  и  для  реального  режима,  но  управляемые  в
защищенном режиме на уровне привилегий 0.  Формат  стека  уровня
привилегий 0  после  возникновения  исключительной  ситуации  (с
кодом ошибки) или  прерывания  (без  кода  ошибки)  показаны  на
рис.  12.2.  Показана  также  исключительная   ситуация   ошибки
страницы с кодом ошибки  потерянного  кода  и  линейным  адресом
ошибки страницы в регистре СR2.
	    ЙННННННННННННННННННННННННННННННННННННННН»
	    єCBW / CWDE Преобразование байта в словоє
	    є/ Преобразование слова в двойное слово.є
	    ИНННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
CBW / CWDE		 1 1 0 1 0 1 0 1
			    ФУНКЦИЯ.
IF (размер операнда - слово)		{ инструкция CBW }
THEN  AX <- расширенный знаком (AL);
ELSE  {размер операнда - двойное словоЪ  { инструкция CWDE }
     EAX <- расширенный знаком (AX);
			   ОПИСАНИЕ.
    CBW преобразует знаковый байт в AL в знаковое слово  в  AX.
CWDE преобразует знаковое слово в AX в знаковое двойное слово  в
EAX. Отметим, что CWDE отличается  от  CWD,  который  использует
DX:AX вместо EAX в качестве приемника.
ВРЕМЯ ВЫПОЛНЕНИЯ.
      3 такта; 0.15 мкс, при 20 МГц.
ФЛАГИ.
    Флаги не изменяются.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Нет.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Нет.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Нет.
			    - 226 -
	    ЙННННННННННННННННННННННННННННННННННННННН»
	    єCLC	     Обнулить флаг переноса.є
	    ИНННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
CLC			 1 1 1 1 1 0 0 0
			    ФУНКЦИЯ.
CF <- 0;
			   ОПИСАНИЕ.
    CLC обнуляет флаг переноса.
ПРИМЕР.
    CLC
ВРЕМЯ ВЫПОЛНЕНИЯ.
      2 такта; 0.1 мкс, при 20 МГц.
ФЛАГИ.
    CF работает как описано выше в разделе функция. Все  другие
флаги остаются без изменений.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Нет.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Нет.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Нет.
			    - 227 -
	   ЙНННННННННННННННННННННННННННННННННННННННННН»
	   єCLD 	    Обнулить флаг направления.є
	   ИННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
CLD			1 1 1 1 1 1 0 0
			    ФУНКЦИЯ.
DF <- 0;
			   ОПИСАНИЕ.
    CLD  обнуляет  флаг  направления.  После   исполнения   CLD
стринговые  инструкции	и  повторяющиеся  стринговые  инструкции
будут инкрементировать индексные регистры, используемые ими.
ПРИМЕР.
    CLD
ВРЕМЯ ВЫПОЛНЕНИЯ.
      2 такта; 0.1 мкс, при 20 МГц.
ФЛАГИ.
    DF работает как описано выше в разделе функция. Все  другие
флаги остаются без изменений.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Нет.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Нет.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Нет.
			    - 228 -
    ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
    єCLI   Обнулить флаг прерываний - запрещение прерываний.є
    ИНННННННННННННННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
CLI			1 1 1 1 1 0 1 0
			    ФУНКЦИЯ.
IF <- 0;
			   ОПИСАНИЕ.
    CLI  обнуляет  флаг  направления,  если  это  разрешено.  В
реальном режиме инструкция CLI всегда  разрешена.  В  защищенном
режиме или в режиме виртуального 8086, CPL должен быть	численно
<= IOPL для того, чтобы можно было выполнить команду CLI.
ПРИМЕР.
    CLI
ВРЕМЯ ВЫПОЛНЕНИЯ.
      3 такта; 0.15 мкс, при 20 МГц.
ФЛАГИ.
    IF работает как описано выше в разделе функция. Все  другие
флаги остаются без изменений.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Нет.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
    Исключительная ситуация общей защиты  (13)	генерируется  с
кодом ошибки 0000h, если CPL численно больше IOPL.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
    Исключительная ситуация общей защиты  (13)	генерируется  с
кодом ошибки 0000h, если IOPL численно меньше 3,  при  работе  в
режиме виртуального 8086 CPL всегда равен 3.
    "Отлавливание"  этой  инструкции  во  время  работы  режима
виртуального 8086 со значениями  IOPL  2,  1,  или  0  позволяет
супервизору защищенного  режима  виртуализировать  состояние  IF
наблюдаемое программным обеспечением виртуального 8086.
			    - 229 -
      ЙННННННННННННННННННННННННННННННННННННННННННННННННННН»
      єCLTS	     cброс флага переключателя задач в CROє
      ИНННННННННННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ:
			    Байт 0	     Байт 1
       CLTS		0 0 0 0 1 1 1 1  0 0 0 0 0 1 1 0
			    ФУНКЦИЯ:
	TS <Д 0;
			   ОПИСАНИЕ:
   В   соответствии   с   условием   CLTS   устанавливает   флаг
переключения задач. В реальном режиме CLTS всегда допускает  эту
операцию, поскольку он может быть  желателен  при  инициализации
для защищенного режима. В защищенном режиме CPL  должен  быть  0
для того, чтобы CLTS выполнил эту операцию.
ПРИМЕР:
       CLTS
ВРЕМЯ ВЫПОЛНЕНИЯ:
		 5 тактов;  0,25 мкс при 20 МГц.
ФЛАГИ:
   TS в режиме CR0  описывается  в  разделе  ФУНКЦИЯ  выше.  Все
другие флаги в CR0 и EFLAG не изменяются.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕАЛЬНОГО РЕЖИМА:
Нет. Эта команда выполняется в реальном режиме для инициализации
в защищенном режиме.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ ЗАЩИЩЕННОГО РЕЖИМА:
Исключительная ситуация "по стандартной защите" (исключение  13)
дается	с  кодом  ошибки  0000h,  если	 CPL   не   0	(уровень
супервизора).
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕЖИМА ВИРТУАЛЬНОГО 8086.
Нет.
			    - 230 -
	 ЙННННННННННННННННННННННННННННННННННННННННННННН»
	 єCMC	      Дополнение бита переноса в EFLAG.є
	 ИНННННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ:
	CMC	     1 1 1 1 0 1 0 1
			    ФУНКЦИЯ:
	CF <Д  CF;
			   ОПИСАНИЕ:
   CLC дополняет текущий флаг.
ПРИМЕР:
       CMC
ВРЕМЯ ВЫПОЛНЕНИЯ:
		 2 такта; 0,1 мкс при 20 МГц.
ФЛАГИ:
CF описывается в разделе  ФУНКЦИЯ  выше.  Все  другие  флаги  не
изменяются.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕАЛЬНОГО РЕЖИМА:
Нет.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ ЗАЩИЩЕННОГО РЕЖИМА:
Нет.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕЖИМА ВИРТУАЛЬНОГО 8086:
Нет.
			    - 231 -
		  ЙННННННННННННННННННННННННННН»
		  єCMP	   Сравнение операндовє
		  ИНННННННННННННННННННННННННННј
			    ФОРМАТ.
				  байт 0	     байт 1
			      - - - - - - - -	 - - - - - - - -
Регистр - Регистр	      0 0 1 1 1 0 d w	 mоd: reg : r/m
Регистр - Память	      0 0 1 1 1 0 0 w	 mоd: reg : r/m
Память	- Регистр	      0 0 1 1 1 0 1 w	 mоd: reg : r/m
Непосредственный операнд -    1 0 0 0 0 0 s w	 mоd:1 1 1: r/m
- Регистр / Память
			      Непосредствен -
			      ный(е)  байт(ы)
			      данных.
Непосредственный операнд -    0 0 0 1 0 1 0 w	 Непосредствен -
- Регистр АL, АХ, или ЕАХ			 ный(е)  байт(ы)
(короткая команда)				 данных.
ФУНКЦИЯ.
     Приeмник ДД Источник;  (воздействует только на EFLAG)
или:
     Приемник ДД Непосредственные данные;
			    (воздействует только на EFLAG)
			   ОПИСАНИЕ.
 Сравним  операнды  или  операнд  с  непосредственными	данными.
Для   сравнения   операнды   вычитаются,   но	результаты    не
запоминаются. Воздействуются только флаги.
ПРИМЕР.
     CMP    ЕСХ, ЕDХ
ВРЕМЯ ВЫПОЛНЕНИЯ.
Регистр - Регистр:     2 такта;  0.1  мкс, при 20 МГц.
Регистр - Память:      6 тактов; 0.3 мкс, при 20 МГц.
Память	- Регистр:     5 тактов; 0.25 мкс, при 20 МГц.
Непосредственный
операнд - Регистр:     2 такта;  0.1  мкс, при 20 МГц.
Непосредственный
операнд - Память:      6 тактов; 0.3 мкс, при 20 МГц.
ФЛАГИ.
     ОF, СF, SF, ZF, АF и РF работают как описано в приложении А.
Другие флаги остаются без изменений.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Те же, что и для инструкции АDD.
			    - 232 -
	ЙННННННННННННННННННННННННННННННННННННННННННННННН»
	єCMPSB/CMPSW/CMPSD    Сравнение строковых данныхє
	ИНННННННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ:
	CMPSB/CMPSW/CMPSD     1 0 1 0 0 1 1 w
			    ФУНКЦИЯ:
   Источник--Приемник;	(сравнение влияет только на EFLAG)
   IF(ADRESS SIZE=32) THEN
      ADJUST ESI and EDI; (регулировка индексов для источника
			    и приемника)
   ELSE (ADRESS SIZE=16)
      ADJUST SI and DI;
			   ОПИСАНИЕ:
Происходит сравнение операндов двух  аналогичных  строк  памяти.
Считается, что строки представляют собой массивы  бАЙТОВ,  СЛОВ,
ДВОЙНЫх  СЛОВ  в  зависимости  от  размера  операнда   строковой
команды. После того как сравнение произведено,	регистр  индекса
источника и регистр индекса приемника автоматически продвигаются
(увеличиваются	или  уменьшаются,  согласно  DF)  до  достижения
размера операнда. Если размер адреса команды составляет  ДВОЙНОЕ
СЛОВО, операнд строки источника-[ESI], тогда как операнд  строки
приемника-ES:[EDI]. Другими словами, операндами являются [SI]  и
[DI]. Загрузим	величины  индекса  коррекции  перед  выполнением
CMPS.
Заметим, что управление вычитанием дается  как	[ESI]-[EDI]  или
[SI]-[DI]. Левый операнд-это источник,	а  правый-приемник.  Это
действие обратно обычному соглашению  INTEL,  используемому  для
SUB,  SBB  и  CMP  команд,   где   левый   операнд-приемник,   а
правый-источник.
ПРИМЕР:
       CMPSB	    ;  сравнивает операнды BYTE со строками BYTE
или
 REPE CMPSB	    ;	повторяет  команду,  пока  не  наступает
			сравнение, и регистр ECX не заполняется
			(см. стр.458)
или
 REPNE	 CMPSB;    повторяет   команду,   пока	 сравнение    не
		   закончилось, и ECX регистр не  заполнен  (см.
		   стр. 459)
Поскольку регистры источника и приемника должны  быть  загружены
для выполнения этой команды,  CMPSB/W/D  часто	зацикливаются  и
используются для нескольких итераций.
ВРЕМЯ ВЫПОЛНЕНИЯ:
Неповторяющееся:    10 тактов;	0,5 мкс при 20 МГц
Повторяющееся:	  5+9n тактов;	0,25+0,45n мкс при 20 МГц
(n-число выполняемых итераций)
ФЛАГИ:
OF, CF, SF, ZF, AF, и PF действуют, как описано в приложении  А.
Другие флаги не изменяются.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕАЛЬНОГО РЕЖИМА:
Такие же, как для команды ADD.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ ЗАЩИЩЕННОГО РЕЖИМА:
Такие же, как для команды ADD.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕЖИМА ВИРТУАЛЬНОГО 8086:
Такие же, как для команды ADD.
			    - 233 -
       ЙННННННННННННННННННННННННННННННННННННННННННННННННН»
       єCWD/CDQ    Преобразование СЛОВА в ДВОЙНОЕ СЛОВО /є
       є Преобразование ДВОЙНОГО СЛОВА в ЧЕТВЕРНОЕ СЛОВО є
       ИНННННННННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ:
       CWD/CDQ		1 0 0 1 1 0 0 1
			    ФУНКЦИЯ:
IF(OPERAND SIZE IS WORD)	 (Команда CWD)
THEN  DX:AX <ДД SIGN-EXTEND(AX);
ELSE			      (Размер операнда-DWORD;команда-CDQ)
    EDX:EAX <ДД SIGN-EXTEND(EAX);
			   ОПИСАНИЕ:
CWD преобразует знаковое слово в AX в знаковое двойное	слово  в
DX:AX. CWDE преобразует знаковое двойное слово в EAX в	знаковое
четверное слово  в  EDX:EAX.  Заметим,	что  CWD  отличается  от
команды CWDE, которая использует EAX,  а  не  DX:AX  в	качестве
приемника.
ВРЕМЯ ВЫПОЛНЕНИЯ:
2 такта; 0,1 мкс при 20 МГц
ФЛАГИ:
Ни один не задействован.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕЖИМОВ РЕАЛЬНОГО:
			      ЗАЩИЩЕННОГО:
			ВИРТУАЛЬНОГО 8086:
Нет.
	ЙНННННННННННННННННННННННННННННННННННННННННННННННН»
	єDAA	   Десятичная установка AL после сложенияє
	ИННННННННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ:
       DAA	     0 0 1 0 0 1 1 1
			    - 234 -
ФУНКЦИЯ:
IF((AL AND 0Fh)>9) OR (AF=1) THEN
BEGIN				     (начать установку)
  AL <ДД (AL+6);		     (вызывает перегруппировку в
				      нижнем полубайте AL)
  AF <ДД 1;
END;
ELSE
  AF <ДД 0;		   (установка в нижнем полубайте не нужна)
  IF (AL > 9Fh) OR (CF=1) THEN
BEGIN				     (начать установку)
  AL <ДД (AL+60h);		     (вызывает перегруппировку в
				      верхнем полубайте AL)
  CF <ДД 1;
END;
ELSE
  CF <ДД 0;		  (установка в верхнем полубайте не нужна)
			   ОПИСАНИЕ:
Эта команда может  быть  использована  после  сложения,  которое
оставляет 2 цифры BCD в регистре AL. Если результаты вычитания в
одном  или  обоих   полубайтах	 превышают   9,   DAA	вызывает
соответствующий перезагрузчик этих полубайтов в  регистре  AL  и
устанавливает такие флаги,  при  которых  может  быть  выполнено
сложение на более значащих байтах многобайтных операндов.
ПРИМЕР:
ADC	 AL, BL    ; заметим, что AL должен быть приемником
DAA		   ; установка AL для упакованного BCD (десятич-
		     ного) формата
Команды  ADC  и  DAA  часто  заключены	внутри	цикла,	 который
складывает упакованные BCD величины (десятичные  величины)  байт
за байтом, начиная с наименее значащего байта.
ВРЕМЯ ВЫПОЛНЕНИЯ:
4 такта;  0,2 мкс при 20 МГц
ФЛАГИ:
CF  и  AF  описаны  в  разделе	ФУНКЦИЯ  выше.	OF,SF,ZF  и   PF
неопределены. Другие флаги не изменяются.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕЖИМОВ РЕАЛЬНОГО:
			      ЗАЩИЩЕННОГО:
			ВИРТУАЛЬНОГО 8086:
Нет.
			    - 235 -
	  ЙНННННННННННННННННННННННННННННННННННННННННННН»
	  єDAS	   Десятичная установка после вычитанияє
	  ИННННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ:
		  DAS	      0 0 1 0 1 1 1 1
			    ФУНКЦИЯ:
IF((AL AND 0Fh)>9) OR (AF=1) THEN
BEGIN				     (начать установку)
  AL <ДД (AL-6);		     (вызывает перегруппировку в
				      нижнем полубайте AL)
  AF <ДД 1;
END;
ELSE
  AF <ДД 0;		   (установка в нижнем полубайте не нужна)
  IF (AL > 9Fh) OR (CF=1) THEN
BEGIN				     (начать установку)
  AL <ДД (AL-60h);		     (вызывает перегруппировку в
				      верхнем полубайте AL)
  CF <ДД 1;
END;
ELSE
  CF <ДД 0;		  (установка в верхнем полубайте не нужна)
			   ОПИСАНИЕ:
Эта команда может  быть  использована  после вычитания,  которое
оставляет 2 цифры BCD в регистре AL. Если результаты вычитания в
одном  или  обоих   полубайтах	 превышают   9,   DAS	вызывает
соответствующий перезагрузчик этих полубайтов в  регистре  AL  и
устанавливает такие флаги,  при  которых  может  быть  выполнено
вычитание на более значащих байтах многобайтных операндов.
ПРИМЕР:
SBB	 AL, BL    ; заметим, что AL должен быть приемником
DAS		   ; установка AL для упакованного BCD (десятич-
		     ного) формата
Команды  SBB  и  DAS  часто  заключены	внутри	цикла,	 который
вычитает   упакованные BCD величины (десятичные  величины)  байт
за байтом, начиная с наименее значащего байта.
ВРЕМЯ ВЫПОЛНЕНИЯ:
4 такта;  0,2 мкс при 20 МГц
ФЛАГИ:
CF  и  AF  описаны  в  разделе	ФУНКЦИЯ  выше.	OF,SF,ZF  и   PF
неопределены. Другие флаги не изменяются.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕЖИМОВ РЕАЛЬНОГО:
			      ЗАЩИЩЕННОГО:
			ВИРТУАЛЬНОГО 8086:
Нет.
			    - 236 -
	       ЙННННННННННННННННННННННННННННННННН»
	       єDEC		  Уменьшение на 1є
	       ИНННННННННННННННННННННННННННННННННј
			    ФОРМАТ:
	DEC			 байт 0 	    байт 1
Регистр/Память		      1 1 1 1 1 1 1 w  mod: 0 0 1 : r/m
Регистр (WORD или DWORD)
(короткое кодирование)	      0 1 0 0 1 : reg
			    ФУНКЦИЯ:
   Приемник <ДД Приемник-1
			   ОПИСАНИЕ:
DEC вычитает 1 из операнда. DEC, однако, не воздействует на  CF.
Чтобы воздействовать также и на CF, используется команда  SUB  с
непосредственной величиной 1.
ПРИМЕР:
       DEC   EBX
Если EBX=FFAD9034h, то в результате описанной выше  команды  DEC
EBX приписывается значение FFAD9033h.
ВРЕМЯ ВЫПОЛНЕНИЯ:
Уменьшение Регистра:	2 такта;  0,1 мкс при 20 МГц
Уменьшение Памяти:	6 тактов;  0,3 мкс при 20 МГц
ФЛАГИ:
OF, CF, SF, ZF, AF, и PF действуют, как описано в приложении  А.
Другие флаги не изменяются.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕАЛЬНОГО РЕЖИМА:
Такие же, как для команды ADD.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ ЗАЩИЩЕННОГО РЕЖИМА:
Такие же, как для команды ADD.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕЖИМА ВИРТУАЛЬНОГО 8086:
Такие же, как для команды ADD.
			    - 237 -
	  ЙННННННННННННННННННННННННННННННННННННННННННН»
	  єDIV			    Незнаковое делениеє
	  ИНННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ:
	DIV		    Байт 0	     Байт 1
      AL|AX|EAX
      регистром-       1 1 1 1 0 1 1 w	mod: 1 1 0 r/m
      памятью
			    ФУНКЦИЯ:
	AL|AX|EAX <ДД AX|DX:AX|EDX:EAX	/ SOURCE;
		      (частное незнакового деления)
	AH|DX|EDX <ДД REMAINDER;
			   ОПИСАНИЕ:
   DIV выполняет деление без знака. Операнд называется делитель.
В зависимости от размера операнда, т.е. BYTE,  WORD  или  DWORD,
команда DIV использует регистр(ы) AX|DX:AX|EDX:EAX как	источник
делимого, и регистр AL|AX|EAX для  частного.  Регистр  AH|DX|EDX
содержит остаток деления.
ПРИМЕР:
       DIV    ECX
Если EDX=000005D2h и EAX=60F40000h,  а	ECX=00BC5200h,	тогда  в
результате команды DIV	EAX=00075A00h  (частное),  EDX=00000000h
(остаток). ECX неизменяется.
ВРЕМЯ ВЫПОЛНЕНИЯ:
Количество времени, требуемое для выполнения команды, зависит от
размера делимого.
16-битовое делимое:	 19 тактов;  0,95 мкс при 20 МГц
32-битовое делимое:	 27 тактов;  1,35 мкс при 20 МГц
62-битовое делимое:	 43 такта;   2,15 мкс при 20 МГц
ФЛАГИ:
OF и CF действуют,  как описано  в  приложении А. SF,ZF,AF и PF
неопределены. Другие флаги не изменяются.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕАЛЬНОГО РЕЖИМА:
Прерывание   0,   если	 частное    слишком    большое,    чтобы
соответствовать  регистру,   обозначенному   AL|AX|EAX.   Другие
исключения такие же, как для команды ADD.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ ЗАЩИЩЕННОГО РЕЖИМА:
Исключение деления (исключение 0), если частное слишком большое,
чтобы соответствовать  регистру,  обозначенному  AL|AX|EAX.  Для
исключения 0 код ошибки не засылается в стек. Другие  исключения
такие же, как для команды ADD.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕЖИМА ВИРТУАЛЬНОГО 8086.
См. исключения защищенного режима.
			    - 238 -
   ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
   єENTER    Установка стековой рамки для параметров процедурыє
   ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ:
	ENTER		 1 1 0 0 1 0 0 0   16-битовое смещение
					   8-битовый уровень
			    ФУНКЦИЯ:
   LEVEL <ДД LEVEL MOD 32
   IF OPERAND SIZE=16 THEN PUSH(BP) ELSE PUSH(EBP);
   FRAME POINTER <ДД ESP;
   IF LEVEL > 0 THEN
   BEGIN
      FOR I=1 TO (LEVEL-1)
      DO    IF OPERAND SIZE=16 THEN
	BEGIN
	  BP <ДД BP-2;
	  PUSH(BP);
	END
	ELSE
	BEGIN
	  EBP <ДД EBP-4;
	  PUSH(EBP);
	END
      END
      PUSH(FRAME POINTER);
   END
   IF (OPERAND SIZE=16) THEN
     BP <ДД FRAME POINTER;
   ELSE
     EBP <ДД FRAME POINTER;
   IF ADRESS SIZE=16 THEN
     SP <ДД SP-FIRST OPERAND;
   ELSE
     ESP <ДД ESP-FIRST OPERAND;
			   ОПИСАНИЕ:
ENTER  создает	рамку  стека,  требуемую   большинством   языков
высокого уровня с блочной структурой. Первый операнд  отличается
количеством байтов динамической памяти,  расположенной	в  стеке
для входных программ. Второй операнд дает лексический  вложенный
уровень (0-31) программы внутри источника  кода  языка	высокого
уровня. Это определяет число точек стековой рамки, копируемых  в
новую рамку стека из предыдущей рамки стека. BP (или  EBP,  если
признак размера операнда 32 бита)-текущий указатель рамки стека.
			    - 239 -
   Если признак размера операнда-16 бит, процессор использует BP
как указатель рамки, а SP как указатель стека.
   Если размер операнда 32 бита, процессор  использует	EBP  для
указателя рамки, а ESP как указатель на стек.
   Если второй операнд-0, ENTER засылает указатель рамки (BP или
EBP) на стек. ENTER тогда вычитает первый операнд  из  указателя
стека  и  устанавливает  указатель  рамки  на  текущее	значение
указателя стека.
ПРИМЕР:
       ENTER	12,0
Например, процедура  12-ю  байтами  локальной  переменной  будет
означать ENTER 12 команды 0 (или приведет ENTER 12 команды 0)  в
точку входа и  LEAVE-команды  перед  каждым  RET.  12  локальных
байтов будут означать отрицательное смещение из указателя рамки.
ВРЕМЯ ВЫПОЛНЕНИЯ:
 5 тактов;  0,2 мкс при 20 МГц
ФЛАГИ:
Ни один не задействован.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕАЛЬНОГО РЕЖИМА:
Нет.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ ЗАЩИЩЕННОГО РЕЖИМА:
Исключение   0,   если	 частное    слишком    большое,    чтобы
соответствовать   регистру,   обозначенному    AL|AX|EAX.    Для
исключения 0 код ошибки не засылается в стек. Другие  исключения
такие же, как для команды ADD.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕЖИМА ВИРТУАЛЬНОГО 8086.
Исключительная ситуация "по стандартной защите" (исключение  13)
идет  с  кодом	ошибки	0000h.	HLT  является  привилегированной
командой, которая может быть выполнена только при приоритете  0.
В режиме виртуальном 8086 80386 работает с уровнем привилегии 3.
			    - 240 -
	       ЙНННННННННННННННННННННННННННННННННН»
	       єHLT	   Остановка до прерыванияє
	       ИННННННННННННННННННННННННННННННННННј
			    ФОРМАТ:
	HALT	     1 1 1 1 0 1 0 0
			    ФУНКЦИЯ:
	Процессор приходит в состояние останова.
			   ОПИСАНИЕ:
   Никаких других команд не выполняется  до  тех  пор,	пока  не
получено  прерывание  или  до  тех  пор,   пока   процессор   не
установлен. Маскируемое  прерывание  (вывод  INTR)  должен  быть
узнаваем. Немаскируемое прерывание всегда узнаваемо.
ПРИМЕР:
       HLT
   HALTы 80386 останавливаются неопределенно до  тех  пор,  пока
прерывание не распознается. Команда  обычно  используема  только
когда  не  существует  другой  работы,	которую  система   может
выполнять до тех пор, пока не наступит внешнее прерывание.
ВРЕМЯ ВЫПОЛНЕНИЯ:
		 5 тактов; 0,25 мкс при 20 МГц.
ФЛАГИ:
Ни один не задействован.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕАЛЬНОГО РЕЖИМА:
Нет.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ ЗАЩИЩЕННОГО РЕЖИМА:
Исключительная ситуация "по стандартной  защите"  идет  с  кодом
ошибки 0000h, если текущий уровень привилегии не 0.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕЖИМА ВИРТУАЛЬНОГО 8086.
Исключительная ситуация "по стандартной защите" (исключение  13)
идет  с  кодом	ошибки	0000h.	HLT  является  привилегированной
командой, которая может быть выполнена только при приоритете  0.
В режиме виртуальном 8086 80386 работает с уровнем привилегии 3.
			    - 241 -
	   ЙНННННННННННННННННННННННННННННННННННННННННН»
	   єIDIV	      Целое (знаковое) делениеє
	   ИННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ:
       IDIV		    Байт 0	     Байт 1
		       1 1 1 1 0 1 1 w	mod: 1 1 0 r/m
			    ФУНКЦИЯ:
	AL|AX|EAX <ДД AX|DX:AX|EDX:EAX	/ SOURCE;
		      (частное знакового деления)
	AH|DX|EDX <ДД REMAINDER;
			   ОПИСАНИЕ:
  IDIV выполняет знаковое деление.  Операнд называется делитель.
В зависимости от размера операнда, т.е. BYTE,  WORD  или  DWORD,
команда IDIV использует регистр(ы) AX|DX:AX|EDX:EAX как источник
делимого, и регистр AL|AX|EAX для  частного.  Регистр  AH|DX|EDX
содержит остаток деления.
ПРИМЕР:
      IDIV    ECX
Если EDX=000005D2h и EAX=60F40000h,  а	ECX=00BC5200h,	тогда  в
результате команды IDIV EAX=00075A00h  (частное),  EDX=00000000h
(остаток). ECX не изменяется.
ВРЕМЯ ВЫПОЛНЕНИЯ:
Количество времени, требуемое для выполнения команды, зависит от
размера делимого.
16-битовое делимое:	 19 тактов;  0,95 мкс при 20 МГц
32-битовое делимое:	 27 тактов;  1,35 мкс при 20 МГц
62-битовое делимое:	 43 такта;   2,15 мкс при 20 МГц
ФЛАГИ:
OF и CF действуют,  как описано  в  приложении A. SF,ZF,AF и PF
неопределены. Другие флаги не изменяются.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕАЛЬНОГО РЕЖИМА:
Прерывание   0,   если	 частное    слишком    большое,    чтобы
соответствовать   регистру,   обозначенному    AL|AX|EAX.    Для
исключения   0	 код	ошибки	  не	засылается    в    стек.
Другие исключения такие же, как для команды ADD.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ ЗАЩИЩЕННОГО РЕЖИМА:
Исключение деления (исключение 0), если частное слишком большое,
чтобы соответствовать  регистру,  обозначенному  AL|AX|EAX.  Для
исключения 0 код ошибки не засылается в стек. Другие  исключения
такие же, как для команды ADD.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕЖИМА ВИРТУАЛЬНОГО 8086.
См. исключения защищенного режима.
			    - 242 -
	  ЙНННННННННННННННННННННННННННННННННННННННННННН»
	  єIMUL 	       Целое знаковое умножениеє
	  ИННННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ.
IMUL
		      байт 0		 байт 1       байт 2
		 - - - - - - - -  - - - - - - - -  - - - - - - -
Регистр-
Регистр/Память	 0 0 0 0 1 1 1 1  1 0 1 0 1 1 1 1  mоd: reg : r/m
AL|AX|EAX c
Регистр/Память	 1 1 1 1 0 1 1 w   mоd: 1 1 0 r/m
(короткое
 кодирование)
Регистр/Память	 0 1 1 0 1 0 s 1   mоd: reg : r/m
Непосредственный
операнд в Регистр
				   Непосредствен -
				   ный(е)  байт(ы)
				   данных.
			    ФУНКЦИЯ.
     DESTINATION <ДД DESTINATION * SOURCE;  (знаковое умножение)
или:
 DESTINATION  <ДД  DESTINATION	*  IMMEDIATE   DATA;   (знаковое
						       умножение)
			   ОПИСАНИЕ.
IMUL  выполняет  знаковое  умножение.  Различные  формы  команды
существуют, как показано в ФОРМАТ выше.
ПРИМЕР.
    IMUL    ЕСХ, ЕDХ
Если ECX=00000034h, а EDX=FFFFFF52h, тогда в результате  команды
IMUL ECX присваивается FFFFDCA8h.
ВРЕМЯ ВЫПОЛНЕНИЯ.
IMUL использует алгоритм раннего  окончания.  Обычно  количество
циклов, требуемое для завершения выполнения команды, зависит  от
позиции значащего бита в оптимизирующем умножителе.
Регистр - Регистр:     9-41 тактов;  0.45-2.05 мкс, при 20 МГц.
Регистр - Память:      12-44 тактов; 0.6-2.2 мкс, при 20 МГц.
Память	- Регистр:     12-44 тактов; 0.6-2.2 мкс, при 20 МГц.
Непосредственный
операнд - Регистр:     9-38 тактов;  0.45-1.9  мкс, при 20 МГц.
Непосредственный
операнд - Память:      12-41 тактов; 0.6-2.05 мкс, при 20 МГц.
ФЛАГИ.
OF и CF действуют,  как описано  в  приложении A. SF,ZF,AF и PF
неопределены. Другие флаги не изменяются.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ ЗАЩИЩЕННОГО РЕЖИМА.
     Те же, что и для инструкции АDD.
ИСКЛЮЧЕНИЯ ДЛЯ РЕЖИМА ВИРТУАЛЬНОГО 8086.
     Те же, что и для инструкции АDD.
			    - 243 -
	      ЙНННННННННННННННННННННННННННННННННННН»
	      єIN	  Вход из адреса Ввод/Выводє
	      ИННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ:
	IN
Из непосредственного	   1 1 1 0 0 1 0 w  8-битовый номер порта
порта (00-FFh)
Из порта, названного DX    1 1 1 0 1 1 0 w
(0000-FFFFh)
			    ФУНКЦИЯ:
   [PORT DX] <ДД SOURCE;    (входные данные)
			   ОПИСАНИЕ:
Операнд вводится из порта, названного  DX  регистром  или  полем
непосредственных  данных.  Операнд  вводится   в   AL|AX|EAX   в
зависимости от размера	операнда  команды  строки:  BYTE,  WORD,
DWORD.
Команда всегда доступна в реальном режиме. В  защищенном  режиме
эта команда всегда разрешена, когда CPL < IOPL. Когда CPL > IOPL
в защищенном режиме, разрешение  ввода/вывода  битового  массива
ограничивается, если команда разрешена. Все соответствующие биты
битового массива  разрешения  ввода/вывода  должны  быть  0  для
продолжения ввода/вывода. В режиме виртуальном	8086  разрешение
ввода/вывода битового массива всегда определено, если команда IN
разрешена.
ПРИМЕР:
       IN	; вводится операнд из порта
			    - 244 -
ВРЕМЯ ВЫПОЛНЕНИЯ:
Реальный режим:
Непосредственный порт:	12 тактов;  0,6 мкс при 20 МГц
Переменный порт:	13 тактов;  0.65 мкс при 20 МГц
Защищенный режим, CPL < IOPL
Непосредственный порт:	6 тактов; 0.3 мкс при 20 МГц
Переменный порт:	7 тактов; 0.35 мкс при 20 МГц
Защищенный режим, CPL > IOPL
Непосредственный порт: 26 тактов; 1.3 мкс при 20 МГц
Переменный порт:       27 тактов; 1.35 мкс при 20 МГц
Режим виртуальный 8086:
Непосредственный порт: 26 тактов; 1.3 мкс при 20 МГц
Переменный порт:       17 тактов; 1.35 мкс при 20 МГц
ФЛАГИ:
Ни один не задействован.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
Те же, что и для инструкции АDD.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ ЗАЩИЩЕННОГО РЕЖИМА:
Если CPL > IOPL, разрешение ввода/вывода битового массива должно
позволять  ввод/вывод  всех  задействованных  байтовых	 портов.
Другие исключения такие же как для команды ADD.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕЖИМА ВИРТУАЛЬНОГО 8086:
Разрешение  ввода/вывода  битового  массива   должно   позволять
ввод/вывод  всех   задействованных   байтовых	портов.   Другие
исключения такие же как для команды ADD.
			    - 245 -
	       ЙННННННННННННННННННННННННННННННННН»
	       єINC		  Увеличение на 1є
	       ИНННННННННННННННННННННННННННННННННј
			    ФОРМАТ:
	INC			 байт 0 	    байт 1
Регистр/Память		      1 1 1 1 1 1 1 w  mod: 0 0 0 : r/m
Регистр (WORD или DWORD)
(короткое кодирование)	      0 1 0 0 0 : reg
			    ФУНКЦИЯ:
   Приемник <ДД Приемник+1
			   ОПИСАНИЕ:
INC добавляет 1 к операнду. INC, однако, не воздействует на  CF.
Чтобы воздействовать также и на CF, используется команда  ADD  с
непосредственной величиной 1.
ПРИМЕР:
       INC   EBX
Если EBX=FFAD9034h, то в результате описанной выше  команды  INC
EBX приписывается значение FFAD9035h.
ВРЕМЯ ВЫПОЛНЕНИЯ:
Увеличение Регистра:	2 такта;  0,1 мкс при 20 МГц
Увеличение Памяти:	6 тактов;  0,3 мкс при 20 МГц
ФЛАГИ:
OF, CF, SF, ZF, AF, и PF действуют, как описано в приложении  А.
Другие флаги не изменяются.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕАЛЬНОГО РЕЖИМА:
Такие же, как для команды ADD.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ ЗАЩИЩЕННОГО РЕЖИМА:
Такие же, как для команды ADD.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕЖИМА ВИРТУАЛЬНОГО 8086:
Такие же, как для команды ADD.
			    - 246 -
  ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
  єINSB/INSW/INSD   Вход строковых данных из адреса Ввод/Выводє
  ИНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ:
	INSB/INSW/INSD	1 0 1 0 0 1 1 w
			    ФУНКЦИЯ:
   [PORT DX] <ДД [SOURCE];    (входные данные)
   IF (ADRESSSIZE = 32) THEN
     ADJUST EDI;
   ELSE      (adresssize = 16)
     ADJUST DI;
			   ОПИСАНИЕ:
Операнд вводится из порта, названного  DX  регистром,  в  строку
памяти приемника. Считается, что строка  источника  должна  быть
массивом BYTE, WORD, DWORD, в  зависимости  от	размера  оеранда
команды строки.  После	того,  как  ввод  произведен,  индексный
регистр приемника автоматически  продвигается  (уменьшается  или
увеличивается согласно DF) на число, равное размеру операнда.
Если размер адреса  команды  -	ДВОЙНОЕ  СЛОВО,  операнд  строки
приемника  -  ES:[EDI].  В  противном  случае  операнд	ES:[DI].
Загрузка правильных индексных чисел происходит перед выполнением
INS.
ПРИМЕР:
       INS	; вводятся операнды ДВОЙНЫХ.СЛОВ из порта DX
или
REP    INSD	; повторение INS до тех пор, пока ECX не окончен
Поскольку индексный регистр источника должен быть  загружен  для
использования  этой  команды,  INSB/W/D  часто	 зацикливают   и
используют для нескольких итераций.
ВРЕМЯ ВЫПОЛНЕНИЯ:
Реальный режим:
Неповторяющийся:  15 тактов;  0,75 мкс при 20 МГц
Повторяющийся:	  13+6n тактов;  0.65+0.3n мкс при 20 МГц
Защищенный режим, CPL < IOPL
Неповторяющийся:  9 тактов;  0,45 мкс при 20 МГц
Повторяющийся:	  7+6n тактов;	0.35+0.3n мкс при 20 МГц
Защищенный режим, CPL > IOPL
Неповторяющийся:  29 тактов;  1,45 мкс при 20 МГц
Повторяющийся:	  27+6n тактов;  1.35+0.3n мкс при 20 МГц
Режим виртуальный 8086:
Неповторяющийся:  29 тактов;  1,45 мкс при 20 МГц
Повторяющийся:	  27+6n тактов;  1.35+0.3n мкс при 20 МГц
n - число выполняемых итераций.
ФЛАГИ:
Ни один не задействован.
ИСКЛЮЧЕНИЯ ДЛЯ РЕАЛЬНОГО РЕЖИМА.
Те же, что и для инструкции АDD.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ ЗАЩИЩЕННОГО РЕЖИМА:
Если CPL > IOPL, разрешение ввода/вывода битового массива должно
позволять  ввод/вывод  всех  задействованных  байтовых	 портов.
Другие исключения такие же как для команды ADD.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕЖИМА ВИРТУАЛЬНОГО 8086:
Разрешение  ввода/вывода  битового  массива   должно   позволять
ввод/вывод  всех   задействованных   байтовых	портов.   Другие
исключения такие же как для команды ADD.
			    - 247 -
	 ЙННННННННННННННННННННННННННННННННННННННННННННН»
	 єINT 3 	Прерывание 3 (точка прерывания)є
	 ИНННННННННННННННННННННННННННННННННННННННННННННј
			    ФОРМАТ:
	INT 3	      1 1 0 0 1 1 0 0
			    ФУНКЦИЯ:
	Прерывание 3.
			   ОПИСАНИЕ:
   INT 3 вызывает прерывание 3.  Следующая  выполняемая  команда
является входной точкой программы  прерывания  3.  В  защищенном
режиме команда программного прерывания	INT  n	чувствительна  к
IOPL. Однако, эта отдельная команда программного прерывания  INT
3 всегда доступна; она	не  чувствительна  к  IOPL.  Однобайтная
команда INT  3	пригодна  для  генерации  точек  прерывания  при
реализации программ отладки (отладочных программ).
ПРИМЕР:
INT 3	  ;прерывание 3; контрольная точка прерывания
ДЕТАЛИ ЗАЩИЩЕННОГО РЕЖИМА:
   См. команду INT n.
ВРЕМЯ ВЫПОЛНЕНИЯ:
		33 такта; 1,65 мкс при 20 МГц.
ФЛАГИ:
Флаги не задействованы. Все флаги не изменяются.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕАЛЬНОГО РЕЖИМА:
Нет.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ ЗАЩИЩЕННОГО РЕЖИМА:
Исключение типа "отказ страницы" (исключение 14)  идет  с  кодом
ошибки отказа кода, а отказ страницы является линейным адресом в
регистре CR2.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕЖИМА ВИРТУАЛЬНОГО 8086.
См. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ ЗАЩИЩЕННОГО РЕЖИМА.
			    - 248 -
	 ЙНННННННННННННННННННННННННННННННННННННННННННННН»
	 єINTO		 Прерывание 4, если переполнениеє
	 ИННННННННННННННННННННННННННННННННННННННННННННННј
			    Формат:
       INTO	    1 1 0 0 1 1 1 0
			    ФУНКЦИЯ:
	IF ( OF=1) THEN
	 INTERRUPT 4;
			   ОПИСАНИЕ:
INTO допускает текущее прерывание в  случае  переполнения.  Если
OF=1, то INTO выполняется, и действие не производится.	INTO  не
чувствительна к IOPL, поэтому всегда доступна;	она  может  быть
включена  в  прикладную   программу   для   выявления	текущего
переполнения.
ПРИМЕР:
INTO	; прерывание 4, если флаг переполнения установлен.
ДЕТАЛИ ЗАЩИЩЕННОГО РЕЖИМА:
См. команду INT n.
ВРЕМЯ ВЫПОЛНЕНИЯ:
Если прерывание не генерируется: 3 такта; 0.15 мкс при 20 МГц
Если прерывание 4 генерируется: 35 тактов; 0.5 мкс при 20 МГц
ФЛАГИ:
Флаги не задействованы. Все флаги не изменяются.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕАЛЬНОГО РЕЖИМА:
Прерывание 4, если OF=1.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ ЗАЩИЩЕННОГО РЕЖИМА:
Прерывание  4,	если  OF=1.  Исключение  типа  "отказ  страницы"
(исключение 14)  идет  с  кодом  ошибки  отказа  кода,	а  отказ
страницы является линейным адресом в регистре CR2.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕЖИМА ВИРТУАЛЬНОГО 8086.
См. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ ЗАЩИЩЕННОГО РЕЖИМА.
			    - 249 -
		ЙННННННННННННННННННННННННННННННН»
		єINT n		    Прерывание nє
		ИНННННННННННННННННННННННННННННННј
			    ФОРМАТ:
	INT n		   Байт 0	     Байт 1
			0 1 1 0 0 0 1 0        n
			    ФУНКЦИЯ:
	PUSH EFLAGS;
	PUSH CS;
	PUSH EIP;
	RELOAD EIP FROM OPERAND;    (вектор или переключатель n)
	RELOAD CS FROM OPERAND;     (вектор или переключатель n)
	CLEAR INTERRUPT FLAG IN EFLAG REGISTER;
			   ОПИСАНИЕ:
   Когда INT n имеет  место  в	реальном  режиме  или  в  режиме
виртуальном 8086, указатель  команды  и  регистр  кода	сегмента
загружаются в стек.  Флаг  прерывания  в  регистре  флага  ясен,
поэтому последующие прерывания не  распознаются.  Как  указатель
команды, так и регистр кода сегмента в	этом  случае  заменяются
векторными величинами  в  векторе  прерывания  для  того,  чтобы
начать выполнение обслуживающей программы.
В случае, когда INT n имеет место взащищенном режиме,  действия,
выполняемые 80386, могут быть довольно сложными в соответствии с
одним из 3 состояний селектора приемника:
1) переключатель вызова  на  сегмент  кода  при  уровне  текущей
   привилегии (DPL=CPL);
2) переключатель вызова на сегмент кода при  большей  привилегии
   (DPLCPL  ELSE
     исключительная ситуация "по стандартной защите" (код ошибки
     номера вектора *8 + 2 + EXT).
  Переключатель должен существовать ELSE Исключительная ситуация
  "данные отсутствуют" (код ошибки номера вектора + 2 + EXT).
  IF  переключатель  внутреннего  прерывания  OR   переключатель
  прерывания
  THEN go to (перейти) к ПЕРЕКЛЮЧАТЕЛЮ ВНУТРЕННЕГО ИЛИ	ВНЕШНЕГО
  ПРЕРЫВАНИЯ.
  ELSE go to к переключателю задач.
ПЕРЕКЛЮЧАТЕЛЬ ВНУТРЕННЕГО ИЛИ ВНЕШНЕГО ПРЕРЫВАНИЯ:
  Проверьте CS селектор и дескриптор,  описанный  в  дескрипторе
  переключателя.
  Селектор не должен быть нулем ELSE Исключительная ситуация "по
  стандартной защите" (код ошибки бита EXT).
  Индекс  селектора  должен  быть   в	пределах   его	 таблицы
  дескриптора  ELSE  Исключительная  ситуация  "по   стандартной
  защите" (код ошибки селектора + EXT)
  Байт Права Доступа Дескриптора (AR) должен обозначать  сегмент
  кода ELSE Исключительная ситуация "по стандартной защите" (код
  ошибки селектора сегментного кода + EXT).
  Сегмент кода	должен существовать ELSE Исключительная ситуация
  "данные отсутствуют" (код ошибки селектора + EXT).
  IF сегмент не соответствующий AND сегмент кода DPL < CPL
  THEN go to ПРЕРЫВАНИЕ ПО ВНЕШНЕМУ УРОВНЮ ПРИВИЛЕГИИ
  ELSE
  IF ((сегмент соответствующий AND сегмент кода DPL  <	CPL)  OR
  (сегмент DPL=CPL))
  THEN go to ПРЕРЫВАНИЕ ПО ТАКОМУ ЖЕ УРОВНЮ ПРИВИЛЕГИИ
  ELSE Исключительная  ситуация  "по  стандартной  защите"  (код
  ошибки селектора сегментного кода + EXT).
ПРЕРЫВАНИЕ ПО ВНЕШНЕМУ УРОВНЮ ПРИВИЛЕГИИ
Выбрать селектор и дескриптор для нового стека в текущем TSS:
 Селектор не должен быть нулем ELSE Исключительная ситуация "по
 стандартной защите" (код ошибки бита EXT).
 Индекс   селектора  должен  быть   в  пределах   его	таблицы
 дескриптора  ELSE  Исключительная  ситуация  "по   стандартной
 защите" (код ошибки селектора + EXT)
 Селектор  RPL	должен	=  DPL	сегмента  кода	ELSE  исключение
 "недопустимый TSS" (код ошибки селектора сегмента стека + EXT)
 Сегмент стека DPL должен = DPL сегмента кода ELSE исключение
 "недопустимый TSS" (код ошибки селектора сегмента стека + EXT)
 Байт Права Доступа Дескриптора  (AR)  должен  разрешать  запись
 сегмента  ELSE  исключение   "недопустимый  TSS"  (код   ошибки
 селектора  сегмента стека + EXT)
 Сегмент  стека  должен  существовать  ELSE  исключение   "отказ
 стека"(код   ошибки  селектора  сегмента стека + EXT)
IF 32-битовый переключатель
 THEN  новый  стек  должен  иметь  место  для  20  байтов   ELSE
 исключение "отказ стека" (код ошибки 0000h).
 ELSE  новый  стек  должен  иметь  место  для  10  байтов   ELSE
 исключение "отказ стека" (код  ошибки  0000h).(если  16-битовый
 переключатель)
Указатель команды должен быть в пределах CS ELSE исключение  "по
стандартной защите" (код ошибки 0000h)
Загрузить новый SS и ESP, отличающийся от TSS.
			    - 251 -
IF 32-битовый переключатель
 THEN загрузить CS и EIP из переключателя
 ELSE  загрузить  CS   и   IP	из   переключателя   (16-битовый
 переключатель)
Загрузить дескриптор сегмента кода в кэш дескриптора CS.
Загрузить дескриптор сегмента кода в кэш дескриптора SS.
IF 32-битовый переключатель
 THEN
 Поместить  на	стек  (запомнить  указатель  на   старый   стек)
 (дополнить 6 байт до 8)
 Поместить на стек (EFLAG).
 Поместить на стек (запомнить указатель для возврата) (дополнить
 6 байт до 8)
ELSE (16-битовый переключатель)
 Поместить на стек  (запомнить	указатель  на  старый  стек)  (4
 байта)
 Поместить на стек (EFLAG).
 Поместить на стек (запомнить указатель для возврата) (4 байта)
Установить CPL в сегмент нового кода DPL.
Установить поле RPL регистра CS в CPL.
IF переключатель прерываний, then сбросить Флаг Прерывания  (IF)
в EFLAG. (невозможное прерывание)
Сбросить Флаг Пошагового Внутреннего Прерывания (TF) в EFLAG.
Сбросить Флаг Вложенной Задачи (NT) в EFLAG.
Прерывание из режима виртуального 8086.
TempEFLAGS :=EFLAGS.
Сбросить флаг режима виртуального 8086 (VM) в EFLAG. (прерывание
вызывает выход из режима виртуального 8086)
Сбросить Флаг Пошагового Внутреннего Прерывания (TF) в EFLAG.
IF обслуживание через переключатель прерывания THEN сбросить
Флаг Прерывания  (IF) в EFLAG.
Temp SS := SS.
Temp ESP := ESP.
SS := TSS.SS0.	(Изменить  сегмент  стека,  который  хранится  в
Сегменте Состояния Задачи, на уровень 0)
ESP := TSS.ESP.(Изменить указатель стека,  который  хранится  в
Сегменте Состояния Задачи, на уровень 0)
Поместить на стек (GS). (Дополнить 2 байта до 4)
Поместить на стек (FS). (Дополнить 2 байта до 4)
Поместить на стек (DS). (Дополнить 2 байта до 4)
Поместить на стек (ES). (Дополнить 2 байта до 4)
GS :=0.
FS :=0.
DS :=0.
ES :=0.
Поместить на стек (TempSS). (Дополнить 2 байта до 4)
Поместить на стек (TempESP).
Поместить на стек (TempEFLAGS).
Поместить на стек (CS). (Дополнить 2 байта до 4)
Поместить на стек (EIP).
Загрузить CS:EIP из переключателя прерывания.
(начать выполнение программы прерываний в защищенном режиме)
			    - 252 -
ПРЕРЫВАНИЕ ПО ТАКОМУ ЖЕ УРОВНЮ ПРИВИЛЕГИИ:
IF 32-битовый переключатель
THEN пределы текущего стека должны позволять помещение	на  стек
10 байт ELSE Исключение "отказ стека" (код ошибки 0000h).
ELSE пределы текущего стека должны позволять помещение	на  стек
6 байт ELSE Исключение "отказ стека" (код ошибки 0000h).
IF прерывание было  вызвано  исключительной  ситуацией	с  кодом
ошибки
THEN предел стека должен позволять помещение  на  стек более 2-х
байт ELSE Исключение "отказ стека" (код ошибки 0000h).
Указатель команды должен быть  в  пределах  сегмента  кода  ELSE
Исключение "по стандартной защите" (код ошибки 0000h).
IF 32-битовый переключатель
   THEN
    Поместить на стек(EFLAG).
    Поместить на стек (запомнить указатель для возврата) (6 байт
    дополнить до 8)
    Загрузить CS:EIP из переключателя.
   ELSE (16-битовый переключатель)
    Поместить на стек(EFLAG).
    Поместить на стек (запомнить указатель для возврата) 4 байта
    Загрузить CS:IP из переключателя.
Загрузить дескриптор сегмента кода в кэш дескриптора CS.
Установить поле RPL регистра CS в CPL.
IF переключатель прерываний, then сбросить Флаг Прерывания  (IF)
в EFLAG. (невозможное прерывание).
Сбросить Флаг Пошагового Внутреннего Прерывания (TF) в EFLAG.
Сбросить Флаг Вложенной Задачи (NT) в EFLAG.
ПЕРЕКЛЮЧАТЕЛЬ ЗАДАЧ:
Проверить селектор TSS, описанный в переключателе задач:
 Должен определить Таблицу Глобального Дескриптора (GDT) в  бите
 Индикатора Таблицы (TI) ELSE исключение "недопустимый TSS (код
 ошибки селектора TSS).
 Индекс должен быть в пределах GDT ELSE исключение "недопустимый
 TSS (код ошибки селектора TSS)
 Байт  Права  Доступа	Дескриптора  TSS     должен   отличаться
 незанятостью TSS ELSE исключение "недопустимый TSS" (код ошибки
 селектора TSS).
 Сегмент Состояния Задачи должен  существовать	ELSE  исключение
 "данные отсутствуют" (код ошибки селектора TSS).
ПЕРЕКЛЮЧАЕМЫЕ ЗАДАЧИ (с вложенностью, установить бит NT в EFLAG)
для задачи, описанной селектором TSS.
IF прерывание было вызвано отказом с кодом ошибки
THEN
 Предел стека должен позволять помещение  на  стек более 2-х
 байт ELSE Исключение "отказ стека" (код ошибки 0000h).
 Поместить на стек код ошибки.
EIP  должен  быть  в  пределах	сегмента  кода	ELSE  исключение
"недопустимый TSS" (код ошибки 0000h).
ФЛАГИ:
Флаги не задействуются до тех пор, пока переключатель  задач  не
окажется в защищенном режиме.
			    - 253 -
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕАЛЬНОГО РЕЖИМА:
Прерывание 13 имеет место, если любая часть  операнда  в  памяти
является исполнительным адресом, большим, чем FFFFh в  сегментах
CS, DS, ES, FS или GS. Прерывание 12  имеет  место,  если  любая
часть  операнда  в  памяти  является   исполнительным	адресом,
большим, чем FFFFh в стековом сегменте SS.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ ЗАЩИЩЕННОГО РЕЖИМА:
Исключительная	 ситуация  "по стандартной  защите"   (исключение
13)  идет с кодом ошибки  0000h для  операндов	сегментов  памяти
CS, DS, ES,  FS  или  GS,  если  операнд   источника	 является
нечитаемым  сегментом  кода, или   если   любая   часть  операнда
является   исполнительным   адресом   выше   предела	сегмента.
Исключение  стека  идет с кодом  ошибки  0000h	для  операндов	в
сегменте   стека,   если   любая    часть   операнда	 является
исполнительным адресом выше предела сегмента. Исключение стека	с
кодом ошибки селектора	сегмента  имеет  место,  если  операнд	в
памяти находится в сегменте SS и маркирован,  как  отсутствующий.
Исключительная	ситуация  "данные  отсутствуют"  (исключение  11)
имеет место с кодом ошибки селектора  сегмента,  если  операнд	в
памяти	находится  в  сегменте	DS,  ES,   FS,	 GS   и   отмечен
несуществующим. Исключительная ситуация "данные отсутствуют"
имеет место с кодом ошибки селектора  сегмента,  если  операнд	в
памяти	находится  в  сегменте	DS,  ES,   FS,	 GS   и   отмечен
несуществующим.   Исключительная   ситуация   "отказ    страницы"
(исключение 14) с кодом ошибки кода  отказа  и	линейным  адресом
отказа находится в регистре CR2. Исключительная ситуация Сегмента
Состояния Задач (исключение 10)  с  кодом  ошибки  селектора  для
несогласованностей в Сегменте Состояния Задач имеет  место,  если
задействован переключатель задач.
ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ РЕЖИМА ВИРТУАЛЬНОГО 8086:
Такие же, как в  защищенном  режиме, но  имеют место в защищенном
режиме при уровне привилегии 0. Формат стека с уровнем привилегии
0 после исключения (с кодом  ошибки)  или  прерывания  (без  кода
ошибки) показан на рис.12.2.Также Исключительная ситуация "отказ"
страницы" с кодом ошибки кода отказа и  линейным  адресом  отказа
находится в регистре CR2.


Яндекс цитирования