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



 

Часть 9

			    - 299 -
   ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
   єPOP 	       Выталкивание данных из стека в регистрє
   ИНННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
			       Формат
		     байт 0		байт 1
		  ЪДДДДДДДДДДВДДДДДДДВДДДДДВДДДДДДДДДДДДДДДДї
Регистр/память	  і 10001111 і режим і 000 і регистр/память і
		  АДДДДДДДДДДБДДДДДДДБДДДДДБДДДДДДДДДДДДДДДДЩ
		  ЪДДДДДДДВДДДДДДДДДї
Регистр (короткое і 01011 і регистр і
кодирование)	  АДДДДДДДБДДДДДДДДДЩ
Регистр сегмента  ЪДДДДДДДДДДВДДДДВДДДДДДДДДДДДДДВДДДДДї
DS,ES, PS, GS, SS і 00001111 і 10 і сегм.регистр і 001 і
		  АДДДДДДДДДДБДДДДБДДДДДДДДДДДДДДБДДДДДЩ
Регистр сегмента  ЪДДДДВДДДДДДДДДДДДДВДДДДДї
DS, ES, SS	  і 00 і сегм.регистрі 111 і
(короткое коди-   АДДДДБДДДДДДДДДДДДДБДДДДДЩ
рование)
			    Функция
    IF (ADRESS	SIZE = 32) THEN
BEGIN
    POP (register)
    ESP    ESP + OPERAND  SIZE	   (увеличение ESP на 2 или на 4
				   после выполнения операции POP)
END
ELSE
BEGIN
POP (register)
    SP	   SP + OPERAND SIZE	   (увеличение SP на 2 или на 4
				   после выполнения операции POP)
END
			    Описание
    Регистр общего назначения или регистр сегмента загружается из
верхушки стека. Регистр указателя стека ESP  затем  увеличивается
на  2, если выталкиваемый операнд является словом, или на 4, если
выталкиваемый операнд является двойным словом.
Пример
    POP EBP		  выталкивание 32-битового двойного слова
			  в регистр EBP
Временные характеристики
Выталкивание в регистр
общего назначения	  4 ТИ;   0,2 мкс при 20 МГц
Выталкивание в регистр
сегмента		  21 ТИ;  1,05 мкс при 20 МГц
Флаги
    Не устанавливаются.
    Исключительные ситуации не описаны.
			    - 300 -
ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
єPOPA/POPAD   Выталкивание из стека во все 16-битовые/32-битовыеє
є		       регистры общего назначения		є
ИНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
			ЪДДДДДДДДДДї
POPA/POPAD		і 01100001 і
			АДДДДДДДДДДЩ
			    Функция
    IF (ADRESS SIZE = 32) THEN
BESIN
    POP (EDI); or POP (DI);	(EDI или DI, в зависимости от
				размера операнда)
    POP (ESI); or POP (SI);	(ESI или SI, в зависимости от
				размера операнда)
    POP (EBP); or POP (BP);	(EBP или BP, в зависимости от
				размера операнда)
    POP (TEMP); or POP (TEMP);	(32- или 16-битовый темп,
				в зависимости от размера)
    POP (EBX); or POP (BX);
    POP (EDX); or POP (DX);	все в зависимости от размера
    POP (ECX); or POP (CX);	операнда
    POP (EAX); or POP (AX);
    ESP   ESP + BLOCK SIZE;	(увеличение ESP на размер блока
				16 или 32)
END
ELSE
BEGIN				(адрес 16-разрядный)
   POP (EDI); or  POP (DI);
   POP (ESI); or  POP (SI);
   POP (EBP); or  POP (BP);	в зависимости от размера операнда
   POP (TEMP); or POP (TEMP);
   POP (EBX); or  POP (BX);
   POP (EDX); or  POP (DX);
   POP (ECX); or  POP (CX);
   POP (EAX); or  POP (AX);
   ESP	  ESP + BLOCK SIZE
END
			    - 301 -
			    Описание
    8  регистров  общего назначения (исключая ESP/SP) загружаются
данными, выталкиваемыми из стека. Регистр указателя стека  увели-
чивается  на 16, если размер операнда - слово, и на 32, если раз-
мер операнда - двойное слово. В МП 80386 нет команды POPA.
Пример
    POPA;  загрузка всех POH 16-битовыми данными из
    POPAD; загрузка всех POH 32-битовыми данными
Временные характеристики
		 4 ТИ;	 0,2 мкс при 20 МГц
Флаги
    Не устанавливаются.
Исключительные ситуации в реальном режиме
    Прерывание	12,  если  любая  часть эффективного адреса стека
больше FFFFh в сегменте стека SS.
Исключительные ситуации в защищенном режиме
    Исключительная ситуация "стек" с кодом ошибки  возникает  для
операнда  в памяти сегмента SS, если любая часть эффективного ад-
реса операнда выходит за пределы сегмента.  Исключительная  ситу-
ация  "стек" с кодом ошибки, равным селектору сегмента, если опе-
ранд в памяти помечен в сегменте SS как  отсутствующий.  Исключи-
тельная  ситуация  "неисправности страницы" (исключительная ситу-
ация 14) с кодом ошибки; равным коду неисправной страницы  и  ли-
нейным адресом неисправной страницы в регистре CR2.
Исключительные ситуации в режиме "виртуальный 8086"
    Для размещения эмуляции в режиме "виртуальный 8086"  эта  ко-
манда вызывает исключительную ситуацию "стандартная защита" с ко-
дом ошибки 0000h, если ИОПЛ <3.
    Исключительная  ситуация "стек" с кодом ошибки 0000h для опе-
ранда в сегменте стека возникает, если любая часть "эффективного"
адреса выходит за пределы сегмента. Исключительная ситуация отра-
батывается в защищенном режиме в  уровне  привилегированности  0.
Формат	стека  на  нулевом уровне привилегий после исключительной
ситуации (с кодом ошибки) или после прерывания (без кода  ошибки)
показан  на  рис. 12.2. Кроме того возникает исключительная ситу-
ация "неисправность страницы" с кодом  ошибки,  равным  коду  не-
исправной  страницы и линейным адресом неисправной страницы ы ре-
гистре CR2.
			    - 302 -
   ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
   єPOPF/POPFD	    Выталкивание данных из стека в FLAG/EFLAGє
   ИНННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
			ЪДДДДДДДДДДї
POPF/POPFD		і 10011101 і
			АДДДДДДДДДДЩ
			    Функция
    IF (ADRESS SIZE = 32) THEN
BEGIN
    POP (EFLAG); or POP (FLAG);   (EFLAG или FLAG, в зависимости
				  от размера операнда)
    ESP   ESP + OPERAND SIZE	  (увеличение ESP на 2 или 4 пос-
				   ле выталкивания)
END
ELSE
BEGIN
    POP (EFLAG); or POP (FLAG)
    SP	  SP + OPERAND SIZE;
END
			    Описание
    Регистр  EFLAG  или FLAG (в зависимости от размера операнда)
загружается из верхушки стека. Регистр указателя стека ESP,  за-
тем  увеличивается  на	2, если размер операнда - слово (команда
POPF), и на 4, если размер операнда  -	двойное  слово	(команда
POPFD).
    Когда EFLAG или FLAG загружаются из стека, битам флага прис-
ваиваются  новые  значения, выталкиваемые из стека со следующими
исключительными ситуациями. В защищенном режиме  IF  (прерывание
по  биту  флага)  оставит без изменения CPL < IOPL. В защищенном
режиме IOPL (биты индикации уровня привилегий  IO  (м.б.  ввода/
вывода) остается постоянным, если не выполняется CPL=0.
Пример
   POPF  загрузка регистра FLAG  16-битами, выталкнутыми из стека
   PORFD загрузка регистра EFLAG 16-битами, выталкнутыми из стека
Временные характеристики
		     4 ТИ; 0,2 мкс при 20 МГц
Флаги
    Не устанавливаются.
Исключительные ситуации в реальном режиме
    Прерывание	12, если любая часть эффективного адреса операнда
в стеке более чем FFFFh в сегменте стека SS.
			    - 303 -
Исключительные ситуации в защищенном режиме
    Исключительная ситуация "стек" (исключительная ситуация 12) с
кодом ошибки 0000h для опреранда в памяти сегмента SS, если любая
часть "эффективного" адреса операнда выходит за пределы сегмента.
Исключительная ситуация "стек" с кодом ошибки,  равным  селектору
сегмента,  если  операнд  в  памяти помечен в сегменте SS как от-
сутствующий. Исключительная ситуация "неисправность  страницы"  с
кодом  ошибки,	равным	коду неисправности и линейным адресом не-
исправной страницы в регистре CR2.
Исключительные ситуации в режиме "виртуальный 8086"
    В режиме "виртуальный 8086"  эта  команда  является  причиной
исключительной	ситуации "стандартная защита" (исключительная си-
туация 13) с кодом ошибки 0000h, если IOPL <3 для разрешения эму-
ляции.
    Исключительная ситуация "стек" с кодом ошибки 0000h для  опе-
ранда  в  сегменте  стека, если любая часть "эффективного" адреса
операнда выходит за границу стека.
    Исключительная ситуация обрабатывается в защищенном режиме	в
нулевом уровне привилегий. Формат стека в нулевом уровне привиле-
гий после исключительной ситуации (с кодом ошибки) или после пре-
рывания (без кода ошибки) показан на рис. 12.2. Кроме того возни-
кает  исключительная  ситуация	"неисправность  страницы" с кодом
ошибки, равным коду неисправности и линейном адресом  неисправной
страницы в регистре CR2.
			    - 304 -
		ЙНННННННННННННННННННННННННННННННН»
		єPUSH		 Поместить в стекє
		ИННННННННННННННННННННННННННННННННј
			     Формат
PUSH				  Байт 0	    Байт 1
Регистр/память		    ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
			    і1 1 1 1 1 1 1 1 і mod:1 1 0: r/mі
			    АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Регистр (короткая	    ЪДДДДДДДДДДДДДДДДї
кодировка)		    і0 1 0 1 0: reg* і
			    АДДДДДДДДДДДДДДДДЩ
Сегментный регистр CS,DS,   ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДї
ES,FS,GS,SS		    і0 0 0 0 1 1 1 1 і 1 0:sreg :0 0 0і
			    АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДЩ
Сегментный регистр (короткаяЪДДДДДДДДДДДДДДДДї
кодировка) CS,DS,ES,SS	    і0 0:sreg :1 1 0 і
			    АДДДДДДДДДДДДДДДДЩ
Непосредственные данные     ЪДДДДДДДДДДДДДДДДїБайт(ы) непосред-
			    і0 1 1 0 1 0 s 0 іственных данных
			    АДДДДДДДДДДДДДДДДЩ
			    Функции
IF (РАЗМЕРНОСТЬ АДРЕСА = 32) ELSE
BEGIN
  ESP <= ESP (РАЗМЕР ОПЕР. (предв. уменьшение ESP  на 2 или 4)
  [ESP] <= ОПЕРАНД	   (поместить операнд на вершину стека)
END
ELSE
BEGIN
  SP <= РАЗМЕР ОПЕРАНДА    (предв. уменьшение SP  на 2 или 4)
  [SP] <= ОПЕРАНД	   (поместить операнд на вершину  стека)
END
			    Описание
     Указатель стека ESP  уменьшается на 2, если размер операнда
16 бит,  и  на	4,  если  32  бита.  Операнд  (  регистр  общего
назначения, сегментный	регистр,  или  непосредственные  данные)
помещается на вершину стека, указываемую ESP.
     Если  размер  операнда  -	32  бит,  а  в	стек  помещается
сегментный 16-битный регистр, то перед засылкой в стек процессор
дополняет  содержимое  регистра  нулями    до	 32    бит.  Это
позволяет выдержать размер двойного слова.
     При выполнении процессором инструкций PUSH ESP  и PUSH SP,
в стек помещается содержимое указателя стека, существовавшее  до
выполнения инструкции. В этом отличие выполнения этих инструкций
от процессора 8086, который помещает в стек новое значение ( уже
уменьшенное на два ).
Пример
     Типичные примеры для случая, когда размерность адреса -  32
бита, а размер операнда - двойное слово.
PUSH EDI	  ;поместить в стек регистр
PUSH DS 	  ;поместить 16 нулей и 16-битный регистр
		  ;в стек
			    - 305 -
Время выполнения
Регистр в стек: 		 2 такта;  0.1 мкс при 20 МГц.
Операнд из памяти в стек:	 5 тактов; 0.25 мкс при 20 МГц.
Непосредственный операнд в стек: 2 такта;  0.1 мкс при 20 МГц.
Флаги
     Флаги не изменяются.
Исключения режима
     Нет. Но при недостаточном об~еме стека (SP =1, если  размер
операнда - слово, или  SP =1,2,3, если операнд - двойное слово )
может произойти ошибка, т.к.  становится  невозможной  обработка
прерываний ( она требует помещения в стек регистров CS,IP,FLAGS,
а без достаточного места в стеке это невозможно ).
Исключения защищенного режима
     Исключение общей защиты ( исключение 13 )	с  кодом  ошибки
0000 для сегментов памяти CS,DS,ES,FS или GS	,  если  операнд
находится в нечитаемом кодовом сегменте, или если какая либо  из
частей операнда имеет эффективный адрес,  лежащий  за  пределами
сегмента. Стековое исключение ( исключение 12 ) с  кодом  ошибки
0000 для операндов из сегментов памяти	SS,    если  какая  либо
из частей операнда имеет эффективный адрес, лежащий за пределами
сегмента.  Стековое  исключение  с  кодом  ошибки    сегментного
селектора, если операнд  памяти  лежит	в  сегменте    SS,
отмеченном    как    несуществующий.	Исключение    отсутствия
(исключение 11 ) с  кодом  ошибки  сегментного	селектора,  если
операнд памяти находится в сегменте DS, ES, FS	  или	GS,
отмеченном как несуществующий. Исключение неисправности страницы
( исключение 14 ) с кодом ошибки, равном  коду	неисправности  и
линейным адресом неисправной страницы в регистре  CR2.
Исключения виртуального режима 8086:
     Стековое исключение с кодом ошибки  0000  для  операндов  в
стековом сегменте,  если  какая  либо  часть  операнда	является
эффективным  адресом  за    пределами	 сегмента.    Исключение
обрабатываются в  защищенном  режиме  на  уровне  привилегий  0.
Формат	стека  нулевого  уровня  привилегии   после    обработки
исключения ( с кодом ошибки ) или прерывания  ( без кода ошибки)
показан на рис. 12.2. Также  исключение  неисправности	страницы
с кодом ошибки или неисправности, и линейным адресом неисправной
страницы в регистре  CR2.
			    - 306 -
  ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
  єPUSHA/PUSHAD    Поместить в стек все 16-/32-битные регистры.є
  ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
			 ЪДДДДДДДДї
PUSHA/PUSHAD		 і01100000і
			 АДДДДДДДДЩ
			    Функции
    IF (ADRESS SIZE =32) THEN
    BEGIN
	 TEMP чДДД ESP
	 ESP  чДДД ESP -  BLOK SIZE;
	 PUSH(EAX);  или PUSH(AX)  ;
	 PUSH(ECX);  или PUSH(CX)  ;
	 PUSH(EDX);  или PUSH(DX)  ;
	 PUSH(EBX);  или PUSH(BX)  ;
	 PUSH(TEMP); или PUSH(TEMP);
	 PUSH(EBP);  или PUSH(BP)  ;
	 PUSH(ESI);  или PUSH(SI)  ;
	 PUSH(EDI);  или PUSH(DI)  ;
    END
    ELSE			       [adress size =16]
    BEGIN
	 TEMP чДДД SP
	 SP   чДДД SP -  BLOCK SIZE;   [decrement SP ]
	 PUSH(EAX);  или PUSH(AX)  ;
	 PUSH(ECX);  или PUSH(CX)  ;
	 PUSH(EDX);  или PUSH(DX)  ;
	 PUSH(EBX);  или PUSH(BX)  ;
	 PUSH(TEMP); или PUSH(TEMP);
	 PUSH(EBP);  или PUSH(BP)  ;
	 PUSH(ESI);  или PUSH(SI)  ;
	 PUSH(EDI);  или PUSH(DI)  ;
    END
			    - 307 -
			    Описание
     Указатель стека	ESP/SP	     уменьшается на 16 или 32 в
зависимости от разрядности операндов ( 16 или  32  бита  ).  При
выполнении  команды  все  восемь  регистров  общего   назначения
помещаются в стек.
     Инструкция опускает в стек значение    ESP/SP	 которое
существовало до  ее  выполнения.  Это  соответствует  исполнению
инструкции   PUSH  ESP/SP     80386.  Процессор  8086  не  имеет
инструкции   PUSHA.
Пример
PUSHA	 : поместить все 16-битные регистры о.н.  в стек.
PUSHAD	 : поместить все 32-битные регистры о.н. в стек.
Время выполнения
 18  тактов: при тактовой частоте 20 МГц - 0.9 мкс.
Устанавливаемые флаги
     На флаги не влияет.
Исключения реального режима
     Нет. Но при недостаточном месте в стеке (SP =1, если размер
операнда равен 16 бит, или  SP = 1,2,3	при 32-битном операнде).
может произойти сбой системы, так как в этом случае невозможна
обработка прерываний ( при обработке прерываний в стек
помещаются регистры CS, IP, FLAGS ).
Исключения защищенного режима
     Стековое исключение ( исключение 12 ) с кодом  ошибки  0000
для операндов из сегмента памяти SS,	если  какая  либо  часть
операнда находится за пределами сегмента.
     Стековое исключение с кодом ошибки  сегментного  селектора,
если операнд находится в сегменте памяти SS,	 отмеченном  как
несуществующий.
     Исключение ошибки страницы ( исключение 14 ) с кодом ошибки
сбоя и линейным адресом страницы, вызвавшей сбой в регистре CR2.
Исключения виртуального режима 8086
     Стековое исключение с кодом ошибки  0000  для  операндов  в
стековом сегменте ( если  какая-либо  часть  операнда  лежит  за
пределами сегмента ).  Исключение  обрабатывается  в  защищенном
режиме на уровне привилегий  0.  Формат  стека	нулевого  уровня
привилегий после возникновения исключения ( с кодом ошибки ) или
или прерывания ( без кода ошибки ) показан на рис. 12.2.
     Возможно также исключение страничного сбоя с  кодом  ошибки
сбоя и его линейным адресом в регистре	    .
			    - 308 -
     ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННН»
     єPUSHF/PUSHFD   Поместить регистр FLAGS/EFLAGS  в стек.є
     ИННННННННННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
PUSHF/PUSHFD		ЪДДДДДДДДї
			і10011100і
			АДДДДДДДДЩ
			    Функции
IF (РАЗМЕР АДРЕСА = 32) THEN
BEGIN
  ESP <= ESP		(размер операнда; предв. уменьш.
  PUSH(EFLAG) ИЛИ PUSH(FLAG)		; на 2 или 4 и поместить
END					; в стек
ELSE					; в зависимости от разме
BEGIN					; ра операнда
  SP <= SP		(размер операнда; предв. уменьш.
  PUSH(EFLAG) ИЛИ PUSH(FLAG)		; на 2 или 4 и поместить
END					; в стек
					; в зависимости от разме
					; ра операнда
			    Описание
     Регистр указателя	стека  уменьшается  на	2  или	на  4  в
зависимости от размера операнда ( 16  или  32  бита  ).  Регистр
EFLAG	  или	FLAG	   в  зависимости  от  размера	операнда
помещается на вершину стека.
Пример
	  ; Поместить регистр  FLAG    (16 бит) в стек.
	  ; Поместить регистр  EFLAG   (32 бит) в стек.
Время выполнения
     4 такта ; 0.2 мкс. при 20 МГц.
Устанавливаемые флаги
     Флаги не изменяются.
Исключения реального режима
     Нет. Но недостаток места в  стеке	(  SP  =1,  если  размер
операнда 16 бит и  SP =  2,3,4	при  32-битном	операнде)  может
вызвать   сбой, так  как  в  этом  случае  невозможна  обработка
прерываний ( при обработке прерываний необходимо помещать в стек
регистры CS, IP, FLAGS,      а	при  недостатке  места	в  стеке
сделать это невозможно ).
Исключения защищенного режима
     Стековое исключение ( исключение 12 ) с кодом  ошибки  0000
для операндов из сегмента памяти  SS,	 если  какая-либо  часть
операнда находится за пределами сегмента.
     Стековое исключение с кодом ошибки  сегментного  селектора,
если  операнд  памяти  находится  в  сегменте,	отмеченном   как
несуществующий.
     Исключение страничного сбоя  (  исключение  14  )	с  кодом
ошибки сбоя  и	линейным  адресом  страницы,  вызвавшей  сбой  в
регистре CR2.
			    - 309 -
       ЙНННННННННННННННННННННННННННННННННННННННННННННННННН»
       єRCL	   Сдвиг влево/вправо через флаг переноса.є
       ИННННННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
			      ДДДДДД
RCL			   байт 0	      байт 1
Регистр/память на 1  ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДї
		     і1 1 0 1 0 0 0 w і  mod:0 1 0: r/mі
		     АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДЩ
Регистр/память на    ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДї
число в регистре     і1 1 0 1 0 0 1 w і  mod:0 1 0: r/mі
		     АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДЩ
Регистр/память на    ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДї  байт
число, указанное в   і1 1 0 0 0 0 0 w і  mod:0 1 0: r/mі  данных
байте после команды  АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДЩ
Регистр/память на 1  ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДї
		     і1 1 0 1 0 0 0 w і  mod:0 1 1: r/mі
		     АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДЩ
Регистр/память на    ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДї
число в регистре     і1 1 0 1 0 0 1 w і  mod:0 1 1: r/mі
		     АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДЩ
Регистр/память на    ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДї  байт
число, указанное в   і1 1 0 0 0 0 0 w і  mod:0 1 1: r/mі  данных
байте после команды  АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДЩ
			    Функции
			     ДДДДДДД
	  RCL
  ЪДДДДДДДДДДДДДДДДДДДДДДДДДї
  і  ЪДї       ЪДДДДДДДДДї  і
  АДДґCічДДДДДДґ7	0ічДЩ
     АДЩ       АДДДДДДДДДЩ
  ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
  і  ЪДї       ЪДДДДДДДДДВДДДДДДДДДї  і
  АДДґCічДДДДДДґ15	 і	  0ічДЩ
     АДЩ       АДДДДДДДДДБДДДДДДДДДЩ
  ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
  і  ЪДї       ЪДДДДДДДДДВДДДДДДДДДВДДДДДДДДДВДДДДДДДДДї  і
  АДДґCічДДДДДДґ31	 і	   і	     і	      0ічДЩ
     АДЩ       АДДДДДДДДДБДДДДДДДДДБДДДДДДДДДБДДДДДДДДДЩ
	  RCR
  ЪДДДДДДДДДДДДДДДДДДДДДДДДДї
  і  ЪДї       ЪДДДДДДДДДї  і
  АДціCГДДДДДДці7	0ГДДЩ
     АДЩ       АДДДДДДДДДЩ
  ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
  і  ЪДї       ЪДДДДДДДДДВДДДДДДДДДї  і
  АДціCГДДДДДДці15	 і	  0ГДДЩ
     АДЩ       АДДДДДДДДДБДДДДДДДДДЩ
  ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
  і  ЪДї       ЪДДДДДДДДДВДДДДДДДДДВДДДДДДДДДВДДДДДДДДДї  і
  АДціCГДДДДДДці31	 і	   і	     і	      0ГДДЩ
     АДЩ       АДДДДДДДДДБДДДДДДДДДБДДДДДДДДДБДДДДДДДДДЩ
			    - 310 -
			    Описание
     Инструкция сдвигает биты  указанного  регистра  или  ячейки
памяти на количество бит,  указанное  операндом.  Флаг	переноса
участвует в сдвиге.
     Инструкция RCL   сдвигает биты  вверх  (  влево  ),  причем
старший бит перемещается во флаг переноса,  а  содержимое  флага
переноса в младший бит. Инструкция  RCR     сдвигает  биты  вниз
(вправо), причем младший бит в перенос, перенос в старший бит.
     Сдвиг производится на количество бит, указанное  во  втором
операнде  (в  регистре	CL    или  непосредственных  данных).  В
процессорах 80286 и 80386 учитываются  только  5  младших  битов
операнда  (старшие  маскируются)   для	  увеличения	скорости
выполнения инструкции  избежания  возможных  задержек  обработки
прерываний. В процессорах 8088	и  8086  старшие  биты	счетчика
сдвига не маскируются.
Время выполнения
     Время выполнения инструкции не зависит от	того,  на  какое
количество бит сдвигается опреранд. Устроиство сдвига процессора
80386 производит многобитные сдвиги также быстро, как и сдвиг на
один бит.
Сдвиг регистра через перенос: 9 тактов; 0.45 мкс. при 20 МГц.
Сдвиг ячейки памяти через перенос: 10 тактов; 0.5 мкс.- 20 МГц.
Устанавливаемые флаги
     Флаг переноса, как описывалось выше. Флаг	OF     определен
только для сдвигов на один бит. В этом случае  содержание  флага
определяется с помощью операции "исключающее  или"  между  двумя
старшими битами после сдвига. В случае однобитного сдвига  влево
содержимое флага OF  является результатом операции  "исключающее
или" между содежимым флага  переноса  после  сдвига  со  старшим
битом после сдвига. При  сдвигах  на  несколько  бит  содержимое
флага  OF  является неопределенным. На другие  флаги  инструкция
не влияет.
Исключения реального режима
     Такие же как и для инструкции  ADD.
Исключения защищенного режима
     Такие же как и для инструкции  ADD.
Исключения виртуального режима 8086
     Такие же как и для инструкции  ADD.
			    - 311 -
	       ЙННННННННННННННННННННННННННННННННН»
	       єRET	    Возврат из процедуры.є
	       ИНННННННННННННННННННННННННННННННННј
			     Формат
RET
Внутри сегмента      ЪДДДДДДДДї
		     і11000011і
		     АДДДДДДДДЩ
Внутри сегмента, с   ЪДДДДДДДДї 16-битное непосредствен-
добавлением непоср.  і11000010і ное смещение
смещения к ESP.      АДДДДДДДДЩ
Между сегментами     ЪДДДДДДДДї
		     і11001011і
		     АДДДДДДДДЩ
Между сегментами, с  ЪДДДДДДДДї
добавлением непоср.  і11000011і
смещения к ESP.      АДДДДДДДДЩ
			    Функции
    IF (ADRESS SIZE =32) THEN
    BEGIN
	 POP EIP;
    END
    ELSE
    BEGIN
	 POP IP;
    END
    IF RET IS INTERSEGMENT THEN
    BEGIN
	 POP CS;
    END
    IF RET HAS IMMEDIATE OPERAND THEN
    BEGIN
	 IF (OPERAND SIZE =32) THEN
	 ESP	ESP + (2* IMMEDIATE OPERAND);
	 ELSE
	 SP	SP + IMMEDIATE DATA;
    END
			    Описание
     Внутри кодового сегмента инструкция   RET	       поднимает
из стека значение  указателя  команд,  тем  самым  определяя,  с
какого адреса будет продолжено	выполнение  основной  программы.
Если адрес подпрограммы в инструкции	CALL	лежит в  том  же
кодовом сегменте, то  значение	регистра  кодового  сегмента  не
изменяется.
     В случае вызова подпрограммы в другом сегменте  в	реальном
режиме	или  виртуальном  режиме  8086	из  стека    поднимаются
указатель команды и значение кодового сегмента	для  продолжения
выполнения основной программы.
     В случае выполнения возврата в защищенном режиме,	действия
процессора могут быть довольно сложными  взависимости  от  того,
является ли селектор возврата:
       1. кодовым сегментом того же уровня привилегии (DPL=CPL)
       2. кодовым сегментом  более  высокого  уровня  привилегии
(DPL== CPL   ELSE  исключение
общей защиты (код ошибки - селектор возврата).
IF селектор возврата RPL = CPL
THEN переход на ТОТ-ЖЕ-УРОВЕНЬ
ELSE переход на ВНЕЮНИЙ-УРОВЕНЬ-ПРИВИЛЕГИЙ.
ТОТ-ЖЕ-УРОВЕНЬ:
Селектор возврата должен быть ненулевым ELSE  исключение  общей
защиты (код ошибки 0000 ).
Индекс селектора должен быть в	пределах,  указанных  в  таблице
дескрипторов ELSE исключение общей защиты (код ошибки -селектор
возврата ).
Байт описателя прав доступа AR	должен	разрешать  использование
кодового сегмента ELSE исключение общей защиты	(код  ошибки  -
селектор возврата).
IF несоответствующий кодовый сегмент
THEN  DPL   кодового сегмента должен =	CPL	 ELSE  исключение
общей защиты (код ошибки - селектор возврата ).
IF соответствующий кодовый сегмент, то DPL   кодового сегмента
должен = CPL
ELSE
Кодовый  сегмент  должен   присутствовать    ELSE    исключение
отсутствия ( см. выше ).
Верхнее слово  стека  должно  быть  в  стековых  пределах  ELSE
исключение стекового сбоя (код ошибки  0000).
Указатель инструкций должен быть в  пределах  кодового	сегмента
ELSE исключение отсутствия (код ошибки 0000 ).
IF размер операнда = 32
THEN
   Загрузить  CS:EIP  из стека.
   Загрузить кэш дескриптора сегмента дескриптором CS.
   Увеличить  указатель  стека	на  8  плюс  удвоенная	величина
   непосредственного смещения (если присутствует ).
ELSE
   Загрузить  CS:IP   из стека.
   Загрузить кэш дескриптора сегмента дескриптором CS.
   Увеличить   указатель    стека    на    4	плюс	величина
   непосредственного смещения (если присутствует ).
			    - 313 -
ВНЕЮНИЙ-УРОВЕНЬ-ПРИВИЛЕГИЙ:
IF размер операнда = 32
THEN верхние (16+непосредственное смещение) байты стека должны в
стековых пределах ELSE исключение стекового  сбоя  (код  ошибки
0000 ).
ELSE верхние (8+непосредственное смещение) байты стека должны в
стековых пределах ELSE исключение стекового  сбоя  (код  ошибки
0000 ).
Проверить селектор кодового сегмента возврата и  соответствующий
дескриптор:
Селектор должен быть ненулевым	ELSE  исключение  общей  защиты
(код ошибки 0000 ).
Индекс селектора должен лежать в пределах  таблицы  дескрипторов
ELSE исключение общей защиты (код ошибки - селектор возврата ).
Байт описателя прав доступа AR	должен	разрешать  использование
кодового сегмента ELSE исключение общей защиты	(код  ошибки  -
селектор возврата).
IF несоответствующий кодовый сегмент
THEN  DPL   кодового сегмента должен = RPL	 ELSE  исключение
общей защиты (код ошибки - селектор возврата ).
IF соответствующий кодовый сегмент, то DPL   кодового сегмента
должен быть =< CPL
ELSE исключение общей защиты (код ошибки - селектор возврата ).
Кодовый  сегмент  должен   присутствовать    ELSE    исключение
отсутствия (код ошибки - селектор возврата ).
Проверить селектор стекового сегмента возврата и соответствующий
дескриптор:
Селектор должен быть ненулевым	ELSE  исключение  общей  защиты
(код ошибки 0000 ).
Индекс селектора должен лежать в пределах  таблицы  дескрипторов
ELSE исключение общей защиты (код ошибки - селектор стека ).
Байт описателя прав доступа (AR) должен разрешать использование
кодового сегмента ELSE исключение общей защиты	(код  ошибки  -
селектор стека).
RPL    селектора должен =  RPL	      селектора  возврата  ELSE
исключение общей защиты (код ошибки - селектор стека )
DPL    стекового сегмента должен = RPL	     селектору	возврата
кодового сегмента ELSE исключение общей защиты	(код  ошибки  -
селектор возврата ).
Указатель  инструкцию  должен  находиться  в  пределах	кодового
сегмента ELSE исключение общей защиты (код ошибки 0000 ).
Установить  CPL   равным  RPL	   селектора  возврата	кодового
сегмента.
IF размер операнда = 32
THEN
     Загрузить	CS:IP  из стека.
     Установить поле RPL   кодового сегмента равным  CPL.
     Увеличить	ESP    на 8+непосредственное смещение,если есть.
     Загрузить	SS:ESP	   из стека.
ELSE
     Загрузить	CS:IP  из стека.
     Установить поле RPL  кодового сегмента равным  CPL.
     Увеличить	ESP  на 4+непосредственное смещение,если есть.
     Загрузить	SS:SP  из стека.
			    - 314 -
Загрузить кэш дескриптора кодового сегмента дескриптором CS.
Загрузить кэш дескриптора стекового сегмента дескриптором SS.
Для каждого из регистров ES, FS, GS, DS.
DO
IF текущее значение RPL сегментного регистра не  подходит  для
использования на внешнем уровне
THEN очистить сегментный регистр  и  соответствующий  флаовый  би
допустимости.
Допустимой  считается  установка    регистра,	 удовлетворяющая
следующим требованиям:
индекс селектора должен быть в пределах таблицы дескрипторов;
байт прав доступа ( AR )  должен  описывать  сегмент  данных  и
кодовый сегмент, разрешенный для чтения;
IF сегмент является  сегментом	данных	или  несоответствующим
кодовым, THEN DPL должен быть >= CPL или DPL	должен	быть  >=
RPL.
Устанавливаемые флаги
      Флаги  не   устанавливаются    за    исключением	  случая
переключения задач в защищенном режиме.
Исключения реального режима
      Прерывание 13, если какая-либо часть операнда памяти имеет
эффективный адрес, больший, чем 65535 в сегментах CS,DS,FS,ES,GS
Прерывание 12, если какая-либо часть  операнда	 памяти    имеет
эффективный адрес, больший, чем 65535 в стековом сегменте  SS.
Исключения защищенного режима
      Исключение общей защиты (исключение  13)	с  кодом  ошибки
0000 для операндов в сегментах памяти CS, DS, ES, FS, GS,   если
операнд находится в недоступном для чтения кодовом сегменте, или
какая-либо часть операнда имеет эффективный  адрес,  лежащий  за
пределами сегмента. Стековое исключение (исключение 12 ) с кодом
ошибки 0000 для операндов в стековом сегменте,	если  какая-либо
часть операнда имеет эффективный  адрес,  лежащий  за  пределами
сегмента.  Стековое  исключение  с  кодом  ошибки    сегментного
селектора,  если  операнд  находится  в    стековом    сегменте,
отмеченном как несуществующий.	Исключение  отсутвия  (ислючение
11) с кодом ошибки сегментного селектора, если операнд находится
в сегменте памяти  DS,	ES,  FS,  GS,		 отмеченном  как
несуществующий. Исключение страничного сбоя  (исключение  14)  с
кодом ошибки сбоя и линейным адресом страницы в регистре CR2.
Исключения виртуального режима 8086
     Такие же, как и для реального режима, но  обрабатываются  в
защищенном режиме на нулевом  уровне  привилегий.  Формат  стека
нулевого уровня после возникновения исключения (с кодом  ошибки)
или прерывания (без кода ошибки) показан на рис 12.2.
     Исключение страничного сбоя с кодом ошибки сбоя и	линейным
адресом страницы в регистре CR2.
			    - 315 -
	    ЙНННННННННННННННННННННННННННННННННННННННН»
	    єROL       Циклический сдвиг влево.вправоє
	    ИННННННННННННННННННННННННННННННННННННННННј
			     Формат
ROL
			   Байт 0	      Байт 1
Регистр.память на 1  ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
		     і1 1 0 1 0 0 0 w  і mod:0 0 0: r/mі
		     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Регистр.память на    ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
число в регистре CL  і1 1 0 1 0 0 1 w  і mod:0 0 0: r/mі
		     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Регистр.память на    ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї  8-бит
непоср. число (байт2)і1 1 0 0 0 0 0 w  і mod:0 0 0: r/mі  непоср
		     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ  данные
Регистр/память на 1  ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
		     і1 1 0 1 0 0 0 w  і mod:0 0 1: r/mі
		     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Регистр/память на    ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
число в регистре CL  і1 1 0 1 0 0 1 w  і mod:0 0 1: r/mі
		     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Регистр/память на    ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї  8-бит
непоср. число (байт2)і1 1 0 0 0 0 0 w  і mod:0 0 1: r/mі  непоср
		     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ  данные
			    Функции
	  ROL
	    ЪДДДДДДДДДДДДДДДї
     ЪДї    і  ЪДДДДДДДДДї  і
     іCічДДДБДДґ7	0ічДЩ
     АДЩ       АДДДДДДДДДЩ
	    ЪДДДДДДДДДДДДДДДДДДДДДДДДДї
     ЪДї    і  ЪДДДДДДДДДВДДДДДДДДДї  і
     іCічДДДБДДґ15	 і	  0ічДЩ
     АДЩ       АДДДДДДДДДБДДДДДДДДДЩ
	    ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
     ЪДї    і  ЪДДДДДДДДДВДДДДДДДДДВДДДДДДДДДВДДДДДДДДДї  і
     іCічДДДБДДґ31	 і	   і	     і	      0ічДЩ
     АДЩ       АДДДДДДДДДБДДДДДДДДДБДДДДДДДДДБДДДДДДДДДЩ
	  ROR
	    ЪДДДДДДДДДДДДДДДї
     ЪДї    і  ЪДДДДДДДДДї  і
     іCічДДДБДці7	0ГДДЩ
     АДЩ       АДДДДДДДДДЩ
	    ЪДДДДДДДДДДДДДДДДДДДДДДДДДї
     ЪДї    і  ЪДДДДДДДДДВДДДДДДДДДї  і
     іCічДДДБДці15	 і	  0ГДДЩ
     АДЩ       АДДДДДДДДДБДДДДДДДДДЩ
	    ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
     ЪДї    і  ЪДДДДДДДДДВДДДДДДДДДВДДДДДДДДДВДДДДДДДДДї  і
     іCГчДДДБДці31	 і	   і	     і	      0ГДДЩ
     АДЩ       АДДДДДДДДДБДДДДДДДДДБДДДДДДДДДБДДДДДДДДДЩ
			    - 316 -
			    Описание
     Инструкции  ROL   и ROR  сдвигают биты регистра или  ячейки
памяти на число бит, указанное в первом операнде.
     Инструкция  ROL   сдвигает биты вверх  (влево),  пересылает
старший бит во флаг переноса и младший бит. Инструкция	   ROR
сдвигает биты вниз (вправо) и пересылает  младший  бит	во  флаг
переноса и старший бит.
     Сдвиг производится на количество бит, указанное  во  втором
операнде, регистре  CL,  или непосредственных данных  (байт  2).
В процессорах 80386 и 80286 используются только 5 младших  битов
счетчика сдвига (число от 0 до 31), остальные  биты  маскируются
для уменьшения времени выполнения  команды  и  больших	задержек
приема сигнала прерывания. Процессоры 8086 и 8088  не  маскируют
биты счетчика сдвига.
Время выполнения
     Время выполнения инструкции не зависит от	количества  бит,
на которое  производится  сдвиг.  Устройство  сдвига  процессора
80386  производит  многобитный	сдвиг  так  же	быстро,  как   и
однобитный.
Сдвиг регистра:        3 такта; 0.15 мкс. на 20 МГц.
Сдвиг ячейки памяти:   7 тактов; 0.35 мкс. при 20 МГц.
Устанавливаемые флаги
     Флаг переноса устанавливается как описано выше. Флаг   OF
определен только для сдвига на 1.  В  этом  случае  он	является
результатом  операции  "исключающее  ИЛИ"  над  содержимым  двух
старших битов после  выполнения  сдвига.  В  случае  однобитного
сдвига влево, этот флаг является результатом "исключающего  ИЛИ"
между  флагом  переноса  и  старшим  битом  после  сдвига.   Для
многобитных или нулевых сдвигов флаг OF  не определен. На другие
флаги инструкция не влияет.
Исключения реального режима
     Те же, что и для инструкции   ADD.
Исключения защищенного режима
     Те же, что и для инструкции   ADD.
Исключения виртуального режима 8086
     Те же, что и для инструкции    ADD.
			    - 317 -
	   ЙННННННННННННННННННННННННННННННННННННННННН»
	   єSAHF       Переслать регистр АН в регистрє
	   ИНННННННННННННННННННННННННННННННННННННННННј
			     Формат
		     ЪДДДДДДДДї
SAHF		     і10011110і
		     АДДДДДДДДЩ
			    Функции
     Скопировать регистр АН в младший байт регистра флагов.
			    Описание
     Инструкция копирует регистр АН  в	младший  байт  флагового
регистра. Содержание регистра АН  со  старшего	по  младший  бит
интерпретируется следующим образом:  AF,  ZF, не  влияет, AF,
PF, не влияет, CF.
Время выполнения
     2 такта; 0.1 мкс. на частоте 20 МГц.
Исключения реального режима
     Нет.
Исключения защищенного режима
     Нет.
Исключения виртуального режима 8086
     Нет.
			    - 318 -
	   ЙНННННННННННННННННННННННННННННННННННННННННН»
	   єSAL/SAR  Арифметический сдвиг влево.вправоє
	   ИННННННННННННННННННННННННННННННННННННННННННј
			     Формат
SAL (то же, что и SHL)	   Байт 0	      Байт 1
Регистр/память на 1  ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
		     і1 1 0 1 0 0 0 w  і mod:1 0 0: r/mі
		     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Регистр/память на    ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
число в регистре CL  і1 1 0 1 0 0 1 w  і mod:1 0 0: r/mі
		     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Регистр/память на    ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї  8-бит
непоср. число (байт2)і1 1 0 0 0 0 0 w  і mod:1 0 0: r/mі  непоср
		     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ  данные
Регистр/память на 1  ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
		     і1 1 0 1 0 0 0 w  і mod:1 1 1: r/mі
		     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Регистр/память на    ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
число в регистре CL  і1 1 0 1 0 0 1 w  і mod:1 1 1: r/mі
		     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Регистр/память на    ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї  8-бит
непоср. число (байт2)і1 1 0 0 0 0 0 w  і mod:1 1 1: r/mі  непоср
		     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ  данные
			    Функции
	  SAL
	      ЪДДДДДДДДДї   ЪДї
       0ДДДДДці7       0ГДДціCі
	      АДДДДДДДДДЩ   АДЩ
	      ЪДДДДДДДДДВДДДДДДДДДї    ЪДї
       0ДДДДДці15	і	 0ГДДДціCі
	      АДДДДДДДДДБДДДДДДДДДЩ    АДЩ
	      ЪДДДДДДДДДВДДДДДДДДДВДДДДДДДДДВДДДДДДДДДї    ЪДї
       0ДДДДДці31	і	  і	    і	     0ГДДДціCі
	      АДДДДДДДДДБДДДДДДДДДБДДДДДДДДДБДДДДДДДДДЩ    АДЩ
	  SAR
	    ЪДДДї
	    і  ЪБДДДДДДДДї   ЪДї
	    АДці7	0ГДДціCі
	       АДДДДДДДДДЩ   АДЩ
	    ЪДДДї
	    і  ЪБДДДДДДДДВДДДДДДДДДї   ЪДї
	    АДці15	 і	  0ГДДціCі
	       АДДДДДДДДДБДДДДДДДДДЩ   АДЩ
	    ЪДДДї
	    і  ЪБДДДДДДДДВДДДДДДДДДВДДДДДДДДДВДДДДДДДДДї   ЪДї
	    АДці31	 і	   і	     і	      0ГДДціCі
	       АДДДДДДДДДБДДДДДДДДДБДДДДДДДДДБДДДДДДДДДЩ   АДЩ
			    - 319 -
			    Описание
     Инструкции  SAL   и SAR  сдвигают биты регистра или  ячейки
памяти на число бит, указанное в первом операнде.
     Инструкция  SAL   сдвигает биты вверх  (влево),  пересылает
старший бит во флаг переноса  и  0  в  младший	бит.  Инструкция
SAR	   сдвигает биты вниз (вправо) и пересылает младший  бит
во флаг переноса и дублирует старший бит  в  старший  бит  после
сдвига.
     Сдвиг производится на количество бит, указанное  во  втором
операнде, регистре  CL,  или непосредственных данных  (байт  2).
В процессорах 80386 и 80286 используются только 5 младших  битов
счетчика сдвига (число от 0 до 31), остальные  биты  маскируются
для уменьшения времени выполнения  команды  и  больших	задержек
приема сигнала прерывания. Процессоры 8086 и 8088  не  маскируют
биты счетчика сдвига.
Время выполнения
     Время выполнения инструкции не зависит от	количества  бит,
на которое  производится  сдвиг.  Устройство  сдвига  процессора
80386  производит  многобитный	сдвиг  так  же	быстро,  как   и
однобитный.
Сдвиг регистра:        3 такта; 0.15 мкс. на 20 МГц.
Сдвиг ячейки памяти:   7 тактов; 0.35 мкс. при 20 МГц.
Устанавливаемые флаги
     Флаг переноса устанавливается как описано выше. Флаг    OF
определен только для сдвига на 1.  В  этом  случае  он	является
результатом  операции  "исключающее  ИЛИ"  над  содержимым  двух
старших битов после  выполнения  сдвига.  В  случае  однобитного
сдвига влево, этот флаг является результатом "исключающего  ИЛИ"
между  флагом  переноса  и  старшим  битом  после  сдвига.   Для
многобитных или нулевых сдвигов флаг OF  не определен. На другие
флаги инструкция не влияет.
Исключения реального режима
     Те же, что и для инструкции  ADD.
Исключения защищенного режима
     Те же, что и для инструкции  ADD.
Исключения виртуального режима 8086
     Те же, что и для инструкции  ADD.
			    - 320 -
	  ЙННННННННННННННННННННННННННННННННННННННННННН»
	  єSBB	     Целочисленное вычитание с заемом.є
	  ИНННННННННННННННННННННННННННННННННННННННННННј
			     Формат
SBB
Вычитание		   Байт 0	  Байт 1
между регистрами     ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДї
		     і0 0 0 1 1 0 d w іmod: reg : r/mі
		     АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДЩ
Регистра из ячейки   ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДї
памяти		     і0 0 0 1 1 0 0 w іmod: reg : r/mі
		     АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДЩ
Содержимого ячейки   ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДї
памяти из регистра   і0 0 0 1 1 0 1 w іmod: mod : r/mі
		     АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДЩ
Непосредственных     ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДї	Байт(ы)
данных из регистра.  і1 0 0 0 0 0 s w іmod:0 1 1: r/mі	непоср.
памяти		     АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДЩ	данных
Непосредственные     ЪДДДДДДДДДДДДДДДДї Байт(ы) непосредственных
данные из регистра   і0 0 0 1 1 1 0 w і данных
Аl, АХ,ЕАХ )короткая АДДДДДДДДДДДДДДДДЩ
кодировка)
			    Функции
Операнд-приемник <= операнд-приемник - операнд-источник - СF;
    или
Операнд-приемник <= операнд-приемник - непоср. данные - СF.
			    Описание
     Инструкция производит вычитание второго  операнда	и  флага
переноса из первого  операнда.	Результат  помещается  в  первый
операнд.
Пример
     Если  СF=1,  ЕСХ=00000034(16), ЕDХ=00000052(16), то в
результате выполнения инструкции ЕСХ=FFFFFFАС(16), флаг СF=1.
Время выполнения
Регистр-регистр 	     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.
Исключения виртуального режима
     Те же, что и для инструкции  АDD.
			    - 321 -
      ЙННННННННННННННННННННННННННННННННННННННННННННННННННН»
      єSCASB/SCASW/SCASD  Сканирование строчной информацииє
      ИНННННННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
		     ЪДДДДДДДДї
SCASB/SCASW/SCASD    і1010111wі
		     АДДДДДДДДЩ
			    Функции
AL/AX/EAX-операнд_строки  (производится вычитание для сравнения)
IF (РАЗМЕР ОПЕРАНДА=32) THEN
  УСТАНОВИТЬ EDI	  (установить индекс для операнда)
ELSE	(размер адреса = 16)
  УСТАНОВИТЬ DI
			    Описание
     Вычитает операнд памяти (элемент строки) из регистра АL/
АХ/ЕАХ.    Результат  вычитания  игнорируется.	 Устанавливаются
только соответствующие флаги. Считается, что строка  состоит  из
байтов,  слов,	или  двойных  слов,  в	зависимости  от  размера
операнда  строчной  инструкции.  После	 выполнения    вычитания
индексный регистр, определяющий расположение строчного операнда,
уменьшается или увеличивается ( взависимости  от  флага  DF )
автоматически на величину операнда.
     Если адресный размер  инструкции  -  двойное  слово,  то  в
качестве указателя используется ЕS:[EDI]. В противном  случае
используется  ЕS:[DI].
     Загружайте   соответсвующие    значения	идексов    перед
выполнением инструкции MOVS.
Пример
	SCASD	;сравнивает 32-битный операнд строки с регистром
		; ЕАХ
REPE	SCASD	;повторение инструкции обеспечивает
		; последовательное сравнение пока не будет най-
		; дено совпадение или исчерпан счетчик в ЕСХ
REPE	SCASD	;повторение инструкции обеспечивает
		; последовательное сравнение пока не будет най-
		; дено несовпадение или исчерпан счетчик в ЕСХ
     Так как для использования инструкции  необходимо  загружать
индексный регистр, целесообразно использовать ее в цикле.
Время выполнения
Без повторения: 	7 тактов; 0.35 мкс. при 20 МГц.
С повторением:		5+8;n  тактов; 0.25+0.4;n мкс., 20 МГц.
	 где  n - число повторений.
Устанавливаемые флаги
     Флаги не устанавливаются.
Исключения реального режима
     Те же, что и для инструкции АDD.
Исключения защищенного режима
     Те же, что и для инструкции АDD.
Исключения виртуального режима
     Те же, что идля инструкции  АDD.
			    - 322 -
     ЙННННННННННННННННННННННННННННННННННННННННННННННННННННН»
     єSETCC	Установить байт в случае выполнения условияє
     ИНННННННННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
			      ДДДДДД
SET cc		   Байт 0	    Байт 1	     Байт 2
	     ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДВДВДВДДДДДВВДВї
	     і0 0 0 0 1 1 1 1 і1 0 0 1 с с с с	іmodі0 0 0іr/mі
	     АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДБДБДБДДДДДББДБЩ
с с с с    Условие
ДДДДДДДДДДДДДДДДДД
0 0 0 0    Переполнение
0 0 0 1    НЕ Переполнение
0 0 1 0    Ниже / НЕ Выше или Равно
0 0 1 1    НЕ ниже / Выше или Равно
0 1 0 0    Равно / Ноль
0 1 0 1    НЕ Равно / НЕ Ноль
0 1 1 0    Ниже или Равно / НЕ выше
0 1 1 1    НЕ Ниже или Равно / Выше
1 0 0 0    Знак / Отрицательно
1 0 0 1    НЕ Знак / Положительно
1 0 1 0    Равенство / Равенство Четно
1 0 1 1    НЕ Равенство / Равенство Нечетно
1 1 0 0    Меньше / НЕ Больше или Равно
1 1 0 1    НЕ Меньше / Больше или Равно
1 1 1 0    Меньше или Равно / НЕ Больше
1 1 1 1    НЕ Меньше или Равно / Больше
			    Функции
IF (УСЛОВИЕ ВЫПОЛНЯЕТСЯ) THEN
  ОПЕРАНД <= 01 	  (обозначить выполнение условия)
ELSE  ОПЕРАНД <= 00	  (обозначить невыполнение условия)
			    Описание
     Инструкция предоставляет простое средство установки Булевых
переменных. Значение переменной устанавливается в соответствии с
выполнением  указанного  условия.  Если  условие    выполняется,
переменная принимает значение 01. Если не выполняется - 00.
Пример
SETNO TEST_PASSED;переменная TEST_PASSED принимает значение 01,
		 ;если переполнения не произошло.
Время выполнения
Условная уст. регистра:  4 такта; 0.2 мкс. при 20 МГц.
Условная уст. памяти:	 5 тактов; 0.25 мкс. при 20 МГц.
Устанавливаемые флаги
     Флаги не устанавливаются.
Исключения реального режима
     Те же, что и для инструкции АDD.
Исключения защищенного режима
     Те же, что и для инструкции АDD.
Исключения виртуального режима
     Те же, что идля инструкции  АDD.
			    - 323 -
    ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
    єSGDT   Записать в память регистр Глобального Дескрипторає
    ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
SGDT		   Байт 0	    Байт 1	     Байт 2
	     ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
	     і0 0 0 0 1 1 1 1 і0 0 0 0 0 0 0 1і mod:0 0 0: r/mі
	     АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
			    Функции
IF (РАЗМЕР ОПЕРАНДА=32) THEN
  ПАМЯТЬ 16:24 <= GDTR.LIMIT:GDTR.BASE (записано 24 бита базы)
ELSE
  ПАМЯТЬ 16:32 <= GTDR.LIMIT:GDTR.BASE (записано 32 бита базы)
			    Описание
     Инструкция записывает в память значение границы и	линейный
адрес из регистра   GDTR.	  Инструкция  предназначена  для
использования операционной  системой.  Однако,	она  может  быть
использована на любом  уровне  привилегий  (в  процессоре  80286
привилегированной  операцией  является	только	згрузка    этого
регистра).
Пример
SGDT  GDT_COPY		  ;записать содержимое GDTR.
Время выполнения
     9 тактов; 0.45 мкс. при тактовой частоте 20 МГц.
Устанавливаемые флаги
     Флаги не устанавливаются.
Исключения реального режима
     Те же, что и для инструкции АDD.
Исключения защищенного режима
     Те же, что и для инструкции АDD.
Исключения виртуального режима
     Те же, что идля инструкции  АDD.
			    - 324 -
	   ЙНННННННННННННННННННННННННННННННННННННННННН»
	   єSHL/SHR	Логический  сдвиг влево.вправоє
	   ИННННННННННННННННННННННННННННННННННННННННННј
			     Формат
			   Байт 0	      Байт 1
Регистр/память на 1  ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
		     і1 1 0 1 0 0 0 w  і mod:1 0 0: r/mі
		     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Регистр/память на    ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
число в регистре CL  і1 1 0 1 0 0 1 w  і mod:1 0 0: r/mі
		     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Регистр/память на    ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї  8-бит
непоср. число (байт2)і1 1 0 0 0 0 0 w  і mod:1 0 0: r/mі  непоср
		     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ  данные
Регистр/память на 1  ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
		     і1 1 0 1 0 0 0 w  і mod:1 0 1: r/mі
		     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Регистр/память на    ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
число в регистре CL  і1 1 0 1 0 0 1 w  і mod:1 0 1: r/mі
		     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Регистр/память на    ЪДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї  8-бит
непоср. число (байт2)і1 1 0 0 0 0 0 w  і mod:1 0 1: r/mі  непоср
		     АДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ  данные
			    Функции
	  SHL
	 ЪДї  ЪДДДДДДДДДї
	 іCГчДґ7       0ГчДДД0
	 АДЩ  АДДДДДДДДДЩ
	 ЪДї  ЪДДДДДДДДДВДДДДДДДДДї
	 іCГчДґ15	і	 0ГчДДД0
	 АДЩ  АДДДДДДДДДБДДДДДДДДДЩ
	 ЪДї  ЪДДДДДДДДДВДДДДДДДДДВДДДДДДДДДВДДДДДДДДДї
	 іCГчДґ31	і	  і	    і	     0ГчДД0
	 АДЩ  АДДДДДДДДДБДДДДДДДДДБДДДДДДДДДБДДДДДДДДДЩ
	  SHR
	       ЪДДДДДДДДДї   ЪДї
	0ДДДДДці7	0ГДДціCі
	       АДДДДДДДДДЩ   АДЩ
	       ЪДДДДДДДДДВДДДДДДДДДї   ЪДї
	0ДДДДДці15	 і	  0ГДДціCі
	       АДДДДДДДДДБДДДДДДДДДЩ   АДЩ
	       ЪДДДДДДДДДВДДДДДДДДДВДДДДДДДДДВДДДДДДДДДї   ЪДї
	0ДДДДДці31	 і	   і	     і	      0ГДДціCі
	       АДДДДДДДДДБДДДДДДДДДБДДДДДДДДДБДДДДДДДДДЩ   АДЩ
			    - 325 -
			    Описание
     Инструкции  SHL   и  SHR сдвигают биты регистра или  ячейки
памяти на число бит, указанное в первом операнде.
     Инструкция  SHL   сдвигает биты вверх  (влево),  пересылает
старший бит во флаг переноса  и  0  в  младший	бит.  Инструкция
SHR	   сдвигает биты вниз (вправо) и пересылает младший  бит
во флаг переноса и 0 в старший бит.
     Сдвиг производится на количество бит, указанное  во  втором
операнде, регистре   CL, или непосредственных данных  (байт  2).
В процессорах 80386 и 80286 используются только 5 младших  битов
счетчика сдвига (число от 0 до 31), остальные  биты  маскируются
для уменьшения времени выполнения  команды  и  больших	задержек
приема сигнала прерывания. Процессоры 8086 и 8088  не  маскируют
биты счетчика сдвига.
Время выполнения
     Время выполнения инструкции не зависит от	количества  бит,
на которое  производится  сдвиг.  Устройство  сдвига  процессора
80386  производит  многобитный	сдвиг  так  же	быстро,  как   и
однобитный.
Сдвиг регистра:        3 такта; 0.15 мкс. на 20 МГц.
Сдвиг ячейки памяти:   7 тактов; 0.35 мкс. при 20 МГц.
Устанавливаемые флаги
     Флаг переноса устанавливается как описано выше. Флаг  OF
определен только для сдвига на 1.  В  этом  случае  он	является
результатом  операции  "исключающее  ИЛИ"  над  содержимым  двух
старших битов после  выполнения  сдвига.  В  случае  однобитного
сдвига влево, этот флаг является результатом "исключающего  ИЛИ"
между  флагом  переноса  и  старшим  битом  после  сдвига.   Для
многобитных или нулевых сдвигов флаг OF  не определен. На другие
флаги инструкция не влияет.
Исключения реального режима
     Те же, что и для инструкции  ADD.
Исключения защищенного режима
     Те же, что и для инструкции  ADD.
Исключения виртуального режима 8086
     Те же, что и для инструкции  ADD.
			    - 326 -
	ЙНННННННННННННННННННННННННННННННННННННННННННННННН»
	єSHLD/SHRD   Сдвиг двойной точности влево.вправо.є
	ИННННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
SHLD		    Байт 0	     Байт 1	      Байт 2
Регистр/памятьЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
на непоср. сч.і0 0 0 0 1 1 1 1і 1 0 1 0 0 1 0 0і mod: reg :r/m і
	      АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Регистр/памятьЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
на содерж. СL.і0 0 0 0 1 1 1 1і 1 0 1 0 0 1 0 1і mod: reg : r/mі
	      АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Регистр/памятьЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
ан непоср. сч.і0 0 0 0 1 1 1 1і 1 0 1 0 1 1 0 0і mod: reg : r/mі
	      АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Регистр/памятьЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
на содерж. СL.і0 0 0 0 1 1 1 1і 1 0 1 0 1 1 0 0і mod: reg : r/mі
	      АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
			    Функции
	  SHLD
      ЪДї     ЪДДДДДДДДДї   ЪДДДДДДДДДї
      іCічДДДДґ7       0ічДДґ7	     0і
      АДЩ     АДДДДДДДДДЩ   АДДДДДДДДДЩ
	       r/m-операнд   reg-операнд
      ЪДї     ЪДДДДДДДДДВДДДДДДДДДї    ЪДДДДДДДДДВДДДДДДДДДї
      іCічДДДДґ15	і	 0ічДДДґ15	 і	  0і
      АДЩ     АДДДДДДДДДБДДДДДДДДДЩ    АДДДДДДДДДБДДДДДДДДДЩ
	       r/m-операнд		 reg-операнд
      ЪДї     ЪДДДДДДДДДВДДДГДДДДДї    ЪДДДДДДГДДВДДДДДДДДДї
      іCічДДДДґ31	і	 0ічДДДґ31	 і	  0і
      АДЩ     АДДДДДДДДДБДДДДДГДДДЩ    АДДДДДДДДГБДДДДДДДДДЩ
		r/m-операнд		 reg-операнд
	 SHRD
			   ЪДДДДДДДДДї	    ЪДДДДДДДДДї   ЪДї
			   і7	    0ГДДДДДці7	     0ГДДціCі
			   АДДДДДДДДДЩ	    АДДДДДДДДДЩ   АДЩ
			    reg-операнд      r/m-операнд
       ЪДДДДДДДДДВДДДДДДДДДї	  ЪДДДДДДДДДВДДДДДДДДДї   ЪДї
       і15	 і	  0ГДДДДДці15	    і	     0ГДДціCі
       АДДДДДДДДДБДДДДДДДДДЩ	  АДДДДДДДДДБДДДДДДДДДЩ   АДЩ
	reg-операнд		   r/m-операнд
	ЪДДДДДДДДДВДДДДДДДДДї	  ЪДДДДДДДГДВДДДДДДДДДї   ЪДї
	і31	  і	   0ГДДДДці31	    і	     0ГДДціCі
	АДДДДДДДДДБДДДДДДДДДЩ	  АДДДДДДГДДБДДДДДДДДДЩ   АДЩ
	 reg-операнд		   r/m-операнд
			    - 327 -
			    Описание
     Эти новые инструкции производят  сдвиги,  охватывающие  два
операнда. Если	требуется  сдвинуть  длинную  последовательность
байт, то с помощью этих инструкций можно производить сдвиг сразу
на 32 бита, а не на 16.  Первый операнд (определяемый полем r/m)
сдвигается влево или  вправо  на  количество  бит,  указанное  в
непосредственных  данных  после  инструкции  или  на  содержимое
регистра СL.  Биты регистрового операнда сдвигаются  в	операнд,
указанный полем r/m.  Содержимое регистрового операнда при  этом
не изменяется.
     Особенностью  и  достоинством  этой  инструкции	является
возможность  переслать	из  одного  регистра  в  другой   нужное
количество бит, как показано в разделе "Функции". Так как  биты,
используемые при сдвиге, находятся в указанном регистре,  данная
инструкция полезна при	выполнении  многобитных  сдвигов  (64  и
более бит). Флаги   SF, ZF, PF	устанавливаются  в
соответствии с результирующим содержимым  первого  операнда.  Во
флаге СF содержится последний бит, участвовавший в сдвиге.
Пример
SHLD	      ;двойной сдвиг влево.
     Приложение  Н  иллюстрирует  использование  инструкций    в
алгоритмах битовых вставок и удалений.
Время выполнения
     Время  выполнения	не  зависит  от  того,	на  сколько  бит
производится  сдвиг.  Устройство   сдвига    процессора    80386
производит многобитный сдвиг также быстро, как и однобитный.
Сдвиг регистра: 	3 такта; 0.15 мкс. при 20 МГц.
Сдвиг ячейки памяти:	7 тактов; 0.35 мкс. при 20 МГц.
Устанавливаемые флаги
     Флаги SF, ZF  и  PF      устанавливаются  в  соотвествии  с
результатом в первом  операнде.  Содержимое  флага  определяется
последним битом, вышедшим  из первого операнда. Остальные  флаги
не изменяются.
Исключения реального режима
     Те же, что и для инструкции  ADD.
Исключения защищенного режима
     Те же, что и для инструкции  ADD.
Исключения виртуального режима 8086
     Те же, что и для инструкции  ADD.
			    - 328 -
    ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
    єSIDT    Записать в память дескриптор таблицы прерываний.є
    ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
SIDT
	      ЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
	      і0 0 0 0 1 1 1 1і 0 0 0 0 0 0 0 1і mod:0 0 1: r/mі
	      АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
			    Функции
IF (РАЗМЕР ОПЕРАНДА=32) THEN
  ПАМЯТЬ 16:24 <= GDTR.LIMIT:GDTR.BASE (записано 24 бита базы)
ELSE
  ПАМЯТЬ 16:32 <= GTDR.LIMIT:GDTR.BASE (записано 32 бита базы)
			    Описание
     Инструкция  записывает  в	память	граничное  значение    и
линейный адрес базы из регистра  IDTR.	Инструкция
предназначена для использования операционной  системой.  Однако,
она может выполняться на любом уровне привилегий  (в  процессоре
80286	 только    операция    загрузки    регистра	является
привилегированной инструкцией).
Пример
SIDT  IDT_COPY		  ;записать значение IDTR в память.
Время выполнения
	 9 тактов; 0.45 мкс. при тактовой частоте 20 МГц.
Устанавливаемые флаги
     Флаги не устанавливаются.
Исключения реального режима
     Те же, что и для инструкции  ADD.
Исключения защищенного режима
     Те же, что и для инструкции  ADD.
Исключения виртуального режима 8086
     Те же, что и для инструкции  ADD.
			    - 329 -
    ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
    єSLDT   Записать регистр локальной таблицы дескрипторов.є
    ИНННННННННННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
SLDT
	      ЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
	      і0 0 0 0 1 1 1 1і 0 0 0 0 0 0 0 0і mod:0 0 1: r/mі
	      АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
			    Функции
    ОПЕРАНД <= LDTR	       ; 16-битный селектор
			    Описание
     Инструкция  записывает  селектор из LDTR ( Регистр локаль-
ной таблицы дескрипторов).  Инструкция предназначена для исполь-
зования  в защищенном режиме	операционной  системой.  Однако,
она может выполняться на любом уровне привилегий  (в  процессоре
80286	 только    операция    загрузки    регистра	является
привилегированной инструкцией).
Пример
SLDT  LDT_COPY		  ;записать значение LDTR в операнд.
Время выполнения
	 2 такта; 0.1 мкс. при тактовой частоте 20 МГц.
Устанавливаемые флаги
     Флаги не устанавливаются.
Исключения реального режима
     Прерывание 6. SLDT не применима в этом режиме.
Исключения защищенного режима
     Те же, что и для инструкции  ADD.
Исключения виртуального режима 8086
     Неверный код операции (исключение 6). SLDT не  применима  в
этом режиме.
			    - 330 -
	ЙННННННННННННННННННННННННННННННННННННННННННННННН»
	єSMSW	Записать регистр слова состояния машины.є
	ИНННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
SMSW
	      ЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
	      і0 0 0 0 1 1 1 1і 0 0 0 0 0 0 0 1і mod:1 0 0: r/mі
	      АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
			    Функции
   16-битный ОПЕРАНД <= MSW   ; MSW - это младший бит CRO
			    Описание
     Инструкция записывает младший бит регистра CRO в  указанный
операнд.  Однако более предпочтительно	использовать  инструкцию
MOV операнд,CRO, так как SMSW имеет код операции, совместимый  с
80286. Инструкция предназначена для использования  в  защищенном
режиме операционной системой. Однако,она  может  выполняться  на
любом  уровне  привилегий  (в  процессоре80286	только	операция
загрузки регистра  является привилегированной инструкцией)
Пример
SMSW  IDT_INFO		  ;записать младшее слово CRO в операнд.
Время выполнения
	 2 такта; 0.1 мкс. при тактовой частоте 20 МГц.
Устанавливаемые флаги
     Флаги не устанавливаются.
Исключения реального режима
     Те же, что и для инструкции  ADD.
Исключения защищенного режима
     Те же, что и для инструкции  ADD.
Исключения виртуального режима 8086
     Те же, что и для инструкции  ADD.
			    - 331 -
	     ЙНННННННННННННННННННННННННННННННННННННН»
	     єSTC	    Установить флаг переносає
	     ИННННННННННННННННННННННННННННННННННННННј
			     Формат
		     ЪДДДДДДДДї
STC		     і11111001і
		     АДДДДДДДДЩ
			    Функции
     CF <- 1
			    Описание
     STC устанавливает флаг переноса
Время выполнения
     2 такта; 0.1 мкс. на 20 МГц.
Устанавливаемые флаги
     Флаг CF устанавливается в 1. Остальные флаги не изменяются.
Исключения реального режима
     Нет.
Исключения защищенного режима
     Нет.
Исключения виртуального режима 8086
    Нет.
 ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
 єSTD	 Установить флаг направления - индекс декрементирования.є
 ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
		     ЪДДДДДДДДї
STD		     і11111101і
		     АДДДДДДДДЩ
			    Функции
     DF <- 1
			    Описание
     STD   устанавливает   флаг   переноса.   После   выполнения
инструкциикоманды обработки  строк  и  повторяющиеся  инструкции
будут декрементировать используемый в них индексный регистр.
Пример
     STD
Время выполнения
     2 такта; 0.1 мкс. на 20 МГц.
Устанавливаемые флаги
     Флаг DF устанавливается в 1. Остальные флаги не изменяются.
Исключения реального режима
     Нет.
Исключения защищенного режима
     Нет.
Исключения виртуального режима 8086
     Нет.
			    - 332 -
    ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
    єSTI    Установить флаг разрешения прерываний -разрешитьє
    є	    обработку прерываний.			    є
    ИНННННННННННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
		     ЪДДДДДДДДї
STI		     і11111011і
		     АДДДДДДДДЩ
			    Функции
     IF <- 1
			    Описание
     STI устанавливает	флаг  разрешения  прерываний,  если  это
возможно.  В режиме REAL это возможно всегда.	В  защищенном  и
виртуальном 8086 режиме выполнение инструкции возможно, если CPL
численно меньше или равно IOPL.
     Инструкция разрешает прерывания, если это	возможно,  после
выполнения следующей инструкции,  если	та  позволяет  флагу  IF
оставаться установленным. Так, например если встречаются  подряд
инструкции STI и CPL,  то  внешние  прерывания	не  разрешаются,
поскольку CLI сбрасывает флаг разрешения прерываний.
Пример
     STI
Время выполнения
     3 такта; 0.15 мкс. на 20 МГц.
Устанавливаемые флаги
     Флаг IF устанавливается в	1,как  описано	выше.  Остальные
флаги не изменяются.
Исключения реального режима
     Нет.
Исключения защищенного режима
     Исключение общей защиты  (исключение  13)	с  кодом  ошибки
0000, если CPL численно меньше IOPL.
Исключения виртуального режима 8086
Исключение общей защиты с кодом ошибки 0000, если IOPL меньше 3,
так как CPL в этом режиме вседа 3.
     Программное прерывание этой инструкции в виртуальном режиме
8086 путем задания значений CPL 2, 1, и 0 позволяет  супервизору
виртуализировать состояние флага IF,  анализируемое  программным
обеспечением виртуального режима 8086.
			    - 333 -
   ЙННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
   єSTOSB/STOSW/STOSD  Записать в память строчную информацию.є
   ИНННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
     STOSB, STOSW, STOSD    ЪДДДДДДДДДДДДДДДї
			    і1 0 1 0 1 0 1 wі
			    АДДДДДДДДДДДДДДДЩ
			    Функции
IF (РАЗМЕРНОСТЬ ОПЕРАНДА = DWORD) THEN (Записать операнд из ак-
   (ИНДЕКС ПРИЕМНИКА) <- EAX		кумулятора)
ELSE IF (РАЗМЕРНОСТЬ ОПЕРАНДА = DWORD) THEN
   (ИНДЕКС ПРИЕМНИКА) <- AX
ELSE				       (Размер операнда - байт)
   (ИНДЕКС ПРИЕМНИКА) <- AL
IF (РАЗМЕРНОСТЬ АДРЕСА = 32) THEN
   УСТАНОВИТЬ ESI
ELSE					(Размер адреса - 16)
   УСТАНОВИТЬ SI
			    Описание
     Инструкция  записывает  операнды  строку-приемник	 памяти.
Предполагается, что строка представляет собой последовательность
байтов, слов или двойных слов взависимости от  размера	операнда
строчной инструкции.  После записи информации индексный  регистр
приемника    автоматически    изменяется    (уменьшается     или
увеличивается взависимости от состояния флага  DF)  на	величину
операнда.
     Если  размер  операнда  -	двойное  слово,  операнд  строки
записывается  по  адресу,  содержащемуся  в  регистре	ESI,   в
противном  случае  -  в  регистре  SI.	 Обратите  внимание   на
правильность загрузки индексного регистра  перед  использованием
инструкции STOS.
Пример
     STOSW		  ;записывает 16-битный операнд в строку
REP  STOSW		  ;повторяет инструкцию до обнуления ECX
     Так как перед выполнением инструкции  необходимо  загружать
индексный регистр, ее логично помещать в цикл.
Время выполнения
     4 такта; 0.2 мкс. при частоте 20 МГц.
Устанавливаемые флаги
     Флаги не устанавливаются.
Исключения реального режима
     Те же, что и для инструкции ADD.
Исключения защищенного режима
     Те же, что и для инструкции ADD.
Исключения виртуального режима 8086
     Те же, что и для инструкции ADD.
			    - 334 -
	       ЙНННННННННННННННННННННННННННННННННН»
	       єSTR	  Записать регистр задачи.є
	       ИННННННННННННННННННННННННННННННННННј
			     Формат
		  Байт 0	   Байт 1	    Байт 2
STR	    ЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
	    і0 0 0 0 1 1 1 1і 0 0 0 0 0 0 0 0і mod:0 0 1: r/mі
	    АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
			    Функции
     ОПЕРАНД <= TR  ; 16-битный селектор
			    Описание
     Инструкция STR предназначена для использования в защищенном
режиме.  Она записывает селектор из регистра TR (регистр задачи)
в указанный операнд.
     Хотя    инструкция    предназначена    для    использования
операционной  системой,  ее  можно  выполнить  на  любом  уровне
привилегий (в процессоре 80286 только загрузка регистра является
привилегированной операцией.
Пример
     STR  TSS_COPY     ; записывает  селектор  сегмента
			 задачи.
Время выполнения
Запись в регистр:  2 такта; 0.1 мкс. при 20 МГц.
Запись в память :  2 такта; 0.1 мкс. при 20 МГц.
Устанавливаемые флаги
     Флаги не устанавливаются.
Исключения реального режима
     Прерывание 6. Инструкция STR не является разрешенной в этом
режиме.
Исключения защищенного режима
     Те же, что и для инструкции ADD.
Исключения виртуального режима 8086
     Неверный код операции (исключение	6).  Инструкция  STR  не
является разрешенной в этом режиме.
			    - 335 -
   ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННН»
   єTEST  Проверить операнд (Операция AND с EFLAG,результат неє
   є			  используется) 		      є
   ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
TEST
Вычитание между 	   Байт 0	  Байт 1
регистром/памятью и  ЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
регистром	     і1 0 0 0 0 1 0 wі mod: reg : r/mі
		     АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Непосредственных     ЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї	Байт(ы)
данных из регистра/  і1 1 1 1 0 1 1 wі mod:0 0 0: r/mі	непоср.
памяти		     АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ	данных
Непосредственных     ЪДДДДДДДДДДДДДДДї	Байт(ы) непосредственных
данных и регистра    і1 0 1 0 1 0 0 wі	данных
Аl/ АХ/ЕАХ )короткая АДДДДДДДДДДДДДДДЩ
кодировка)
			    Функции
Операнд-приемник ^ операнд-источник	;изменяются только флаги
    или
Операнд-приемник ^ непоср. данные	;изменяются только флаги
Описание
     Производится  логическая  операция  AND  между  операндами.
Результат не сохраняется.  Изменяются только флаги.
Пример
     Если  ЕBХ=00AD9034(16), ЕDI=0B800052(16), то  в  результате
выполнения инструкции флаги изменяются следующим образом: SF=0,
ZF=0, PF=0
Время выполнения
Регистр-регистр 	     2 такта; 0.1 мкс. при 20 МГц.
Регистр-память: 	     7 тактов; 0.35 мкс. при 20 МГц.
Память-регистр: 	     6 тактов; 0.3 мкс. при 20 МГц.
Непоср. данные-регистр:      2 такта; 0.1 мкс. при 20 МГц.
Непоср. данные-память:	     7 тактов; 0.35 мкс. при 20 МГц.
Устанавливаемые флаги
      ОF=0, CF=0.Установка флагов SF, ZF, РF приведена в приложе-
нии А. На остальные флаги инструкция не влияет.
Исключения реального режима
     Те же, что и для инструкции АDD.
Исключения защищенного режима
     Те же, что и для инструкции АDD.
Исключения виртуального режима 8086
     Те же, что идля инструкции  АDD.
			    - 336 -
	      ЙННННННННННННННННННННННННННННННННННН»
	      єSUB	   Целочисленное вычитаниеє
	      ИНННННННННННННННННННННННННННННННННННј
			     Формат
SUB
Вычитание		   Байт 0	  Байт 1
между регистрами     ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДї
		     і0 0 1 0 1 0 d w іmod: reg : r/mі
		     АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДЩ
Регистра из ячейки   ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДї
памяти		     і0 0 1 0 1 0 0 w іmod: reg : r/mі
		     АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДЩ
Содержимого ячейки   ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДї
памяти из регистра   і0 0 1 0 1 0 1 w іmod: mod : r/mі
		     АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДЩ
Непосредственных     ЪДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДї	Байт(ы)
данных из регистра.  і1 0 0 0 0 0 s w іmod:1 0 1: r/mі	непоср.
памяти		     АДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДЩ	данных
Непосредственные     ЪДДДДДДДДДДДДДДДДї Байт(ы) непосредственных
данные из регистра   і0 0 1 0 1 1 0 w і данных
Аl, АХ,ЕАХ )короткая АДДДДДДДДДДДДДДДДЩ
кодировка)
			    Функции
Операнд-приемник <= операнд-приемник - операнд-источник
    или
Операнд-приемник <= операнд-приемник - непоср. данные.
			    Описание
     Инструкция  производит  вычитание	второго    операнда   из
первого  операнда.  Результат  помещается   в	первый	операнд.
Пример
     Если  СF=1,  ЕСХ=00000034(16), ЕDХ=00000052(16), то в
результате выполнения инструкции ЕСХ=FFFFFFАD(16), флаг СF=1.
Время выполнения
Регистр-регистр 	     2 такта; 0.1 мкс. при 20 МГц.
Регистр-память: 	     7 тактов; 0.35 мкс. при 20 МГц.
Память-регистр: 	     6 тактов; 0.3 мкс. при 20 МГц.
Непоср. данные-регистр:      2 такта; 0.1 мкс. при 20 МГц.
Непоср. данные-память:	     7 тактов; 0.35 мкс. при 20 МГц.
Устанавливаемые флаги
     Флаги OF, CF, SF, ZF, AF, PF устанавливаются в соответствии
с описанием, приведенным в  приложении	А.  Остальные  флаги  не
изменяются.
Исключения реального режима
     Те же, что и для инструкции ADD.
Исключения защищенного режима
     Те же, что и для инструкции ADD.
Исключения виртуального режима 8086
     Те же, что и для инструкции ADD.
			    - 337 -
	ЙННННННННННННННННННННННННННННННННННННННННННННННН»
	єVERR/VERW   Проверка сегмента для записи/чтенияє
	ИНННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
	       Байт 0		Байт 1		 Байт 2
VERR	 ЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
	 і0 0 0 0 1 1 1 1і 0 0 0 0 0 0 0 0і mod:1 0 0: r/mі
	 АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
VERW	 ЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
	 і0 0 0 0 1 1 1 1і 0 0 0 0 0 0 0 0і mod:1 0 1: r/mі
	 АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
			    Функции
VERR:
IF СЕГМЕНТ, УКАЗАННЫЙ СЕЛЕКТОРОМ r/m  ДОСТУПЕН	И  РАЗРЕШЕН  ДЛЯ
   ЧТЕНИЯ THEN	ZF <= 1;
ELSE
   ZF <= 0;
VERW
IF СЕГМЕНТ, УКАЗАННЫЙ СЕЛЕКТОРОМ r/m  ДОСТУПЕН	И  РАЗРЕШЕН  ДЛЯ
   ЗАПИСИ THEN	ZF <= 1;
ELSE
   ZF <= 0;
			    Описание
     Инструкции VERR и VERW предназначены  для	использования  в
защищенном режиме.  Обе инструкции сравнивают статус сегмента  с
операндом для определения доступности сегмента на данном  уровне
привилегий (ослабляется значением RPL селектора).
     В	результате  выполнения	 инструкции   VERR   (если   тип
дескриптора доступен на данном CPL  (ослабляется  значением  RPL
селектора), сегмент доступен для чтения) флаг ZF  установлен.  В
противном случае ZF=0.
     В	результате  выполнения	 инструкции   VERW   (если   тип
дескриптора доступен на данном CPL  (ослабляется  значением  RPL
селектора), сегмент доступен для записи) флаг ZF  установлен.  В
противном случае ZF=0.
     Для  данных   инструкций	допустимы   только   дескрипторы
сегментов данных.  Специальные сегменты (GDT, LDT, TSS,  IDT)  и
переключатели не являются допустимыми для данной инструкцииб так
как  программы	не  могут  производить	запись	и  чтение  таких
об`ектов непосредственно (при их изменении операционная  система
создает дополнительный сегмент данных  по  адресам  расположения
этих об`ектов)
Пример
     VERR  SEGMENT_X	 ; Проверить,доступен ли для чтения
			   сегмент, селектор которого указан
			   в переменной SEGMENT_X
Устанавливаемые флаги
     Флаг ZF, как описано выше.  Остальные флаги не изменяются.
Исключения реального режима
     Прерывание  6.   Инструкция   защищенного	 режима    LSLне
воспринимается в реальном режиме.
Исключения защищенного режима
     Те же, что и для инструкции ADD.
Исключения виртуального режима 8086
     Те же, что и для  реального  режима,  но  обрабатываются  в
защищенном режиме на уровне привилегий 0.  Формат стека нулевого
уровня привилегий после возникновения исключения представлен  на
рис. 12.2.
     Исключение страничного сбоя (исключение 14) с кодом  ошибки
сбоя и линейным адресом страницы в регистре CR2.
			    - 338 -
       ЙНННННННННННННННННННННННННННННННННННННННННННННННННН»
       єWAIT	Ожидание неактивного состояния вывода BUSYє
       ИННННННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
WAIT		    ЪДДДДДДДДДДДДДДДї
		    і1 0 0 1 1 0 1 1і
		    АДДДДДДДДДДДДДДДЩ
			    Функции
     ПОКА (ВЫВОД BUSY = ВЫСОКИЙ УРОВЕНЬ) ПРОДОЛЖАТЬ ОЖИДАНИЕ
			    Описание
     Инструкция тестирует  уровень  на	входе  BUSY  процессора,
который обычно подключен к сопроцессору 80387 или  80287.   WAIT
заставляет  процессор	остановить   выполнение   программы   до
завершения работы сопроцессора.
     Применять	 эту   инструкцию   нет   необходимости,    если
сопроцессору передается следующая  инструкция.	 Она  необходима
лишь в случае, если процессор  должен  считать	данные,  которые
сопроцессор записывает в  память.  Данная  инструкция  позволяет
программисту быть уверенным, что сопроцессор записал  все  байты
операнда в память, прежде чем 80386 вновь занял шину.
Пример
     WAIT     ;обеспечить синхронизацию 80386 с сопроцессором
Время выполнения
     6 минимум тактов ;минимум 0.3 мкс. на 20 МГц.
     Выполнение инструкции может быть прервано	на  любом  цикле
(каждые 6 тактов).  Поэтому  задержки  обработки  прерываний  не
происходит.  В	случае	прерывания  инструкции	 WAIT	в   стек
засылается адрес самой инструкции и по возвращении из прерывания
ожидание продолжается.
Устанавливаемые флаги
     Флаги не изменяются.
Исключения реального режима
     Преывание	 16,   если   вывод   ERROR#   активирован   или
активируется, так как это означает,  что  сопроцессор  обнаружил
немаскируемую числовую ошибку.	Прерывание  7,	если  бит  TS  в
регистре CR0  установлен,  обозначая  принадлежность  информации
сопроцессора другой  задаче  (TS  едва	ли  будет  установлен  в
реальном режиме, так как в нем не могут  происходить  аппаратные
переключения).
Исключения защищенного режима
     Преывание	 16,   если   вывод   ERROR#   активирован   или
активируется, так как это означает,  что  сопроцессор  обнаружил
немаскируемую числовую ошибку.	Прерывание  7,	если  бит  TS  в
регистре CR0  установлен,  обозначая  принадлежность  информации
сопроцессора другой  задаче  (TS  едва	ли  будет  установлен  в
реальном режиме, так как в нем не могут  происходить  аппаратные
переключения).
Исключения виртуального режима 8086
     Те же, что и для  реального  режима,  но  обрабатываются  в
защищенном режиме на уровне привилегий 0.  Формат стека нулевого
уровня привилегий после возникновения исключения представлен  на
рис. 12.2.
     Исключение страничного сбоя (исключение 14) с кодом  ошибки
сбоя и линейным адресом страницы в регистре CR2.
			    - 339 -
      ЙНННННННННННННННННННННННННННННННННННННННННННННННННННН»
      єXCHG   Обмен содержимого регистра/памяти с регистромє
      ИННННННННННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
XCHG
Обмен	  между 	   Байт 0	  Байт 1
регистром/памятью и  ЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
регистром	     і1 0 0 0 0 1 1 wі mod: reg : r/mі
		     АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Рeгистра с AL/AX/EAX ЪДДДДДДДДДДДДДДДї
(слово или двойное   і1 0 0 1 0: reg і
слово) (короткая     АДДДДДДДДДДДДДДДЩ
кодировка)
			    Функции
Временное хранение <= операнд-приемник
Операнд-приемник <= операнд-источник
Операнд-источник <= временное хранение
			    Описание
     Производится обмен операндов  местами.  Один  из  операндов
должен находиться в регистре общего назначения,  другой  либо  в
регистре, либо в ячейке памяти. При выполнении операции флаги не
изменяются.
Пример
     Если  ЕCХ=39A5F034(16), ЕDX=B218CD52(16), то  в  результате
выполнения инструкции в регистр ECX будет записано B218CD52, а в
EDX - 39A5F034.
Время выполнения
Регистр-регистр:	     3 такта; 0.15 мкс. при 20 МГц.
Регистр-память: 	     5 тактов; 0.25 мкс. при 20 МГц.
Устанавливаемые флаги
     Флаги не устанавливаются.
Исключения реального режима
     Те же, что и для инструкции АDD.
Исключения защищенного режима
     Те же, что и для инструкции АDD.
Исключения виртуального режима	8086
     Те же, что идля инструкции  АDD.
			    - 340 -
	 ЙННННННННННННННННННННННННННННННННННННННННННННН»
	 єXLATB        Просмотр таблицы перекодированияє
	 ИНННННННННННННННННННННННННННННННННННННННННННННј
			     Формат
XLATB		     ЪДДДДДДДДДДДДДДДї
		     і1 1 0 1 0 1 1 1і
		     АДДДДДДДДДДДДДДДЩ
			    Функции
IF (РАЗМЕР АДРЕСА = 16) THEN
  AL <= (BX+ZEROEXTEND(AL))
ELSE
  AL <= (EBX+ZEROEXTEND(AL))
			    Описание
     Используя	содержимое  регистра  AL  в  качестве	индекса,
считать  в  регистр  AL  содержание  элемента  таблицы.  Таблица
представляет собой набор перекодированных значений, база которой
указана в регистре EBX.
Время выполнения
     5 такта; 0.25 мкс. на 20 МГц.
Устанавливаемые флаги
     Флаги не устанавливаются.
Исключения реального режима
     Те же, что и для инструкции АDD.
Исключения защищенного режима
     Те же, что и для инструкции АDD.
Исключения виртуального режима	8086
     Те же, что идля инструкции  АDD.
			    - 341 -
	    ЙНННННННННННННННННННННННННННННННННННННННН»
	    єXOR	 Логическое "ИСКЛЮЧАЮЩЕЕ ИЛИ"є
	    ИННННННННННННННННННННННННННННННННННННННННј
			     Формат
XOR
			   Байт 0	  Байт 1
Между регистрами     ЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
		     і0 0 1 1 0 0 d wі mod: reg : r/mі
		     АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Регистра из ячейки   ЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
памяти		     і0 0 1 1 0 0 0 wі mod: reg : r/mі
		     АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Содержимого ячейки   ЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї
памяти из регистра   і0 0 1 1 0 0 1 wі mod: mod : r/mі
		     АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ
Непосредственных     ЪДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДї	Байт(ы)
данных из регистра.  і1 0 0 0 0 0 s wі mod:1 1 0: r/mі	непоср.
памяти		     АДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДЩ	данных
Непосредственные     ЪДДДДДДДДДДДДДДДї	Байт(ы) непосредственных
данные из регистра   і0 0 1 1 0 1 0 wі	данных
Аl, АХ,ЕАХ )короткая АДДДДДДДДДДДДДДДЩ
кодировка)
			    Функции
Операнд-приемник <= операнд-приемник XOR операнд-источник
    или
Операнд-приемник <= операнд-приемник XOR непоср. данные
			    Описание
     Инструкция производит битовую  операцию  "ИСКЛЮЧАЮЩЕЕ  ИЛИ"
между  содержимым  операндов.	Один   из   операндов	является
приемником.
Пример
     XOR    EBX,EDI
     Если  ЕСХ=00AD9034(16), ЕDХ=0B800052(16), то в
результате выполнения инструкции ЕСХ=0B2D9066(16).
Время выполнения
Регистр-регистр 	     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.
Исключения виртуального режима
     Те же, что и для инструкции  АDD.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД


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