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


Самолеты, разнообразные по жанрам бродилки игры для мальчиков.

 

Часть 28

ADC - Сложение с флагом переноса
----------------------------------------------------------------
|Код       Команда     Число      Описание                     |
|операции              тактовых                                |
|                      циклов                                  |
|                                                              |
|14 ib    ADC AL,imm8     1   Сложение с флагом переноса непос-|
|                             редственного байта и AL          |
|15 iw    ADC AX,imm16    1   Сложение с флагом переноса непос-|
|                             редственного слова и AX          |
|15 id    ADC EAX,imm32   1   Сложение с флагом переноса непос-|
|                             редственного двойного слова и EAX|
|80 /2 ib ADC r/m8,imm8   1/3 Сложение с флагом переноса непос-|
|                             редственного байта и байта в r/m |
|81 /2 iw ADC r/m16,imm16 1/3 Сложение с флагом переноса непос-|
|                             редственного слова и слова в r/m |
|81 /2 id ADC r/m32,imm32 1/3 Сложение с флагом переноса непос-|
|                             редственного двойного слова и    |
|                             двойного слова в r/m             |
|83 /2 ib ADC r/m16,imm8  1/3 Сложение с флагом переноса непос-|
|                             редственного расширенного знаком |
|                             байта и слова в r/m              |
|83 /2 ib ADC r/m32,imm8  1/3 Сложение с флагом переноса непос-|
|                             редственного расширенного знаком |
|                             слова и двойного слова в r/m     |
|10 /r    ADC r/m8,r8     1/3 Сложение с флагом переноса       |
|                             байтового регистра и байта в r/m |
|11 /r    ADC r/m16,r16   1/3 Сложение с флагом переноса       |
|                             регистра-слова и слова в r/m     |
|11 /r    ADC r/m32,r32   1/3 Сложение с флагом переноса       |
|                             регистра-двойного слова и        |
|                             двойного слова в r/m             |
|12 /r    ADC r8,r/m8     1/2 Сложение с флагом переноса байта |
|                             в r/m и байтового регистра       |
|13 /r    ADC r16,r/m16   1/2 Сложение с флагом переноса слова |
|                             в r/m и регистра-слова           |
|13 /r    ADC r32,r/m32   1/2 Сложение с флагом переноса       |
|                             двойного слова в r/m и регистра- |
|                             двойного слова                   |
----------------------------------------------------------------
Работа команды
--------------
DEST <- DEST + SRC + CF
Описание
--------
Команда ADC выполняет целочисленное сложение двух операндов,
DEST и SRC, и флага переноса, CF. Результат сложения помещается
в первый из операндов (DEST), и выполняется соответствующая
установка флагов. Команда ADC обыкновенно выполняется как часть
работающей с несколькими байтами или несколькими словами
операции сложения. Когда происходит сложение непосредственного
байтового значения и операнда-слова или двойного слова,
непосредственное значение сначала расширяется знаком до размера
соответствующего операнда, слова или двойного слова.
Изменяемые флаги
----------------
Флаги OF, SF, ZF, AF, CF и PF устанавливаются в соответствии с
результатом.
Исключения защищенного режима
----------------------------------
#GP(0), если результат должен помещаться в сегмент, для которого
запрещена запись; #GP(0) в случае недопустимого исполнительного
адреса операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0)
в случае недопустимого адреса в сегменте SS; #PF(код сбоя) в
случае страничного сбоя; #AC для невыравненной ссылки к памяти
при текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 13, если какая-либо часть операнда лежит вне
пространства исполнительных адресов от 0 до 0FFFFH.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев; #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
-----------------------------------------------------------------
ADD - Сложение
----------------------------------------------------------------
|Код       Команда     Число      Описание                     |
|операции              тактовых                                |
|                      циклов                                  |
|                                                              |
|04 ib    ADD AL,imm8     1   Сложение непосредст-             |
|                             венного байта и AL               |
|05 iw    ADD AX,imm16    1   Сложение непосредст-             |
|                             венного слова и AX               |
|05 id    ADD EAX,imm32   1   Сложение непосредст-             |
|                             венного двойного слова и EAX     |
|80 /0 ib ADD r/m8,imm8   1/3 Сложение непосредст-             |
|                             венного байта и байта в r/m      |
|81 /0 iw ADD r/m16,imm16 1/3 Сложение непосредст-             |
|                             венного слова и слова в r/m      |
|81 /0 id ADD r/m32,imm32 1/3 Сложение непосредст-             |
|                             венного двойного слова и двойного|
|                             слова в r/m                      |
|83 /0 ib ADD r/m16,imm8  1/3 Сложение непосредст-             |
|                             венного расширенного знаком байта|
|                             и слова в r/m                    |
|83 /0 ib ADD r/m32,imm8  1/3 Сложение непосредст-             |
|                             венного расширенного знаком слова|
|                             и двойного слова в r/m           |
|00 /r    ADD r/m8,r8     1/3 Сложение байтового               |
|                             регистра и байта в r/m           |
|01 /r    ADD r/m16,r16   1/3 Сложение регистра-               |
|                             слова и слова в r/m              |
|01 /r    ADD r/m32,r32   1/3 Сложение регистра-               |
|                             двойного слова и двойного слова  |
|                             в r/m                            |
|02 /r    ADD r8,r/m8     1/2 Сложение байта в r/m             |
|                             и байтового регистра             |
|03 /r    ADD r16,r/m16   1/2 Сложение слова в r/m             |
|                             и регистра-слова                 |
|03 /r    ADD r32,r/m32   1/2 Сложение двойного                |
|                             слова в r/m и регистра-двойного  |
|                             слова                            |
----------------------------------------------------------------
Работа команды
--------------
DEST <- DEST + SRC
Описание
--------
Команда ADC выполняет целочисленное сложение двух операндов,
DEST и SRC. Результат сложения помещается в первый из операндов
(DEST), и выполняется соответствующая установка флагов.
Когда происходит сложение непосредственного байтового значения и
операнда-слова или двойного слова, непосредственное значение
сначала расширяется знаком до размера соответствующего операнда,
слова или двойного слова.
Изменяемые флаги
----------------
Флаги OF, SF, ZF, AF, CF и PF устанавливаются в соответствии с
результатом.
Исключения защищенного режима
----------------------------------
#GP(0), если результат должен помещаться в сегмент, для которого
запрещена запись; #GP(0) в случае недопустимого исполнительного
адреса операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0)
в случае недопустимого адреса в сегменте SS; #PF(код сбоя) в
случае страничного сбоя; #AC для невыравненной ссылки к памяти
при текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 13, если какая-либо часть операнда лежит вне
пространства исполнительных адресов от 0 до 0FFFFH.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев; #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
-----------------------------------------------------------------
AND - Логическое И
----------------------------------------------------------------
|Код       Команда     Число      Описание                     |
|операции              тактовых                                |
|                      циклов                                  |
|                                                              |
|24 ib    AND AL,imm8     1   Операция логического И для непос-|
|                             редственного байта и AL          |
|25 iw    AND AX,imm16    1   Операция логического И для непос-|
|                             редственного слова и AX          |
|25 id    AND EAX,imm32   1   Операция логического И для непос-|
|                             редственного двойного слова и EAX|
|80 /4 ib AND r/m8,imm8   1/3 Операция логического И для непос-|
|                             редственного байта и байта в r/m |
|81 /4 iw AND r/m16,imm16 1/3 Операция логического И для непос-|
|                             редственного слова и слова в r/m |
|81 /4 id AND r/m32,imm32 1/3 Операция логического И для непос-|
|                             редственного двойного слова и    |
|                             двойного слова в r/m             |
|83 /4 ib AND r/m16,imm8  1/3 Операция логического И для непос-|
|                             редственного расширенного знаком |
|                             байта и слова в r/m              |
|83 /4 ib AND r/m32,imm8  1/3 Операция логического И для непос-|
|                             редственного расширенного знаком |
|                             слова и двойного слова в r/m     |
|20 /r    AND r/m8,r8     1/3 Операция логического И для       |
|                             байтового регистра и байта в r/m |
|21 /r    AND r/m16,r16   1/3 Операция логического И для       |
|                             регистра-слова и слова в r/m     |
|21 /r    AND r/m32,r32   1/3 Операция логического И для       |
|                             регистра-двойного слова и        |
|                             двойного слова в r/m             |
|22 /r    AND r8,r/m8     1/2 Операция логического И для байта |
|                             в r/m и байтового регистра       |
|23 /r    AND r16,r/m16   1/2 Операция логического И для слова |
|                             в r/m и регистра-слова           |
|23 /r    AND r32,r/m32   1/2 Операция логического И для       |
|                             двойного слова в r/m и регистра- |
|                             двойного слова                   |
----------------------------------------------------------------
Работа команды
--------------
DEST <- DEST AND SRC;
CF <- 0;
OF <- 0;
Описание
--------
Каждый бит результата выполнения команды AND равен 1, если оба
сответствующих бита операндов равны 1; в противном случае бит
результата равен 0.
Изменяемые флаги
----------------
Флаги CF и OF очищаются ; флаги PF, SF и ZF устанавливаются в
соответствии с результатом.
Исключения защищенного режима
----------------------------------
#GP(0), если результат должен помещаться в сегмент, для которого
запрещена запись; #GP(0) в случае недопустимого исполнительного
адреса операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0)
в случае недопустимого адреса в сегменте SS; #PF(код сбоя) в
случае страничного сбоя; #AC для невыравненной ссылки к памяти
при текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 13, если какая-либо часть операнда лежит вне
пространства исполнительных адресов от 0 до 0FFFFH.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев; #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
-----------------------------------------------------------------
ARPL - Преобразование поля RPL селектора
----------------------------------------------------------------
|Код       Команда     Число      Описание                     |
|операции              тактовых                                |
|                      циклов                                  |
|                                                              |
|63 /r    ARPL r/m16,r16 9/9  Преобразование RPL r/m16 к не    |
|                             менее чем RPL r16                |
----------------------------------------------------------------
Работа команды
--------------
IF RPL биты(0,1) в DEST < RPL биты(0,1) в SRC
THEN
  ZF <- 1;
  RPL биты(0,1) в DEST <- RPL биты(0,1) в SRC;
ELSE
  ZF <- 0;
FI;
Описание
--------
Команда ARPL имеет два операнда. Первый операнд является
16-разрядной переменной памяти или регистром-словом, содержащим
значение селектора. Второй операнд - это регистр-слово. Если
поле RPL ("запрашиваемый уровень привилегированности" - младшие
два бита) первого операнда меньше поля RPL второго операнда, то
флаг ZF устанавливается, а поле RPL первого операнда
увеличивается до соответствующего значения второго операнда. В
противном случае флпг ZF очищается, и первый операнд не
изменяется.
Команда ARPL используется в операционных системах, а не
прикладных программах. Она гарантирует, что параметр селектора
подпрограммы не запросит большую привилегированность, чем это
позволено для вызывающей программы. Вторым операндом команды
ARPL обычно является регистр, содержащий значение селектора CS
вызывающей программы.
Изменяемые флаги
----------------
Флаг ZF устанавливается, если поле RPL первого операнда меньше
соответствующего поля второго операнда.
Исключения защищенного режима
----------------------------------
#GP(0), если результат должен помещаться в сегмент, для которого
запрещена запись; #GP(0) в случае недопустимого исполнительного
адреса операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0)
в случае недопустимого адреса в сегменте SS; #PF(код сбоя) в
случае страничного сбоя; #AC для невыравненной ссылки к памяти
при текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 6; команда ARPL в этом режиме не распознается.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев; #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
-----------------------------------------------------------------
BOUND - Проверка индекса массива относительно границ массива
----------------------------------------------------------------
|Код       Команда     Число      Описание                     |
|операции              тактовых                                |
|                      циклов                                  |
|                                                              |
|62 /r  BOUND r16,m16&16   7     Проверка, находится ли r16 в  |
|                                пределах границ (тест пройден)|
|62 /r  BOUND r32,m32&32   7     Проверка, находится ли r32 в  |
|                                пределах границ (тест пройден)|
----------------------------------------------------------------
Работа команды
--------------
IF (LeftSCR < [RightSCR] OR LeftSCR > [RightSCR + Operandsize/8])
   (* Ниже нижней границы или выше верхней границы массива *)
THEN Прерывание 5;
FI;
Описание
--------
Команда BOUND обеспечивает, что имеющий знак индекс массива
находится в пределах границ, заданных блоком памяти, включающего
в себя верхнюю и нижнюю границы массива. Каждая граница
использует одно слово, если атрибут размера операнда равен 16
битам, и двойное слово, если атрибут размера операнда равен 32
битам. Первый операнд (регистр) должен быть больше или равен
первой границе в памяти (нижней границе) и меньше или равен
второй границе в памяти (старшей границе), плюс число байтов,
занимаемых для данного размера операнда. Если регистр не
находится в этих границах, то происходит прерывание 5; EIP
возврата указывает на команду BOUND.
Структура данных о границах массива обычно помещается в память
до самого массива, делая границы адресуемыми через константу
смещения относительно начала массива.
Изменяемые флаги
----------------
     Отсутствуют.
Исключения защищенного режима
----------------------------------
Прерывание 5 при нарушении границ массива; #GP(0) в случае
недопустимого исполнительного адреса операнда памяти в сегментах
CS, DS, ES, FS или GS; #SS(0) в случае недопустимого адреса в
сегменте SS; #PF(код сбоя) в случае страничного сбоя; #AC для
невыравненной ссылки к памяти при текущем уровне
привилегированности, равном 3.
Второй операнд должен являться операндом памяти, а не регистром.
Если команда BOUND выполняется с байтом ModR/M, представляющим
второй операнд как регистр, происходит #UD.
Исключения режима реальных адресов
---------------------------------------
Прерывание 5 при нарушении границ массива; прерывание 13, если
какая-либо часть операнда лежит вне пространства исполнительных
адресов от 0 до 0FFFFH; прерывание 6, если второй операнд
является регистром.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев; #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
-----------------------------------------------------------------
BSF - Поразрядное сканирование в прямом направлении
----------------------------------------------------------------
|Код       Команда     Число      Описание                     |
|операции              тактовых                                |
|                      циклов                                  |
|                                                              |
|0F BC  BSF r16,r/m16  6-42/7-43 Поразрядное сканирование      |
|                                в прямом направлении слова r/m|
|0F BC  BSF r32,r/m32  6-42/7-43 Поразрядное сканирование      |
|                                в прямом направлении двойного |
|                                слова в r/m                   |
----------------------------------------------------------------
Примечания
----------
n - это число ведущих нулевых битов.
Работа команды
--------------
IF r/m = 0
THEN
  ZF <- 1;
  регистр <- неопределен;
ELSE
  врем <- 0;
  ZF <- 0;
  WHILE BIT[r/m,врем] = 0
  DO
   врем <- врем +1;
   регистр <- врем;
  OD;
FI;
Описание
--------
Команда BSF сканирует биты второго операнда-слова или двойного
слова, начиная с бита 0. Если все биты равны 0, то
устанавливается флаг ZF; в противном случае флаг ZF очищается, а
в регистр назначения загружается индекс первого найденного
установленного бита.
Изменяемые флаги
----------------
Флаг ZF устанавливается, если все биты равны 0; в противном
случае флаг ZF очищается.
Исключения защищенного режима
----------------------------------
#GP(0) в случае недопустимого исполнительного адреса операнда
памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в случае
недопустимого адреса в сегменте SS; #PF(код сбоя) в случае
страничного сбоя; #AC для невыравненной ссылки к памяти при
текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 13, если какая-либо часть операнда лежит вне
пространства исполнительных адресов от 0 до 0FFFFH.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев; #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
-----------------------------------------------------------------
BSR - Поразрядное сканирование в обратном направлении
----------------------------------------------------------------
|Код       Команда     Число        Описание                   |
|операции              тактовых                                |
|                      циклов                                  |
|                                                              |
|0F BD  BSR r16,r/m16  6-103/7-104  Поразрядное сканирование   |
|                                   в обратном направлении     |
|                                   слова r/m                  |
|0F BD  BSR r32,r/m32  6-103/7-104  Поразрядное сканирование в |
|                                   обратном направлении       |
|                                   двойного слова в r/m       |
----------------------------------------------------------------
Работа команды
--------------
IF r/m = 0
THEN
  ZF <- 1;
  регистр <- неопределен;
ELSE
  врем <- OperandSize - 1;
  ZF <- 0;
  WHILE BIT[r/m,врем] = 0
  DO
   врем <- врем - 1;
   регистр <- врем;
  OD;
FI;
Описание
--------
Команда BSF сканирует биты второго операнда-слова или двойного
слова, начиная со старшего бита в направлении к младшему. Если
все биты равны 0, то устанавливается флаг ZF; в противном случае
флаг ZF очищается, а в регистр назначения загружается индекс
первого найденного при сканировании в обратном направлении
установленного бита.
Изменяемые флаги
----------------
Флаг ZF устанавливается, если все биты равны 0; в противном
случае флаг ZF очищается.
Исключения защищенного режима
----------------------------------
#GP(0), если результат должен помещаться в сегмент, для которого
запрещена запись; #GP(0) в случае недопустимого исполнительного
адреса операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0)
в случае недопустимого адреса в сегменте SS; #PF(код сбоя) в
случае страничного сбоя; #AC для невыравненной ссылки к памяти
при текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 13, если какая-либо часть операнда лежит вне
пространства исполнительных адресов от 0 до 0FFFFH.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев; #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
-----------------------------------------------------------------
BSWAP - Изменение последовательности байтов
-----------------------------------------------------------------
|Код       Команда  Число      Описание                         |
|операции           тактовых                                    |
|                   циклов                                      |
|OF C8/r   BSWAP r32   1       Изменение последовательности бай-|
|                              тов в 32-битовом регистре из пос-|
|                              ледовательности "от меньшего к   |
|                              большему" на "от большего к мень-|
|                              шему"                            |
-----------------------------------------------------------------
Работа команды
--------------
врем <- r32
r32(7..0) <- врем(31..24)
r32(15..8) <- врем(23..16)
r32(23..16) <- врем(15..8)
r32(31..24) <- врем(7..0)
Описание
--------
Команда BSWAP реверсирует последовательность байтов в
32-разрядном регистре, преобразовывая форму "от меньшего к
большему" на "от большего к меньшему". Когда BSWAP используется
с 16-разрядным размером операнда, результат остается в регистре
назначения без изменений.
Изменяемые флаги
----------------
     Отсутствуют.
Исключения защищенного режима
----------------------------------
     Отсутствуют
Исключения режима реальных адресов
---------------------------------------
     Отсутствуют
Исключения виртуального режима 8086
----------------------------------------
     Отсутствуют
Примечания
----------
BSWAP не поддерживается процессорами 386. См. раздел 3.11, где
описано использование BSWAP совместимо с процессорами 386.
-----------------------------------------------------------------
BT  - Проверка бита
----------------------------------------------------------------
|Код         Команда     Число      Описание                   |
|операции                тактовых                              |
|                        циклов                                |
|                                                              |
|0F A3       BT r/m16,r16  3/8      Сохранение бита во флаге   |
|                                   переноса                   |
|0F A3       BT r/m32,r32  3/8      Сохранение бита во флаге   |
|                                   переноса                   |
|0F BA/      BT r/m16,imm8 3/3      Сохранение бита во флаге   |
|                                   переноса                   |
|0F BA/4 ib  BT r/m32,imm8 3/3      Сохранение бита во флаге   |
|                                   переноса                   |
----------------------------------------------------------------
Работа команды
--------------
CF <- BIT[LeftSRC,RightSRC];
Описание
--------
Команда BT сохраняет значение бита, задаваемого базой (первый
операнд) и смещением бита (второй операнд), во флаг CF.
Изменяемые флаги
----------------
Флаг CF содержит значение выбранного бита.
Исключения защищенного режима
----------------------------------
#GP(0) в случае недопустимого исполнительного адреса операнда
памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в случае
недопустимого адреса в сегменте SS; #PF(код сбоя) в случае
страничного сбоя; #AC для невыравненной ссылки к памяти при
текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 13, если какая-либо часть операнда лежит вне
пространства исполнительных адресов от 0 до 0FFFFH.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев; #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
Примечания
----------
Индекс выбранного бита может быть задан непосредственной
константой в команде или значением в регистре общего назначения.
В команде может быть использовано только 8-разрядное
непосредственное значение. Этот операнд берется по модулю 32,
так что диапазон непосредственных смещений бита составляет
0...31. Это позволяет выбор любого бита в регистре. Для строк
битов в памяти это непосредственное поле задает только смещение
бита в слове или двойном слове. Непосредственные смещения битов,
превышающие 31, поддерживаются использованием поля
непосредственного смещения бита в комбинации с полем смещения в
операнде памяти. Младшие от 3 до 5 биты непосредственного
смещения бита записываются в поле непосредственного смещения
бита, а старшие биты от 27 до 29 сдвигаются и объединяются со
смещением байта в режиме адресации.
При доступе к биту в памяти процессор может выполнить доступ к
четырем байтам, начиная с адреса памяти, заданного как
     Исполнительный адрес + (4 * (BitOffset DIV 32))
для размера операнда 32 бита , либо два байта, начиная с адреса
памяти, заданного как
     Исполнительный адрес + (2 * (BitOffset DIV 16))
для размера операнда 16 битов. Процессор может поступать таким
образом даже когда для доступа к заданному биту достаточно
выполнить доступ всего к одному байту. Следовательно, вы можете
избежать ссылок к областям памяти, близко к разрывам адресного
пространства. В частности, избегайте ссылок к регистрам
ввода/вывода, управляемого памятью. Вместо этого для загрузки и
сохранения в эти адреса используйте команды MOV, а для
манипулирования данными используйте регистровые формы этих
команд.
-----------------------------------------------------------------
BTC  - Проверка бита и дополнение
----------------------------------------------------------------
|Код         Команда     Число      Описание                   |
|операции                тактовых                              |
|                        циклов                                |
|                                                              |
|0F BB       BTC r/m16,r16  6/13    Сохранение бита во флаге   |
|                                   переноса и его дополнение  |
|0F BB       BTC r/m32,r32  6/13    Сохранение бита во флаге   |
|                                   переноса и его дополнение  |
|0F BA/7 ib  BTC r/m16,imm8 6/8     Сохранение бита во флаге   |
|                                   переноса и его дополнение  |
|0F BA/7 ib  BTC r/m32,imm8 6/8     Сохранение бита во флаге   |
|                                   переноса и его дополнение  |
----------------------------------------------------------------
Работа команды
--------------
CF <- BIT[LeftSRC,RightSRC];
BIT[LeftSCR, RightScr] <- NOT BIT[LeftSCR, RightSCR]
Описание
--------
Команда BT сохраняет значение бита, задаваемого базой (первый
операнд) и смещением бита (второй операнд), во флаг CF и затем
выполняет дополнение этого бита.
Изменяемые флаги
----------------
Флаг CF содержит значение дополнения выбранного бита.
Исключения защищенного режима
----------------------------------
#GP(0), если результат должен помещаться в сегмент, для которого
запрещена запись; #GP(0) в случае недопустимого исполнительного
адреса операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0)
в случае недопустимого адреса в сегменте SS; #PF(код сбоя) в
случае страничного сбоя; #AC для невыравненной ссылки к памяти
при текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 13, если какая-либо часть операнда лежит вне
пространства исполнительных адресов от 0 до 0FFFFH.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев; #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
Примечания
----------
Индекс выбранного бита может быть задан непосредственной
константой в команде или значением в регистре общего назначения.
В команде может быть использовано только 8-разрядное
непосредственное значение. Этот операнд берется по модулю 32,
так что диапазон непосредственных смещений бита составляет
0...31. Это позволяет выбор любого бита в регистре. Для строк
битов в памяти это непосредственное поле задает только смещение
бита в слове или двойном слове. Непосредственные смещения битов,
превышающие 31, поддерживаются использованием поля
непосредственного смещения бита в комбинации с полем смещения в
операнде памяти. Младшие от 3 до 5 биты непосредственного
смещения бита записываются в поле непосредственного смещения
бита, а старшие биты от 27 до 29 сдвигаются и объединяются со
смещением байта в режиме адресации.
При доступе к биту в памяти процессор может выполнить доступ к
четырем байтам, начиная с адреса памяти, заданного как
     Исполнительный адрес + (4 * (BitOffset DIV 32))
для размера операнда 32 бита , либо два байта, начиная с адреса
памяти, заданного как
     Исполнительный адрес + (2 * (BitOffset DIV 16))
для размера операнда 16 битов. Процессор может поступать таким
образом даже когда для доступа к заданному биту достаточно
выполнить доступ всего к одному байту. Следовательно, вы можете
избежать ссылок к областям памяти, близко к разрывам адресного
пространства. В частности, избегайте ссылок к регистрам
ввода/вывода, управляемого памятью. Вместо этого для загрузки и
сохранения в эти адреса используйте команды MOV, а для
манипулирования данными используйте регистровые формы этих
команд.
-----------------------------------------------------------------
BTR  - Проверка бита и сброс
----------------------------------------------------------------
|Код         Команда     Число      Описание                   |
|операции                тактовых                              |
|                        циклов                                |
|                                                              |
|0F B3       BTR r/m16,r16  6/13     Сохранение бита во флаге  |
|                                    переноса и сброс          |
|0F B3       BTR r/m32,r32  6/13     Сохранение бита во флаге  |
|                                    переноса и сброс          |
|0F BA/6 ib  BTR r/m16,imm8 6/8      Сохранение бита во флаге  |
|                                    переноса и сброс          |
|0F BA/6 ib  BTR r/m32,imm8 6/8      Сохранение бита во флаге  |
|                                    переноса и сброс          |
----------------------------------------------------------------
Работа команды
--------------
CF <- BIT[LeftSRC,RightSRC];
BIT[LeftSRC,RightSRC] <- 0;
Описание
--------
Команда BTS сохраняет значение бита, задаваемого базой (первый
операнд) и смещением бита (второй операнд), во флаг CF, а затем
записывает в этот бит 0.
Изменяемые флаги
----------------
Флаг CF содержит значение выбранного бита.
Исключения защищенного режима
----------------------------------
#GP(0), если результат должен помещаться в сегмент, для которого
запрещена запись; #GP(0) в случае недопустимого исполнительного
адреса операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0)
в случае недопустимого адреса в сегменте SS; #PF(код сбоя) в
случае страничного сбоя; #AC для невыравненной ссылки к памяти
при текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 13, если какая-либо часть операнда лежит вне
пространства исполнительных адресов от 0 до 0FFFFH.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев; #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
Примечания
----------
Индекс выбранного бита может быть задан непосредственной
константой в команде или значением в регистре общего назначения.
В команде может быть использовано только 8-разрядное
непосредственное значение. Этот операнд берется по модулю 32,
так что диапазон непосредственных смещений бита составляет
0...31. Это позволяет выбор любого бита в регистре. Для строк
битов в памяти это непосредственное поле задает только смещение
бита в слове или двойном слове. Непосредственные смещения битов,
превышающие 31 (или 15), поддерживаются использованием поля
непосредственного смещения бита в комбинации с полем смещения в
операнде памяти. Младшие от 3 до 5 биты непосредственного
смещения бита записываются в поле непосредственного смещения
бита, а старшие биты от 27 до 29 сдвигаются и объединяются со
смещением байта в режиме адресации.
При доступе к биту в памяти процессор может выполнить доступ к
четырем байтам, начиная с адреса памяти, заданного как
     Исполнительный адрес + (4 * (BitOffset DIV 32))
для размера операнда 32 бита , либо два байта, начиная с адреса
памяти, заданного как
     Исполнительный адрес + (2 * (BitOffset DIV 16))
для размера операнда 16 битов. Процессор может поступать таким
образом даже когда для доступа к заданному биту достаточно
выполнить доступ всего к одному байту. Следовательно, вы можете
избежать ссылок к областям памяти, близко к разрывам адресного
пространства. В частности, избегайте ссылок к регистрам
ввода/вывода, управляемого памятью. Вместо этого для загрузки и
сохранения в эти адреса используйте команды MOV, а для
манипулирования данными используйте регистровые формы этих
команд.
-----------------------------------------------------------------
BTS  - Проверка бита и установка
----------------------------------------------------------------
|Код         Команда     Число      Описание                   |
|операции                тактовых                              |
|                        циклов                                |
|                                                              |
|0F AB       BTS r/m16,r16  6/13     Сохранение бита во флаге  |
|                                    переноса и установка      |
|0F AB       BTS r/m32,r32  6/13     Сохранение бита во флаге  |
|                                    переноса и установка      |
|0F BA/5 ib  BTS r/m16,imm8 6/8      Сохранение бита во флаге  |
|                                    переноса и установка      |
|0F BA/5 ib  BTS r/m32,imm8 6/8      Сохранение бита во флаге  |
|                                    переноса и установка      |
----------------------------------------------------------------
Работа команды
--------------
CF <- BIT[LeftSRC,RightSRC];
BIT[LeftSRC,RightSRC] <- 1;
Описание
--------
Команда BTS сохраняет значение бита, задаваемого базой (первый
операнд) и смещением бита (второй операнд), во флаг CF, а затем
записывает в этот бит 1.
Изменяемые флаги
----------------
Флаг CF содержит значение выбранного бита.
Исключения защищенного режима
----------------------------------
#GP(0), если результат должен помещаться в сегмент, для которого
запрещена запись; #GP(0) в случае недопустимого исполнительного
адреса операнда памяти в сегментах CS, DS, ES, FS или GS; #SS(0)
в случае недопустимого адреса в сегменте SS; #PF(код сбоя) в
случае страничного сбоя; #AC для невыравненной ссылки к памяти
при текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 13, если какая-либо часть операнда лежит вне
пространства исполнительных адресов от 0 до 0FFFFH.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев; #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
Примечания
----------
Индекс выбранного бита может быть задан непосредственной
константой в команде или значением в регистре общего назначения.
В команде может быть использовано только 8-разрядное
непосредственное значение. Этот операнд берется по модулю 32,
так что диапазон непосредственных смещений бита составляет
0...31. Это позволяет выбор любого бита в регистре. Для строк
битов в памяти это непосредственное поле задает только смещение
бита в слове или двойном слове. Непосредственные смещения битов,
превышающие 31 (или 15), поддерживаются использованием поля
непосредственного смещения бита в комбинации с полем смещения в
операнде памяти. Младшие от 3 до 5 биты непосредственного
смещения бита записываются в поле непосредственного смещения
бита, а старшие биты от 27 до 29 сдвигаются и объединяются со
смещением байта в режиме адресации.
При доступе к биту в памяти процессор может выполнить доступ к
четырем байтам, начиная с адреса памяти, заданного как
     Исполнительный адрес + (4 * (BitOffset DIV 32))
для размера операнда 32 бита , либо два байта, начиная с адреса
памяти, заданного как
     Исполнительный адрес + (2 * (BitOffset DIV 16))
для размера операнда 16 битов. Процессор может поступать таким
образом даже когда для доступа к заданному биту достаточно
выполнить доступ всего к одному байту. Следовательно, вы можете
избежать ссылок к областям памяти, близко к разрывам адресного
пространства. В частности, избегайте ссылок к регистрам
ввода/вывода, управляемого памятью. Вместо этого для загрузки и
сохранения в эти адреса используйте команды MOV, а для
манипулирования данными используйте регистровые формы этих
команд.
-----------------------------------------------------------------
CALL - Вызов процедуры
-----------------------------------------------------------------
|Код       Команда     Число      Описание                      |
|операции              тактовых                                 |
|                      циклов                                   |
|E8 cw     CALL rel16    3        Вызов ближний, смещение отно- |
|                                 сительно следующей команды    |
|FF /2     CALL r/m16    5/5      Вызов ближний, косвенный ре-  |
|                                 гистр/косвенная память        |
|9A cd     CALL ptr16:16 18,pm=20 Вызов межсегментный, на весь  |
|                                 заданный указатель            |
|9A cd     CALL ptr16:16 pm=35    Вызов шлюзом, та же привилеги-|
|                                 рованность                    |
|9A cd     CALL ptr16:16 pm=69    Вызов шлюзом, большая привиле-|
|                                 гированность, без параметров  |
|9A cd     CALL ptr16:16 pm=77+4x Вызов шлюзом, большая привиле-|
|                                 гированность, х параметров    |
|9A cd     CALL ptr16:16 pm=37+ts Вызов задачи                  |
|                                                               |
|FF /3     CALL m16:16   17,pm=20 Вызов межсегментный, адрес в  |
|                                 двойном слове r/m             |
|FF /3     CALL m16:16   pm=35    Вызов шлюзом, та же привилеги-|
|                                 рованность                    |
|FF /3     CALL m16:16   pm=69    Вызов шлюзом, большая привиле-|
|                                 гированность, без параметров  |
|FF /3     CALL m16:16   pm=77+4x Вызов шлюзом, большая привиле-|
|                                 гированность, х параметров    |
|FF /3     CALL m16:16   pm=37+ts Вызов задачи                  |
|                                                               |
|E8 cd     CALL rel32    3        Вызов ближний, смещение отно- |
|                                 сительно следующей команды    |
|FF /2     CALL r/m32    5/5      Вызов ближний, косвенный      |
|                                                               |
|9A cp     CALL ptr16:32 18,pm=20 Вызов межсегментный, на весь  |
|                                 заданный указатель            |
|9A cp     CALL ptr16:32 pm=35    Вызов шлюзом, та же привилеги-|
|                                 рованность                    |
|9A cp     CALL ptr16:32 pm=69    Вызов шлюзом, большая привиле-|
|                                 гированность, без параметров  |
|9A cp     CALL ptr32:32 pm=77+4x Вызов шлюзом, большая привиле-|
|                                 гированность, х параметров    |
|9A cp     CALL ptr16:32 pm=37+ts Вызов задачи                  |
|                                                               |
|FF /3     CALL m16:32   17,pm=20 Вызов межсегментный, адрес в  |
|                                 двойном слове в r/m           |
|FF /3     CALL m16:32   pm=35    Вызов шлюзом, та же привиле-  |
|                                 гированность                  |
|FF /3     CALL m16:32   pm=69    Вызов шлюзом, большая привиле-|
|                                 гированность, без параметров  |
|FF /3     CALL m16:32   pm=77+4x Вызов шлюзом, большая привиле-|
|                                 гированность, х параметров    |
|FF /3     CALL m16:32   pm=37+ts Вызов задачи                  |
-----------------------------------------------------------------
Примечание: значения ts задаются следующей таблицей:
-----------------------------------------------------------------
                     |          Новая задача
     Старая задача   |-------------------------------------------
                     | к TSS i486 | к TSS 80286 | к TSS VM
-----------------------------------------------------------------
 VM/i486/TSS 80286   |     199    |     180     |     177
-----------------------------------------------------------------
Работа команды
--------------
IF тип вызова rel16 или rel32
THEN (* ближний относительный вызов *)
  IF OperandSize = 16
  THEN
    Push(IP);
    EIP <- (EIP + rel16) AND 0000FFFFH;
  ELSE (* OperandSize = 32 *)
    Push(EIP);
    EIP <- EIP + rel32;
  FI;
FI;
IF тип вызова r/m16 или r/m32
THEN (* ближний абсолютный вызов *)
  IF OperandSize = 16
  THEN
    Push(IP);
    EIP <- [r/m16] AND 0000FFFFH;
  ELSE (* OperandSize = 32 *)
    Push(EIP);
    EIP <- [r/m32];
  FI;
FI;
IF (PE = 0 OR (PE = 1 AND VM = 1))
(* режим реальных адресов или виртуальный режим 8086 *)
  AND команда = дальний CALL
  (* т.е. тип операнда равен m16:16, m16:32, ptr16:16, ptr16:32 *
THEN
  IF OperandSize = 16
  THEN
    Push(CS);
    Push(IP); (* адрес следующей команды; 16 битов *)
  ELSE
    Push(CS); (* 16 старших битов занято заполнителями *)
    Push(EIP); (* адрес следующей команды; 32 бита *)
  FI;
  IF тип операнда равен m16:16 или m16:32
  THEN (* косвенный дальний вызов *)
    IF OperandSize = 16
    THEN
      CS:IP <- [m16:16];
      EIP <- EIP AND 0000FFFFH; (* очистить старшие 16 битов *)
    ELSE (* OperandSize = 32 *)
      CS:IEP <- [m16:32];
    FI;
  FI;
  IF тип операнда равен ptr16:16 или ptr16:32
  THEN (* прямой дальний вызов *)
    If OperandSize =16 *)
    THEN
      CS:IP <- ptr16:16;
      EIP <- EIP AND 0000FFFFH; (* очистить старшие 16 битов *)
    ELSE (* OperandSize = 32 *)
      CS:EIP <- ptr16:32;
    FI;
  FI;
FI;
IF (PE = 1 AND VM = 0) (* Защищенный режим, но не режим V86 *)
  AND команда = дальний CALL
THEN
  При косвенном проверить доступ к двойному слову EA;
    #GP(0) при нарушении границы;
  Новый селектор CS не должен быть пустым, иначе #GP(0);
  Проверить, чтобы индекс селектора нового CS был в пределах
    границ дескрипторной таблицы; иначе #GP(селектор нового CS)
  Исследовать различные допустимые значения  байта  AR  выбранног
    дескриптора;
    В зависимости от значения;
    переход к КОНФОРМНЫЙ-КОДОВЫЙ-СЕГМЕНТ;
    переход к НЕКОНФОРМНЫЙ-КОДОВЫЙ-СЕГМЕНТ;
    переход к ШЛЮЗ-ВЫЗОВА;
    переход к ШЛЮЗ-ЗАДАЧИ;
    переход к СЕГМЕНТ-СОСТОЯНИЯ-ЗАДАЧИ;
  ELSE #GP(селектор кодового сегмента);
FI;
КОНФОРМНЫЙ-КОДОВЫЙ-СЕГМЕНТ:
  DPL должен быть <= CPL  ELSE  #GP(селектор кодового сегмента);
  Сегмент должен   присутствовать   ELSE  #NP  (селектор  кодовог
                                                сегмента);
  Стек должен  быть  достаточно  велик  для  адреса  возврата ELS
                                                #SS(0);
  Указатель команд должен быть в границах кодового сегмента ELSE
                                                #GP(0);
  Загрузить дескриптор кодового сегмента в регистр CS;
  Загрузить в CS селектор нового кодового сегмента;
  Загрузить в EIP с расширенем нулем (новое смещение);
  IF OperandSize = 16 THEN EIP <- EIP AND 0000FFFFH; FI;
НЕКОНФОРМНЫЙ-КОДОВЫЙ-СЕГМЕНТ:
  RPL должен быть <= CPL  ELSE  #GP(селектор кодового сегмента);
  DPL должен быть = CPL  ELSE  #GP(селектор кодового сегмента);
  Сегмент должен   присутствовать   ELSE  #NP  (селектор  кодовог
                                                сегмента);
  Стек должен  быть  достаточно  велик  для  адреса  возврата ELS
                                                #SS(0);
  Указатель команд должен быть в границах кодового сегмента ELSE
                                                #GP(0);
  Загрузить дескриптор кодового сегмента в регистр CS;
  Загрузить в CS селектор нового кодового сегмента;
  Установить RPL для CS равным CPL;
  Загрузить в EIP с расширенем нулем (новое смещение);
  IF OperandSize = 16 THEN EIP <- EIP AND 0000FFFFH; FI;
ШЛЮЗ-ВЫЗОВА:
  DPL шлюза вызова должен быть >= CPL  ELSE  #GP(селектор шлюза
                                                 вызова);
  DPL шлюза вызова должен быть >= RPL  ELSE  #GP(селектор шлюза
                                                 вызова);
  Шлюз вызова должен присутствовать    ELSE  #NP(селектор шлюза
                                                 вызова);
  Рассмотрим селектор кодового сегмента в дескрипторе шлюза
                                                 вызова:
    Селектор не должен быть пустым ELSE #GP(0)
    Селектор должен быть в пределах границ его дескрипторной
      таблицы ELSE #GP(селектор кодового сегмента)
    Байт AR выбранного дескриптора должен обозначать кодовый
      сегмент ELSE #GP (селектор кодового сегмента)
    DPL выбранного дескриптора должен быть <= CPL ELSE
      #GP(селектор кодового сегмента)
    IF неконформный кодовый сегмент AND DPL = CPL ELSE #TS(селектор шлюза)
  DPL шлюза задачи должен быть >= RPL ELSE #TS(селектор шлюза)
  Шлюз задачи должен присутствовать ELSE #NP(селектор шлюза)
  Исследовать селектор TSS, заданный в дескрипторе шлюза задачи:
    Он должен задавать бит Глобальный/Локальный как Глобальный
      ELSE #TS(селектор TSS)
    Индекс должен находиться в пределах границы GDT
      ELSE #TS(селектор TSS)
    Байт AR дескриптора TSS должен задавать неЗанятый TSS
      ELSE #TS(селектор TSS)
    Сегмент состояния задачи (TSS) должен присутствовать
      ELSE #NP(селектор TSS)
  ПЕРЕКЛЮЧЕНИЕ-ЗАДАЧ (со вложенностью) на TSS
  IP должен находиться в границе кодового сегмента ELSE #TS(0)
СЕГМЕНТ-СОСТОЯНИЯ-ЗАДАЧИ:
  DPL для TSS должен быть >= CPL ELSE #TS(селектор TSS)
  DPL для TSS должен быть >= RPL ELSE #TS(селектор TSS)
  Байт AR дескриптора TSS должен задавать доступный TSS
    ELSE #TS(селектор TSS)
    Сегмент состояния задачи (TSS) должен присутствовать
      ELSE #NP(селектор TSS)
  ПЕРЕКЛЮЧЕНИЕ-ЗАДАЧ (со вложенностью) на TSS
  IP должен находиться в границе кодового сегмента ELSE #TS(0)
Описание
--------
Команда CALL вызывает выполнение процедуры, указанной в
операнде. При завершении процедуры (команда возврата выполняется
вызванной процедурой) выполнение продолжается с команды,
следующей за командой CALL.
     Ниже описано действие для различных форм команды.
Ближними называются вызовы с назначениями типа r/m16, r/m32,
rel16, rel32; изменение или сохранение значения сегментного
регистра не требуется. Формы команды CALL rel16 и CALL rel32
складывают имеющее знак смещение адреса команды, следующей за
командой CALL, для определения назначения. Форма rel16
используется, когда атрибут размера операнда команды равен 16
битам; форма rel32 используется при значении этого атрибута,
равном 32 битам. Результат записывается в 32-битовый регистр
EIP. В случае rel16 старшие 16 битов регистра EIP очищаются ,
что дает значение смещение, не превышающее 16 битов. Команды
CALL r/ m16 и CALL r/m32 задают регистр или адрес памяти, из
которого выполняется выборка абсолютного смещения сегмента.
Смещение, выбранное из r/m, равно 32 битам для атрибута размера
операнда 32 (r/m32), или 16 битам для атрибута размера операнда
16 (r/m16). Смещение для команды, следующей за командой CALL,
помещается в стек. Она будет снята из стека ближней командой RET
в пределах вызванной процедуры. Регистр CS этой формой команды
CALL не изменяется.
Дальние вызовы, CALL ptr16:16 и CALL ptr16:32, используют в
качестве дальнего указателя на вызываемую процедуру четырех- или
шести-байтовый операнд. Формы CALL m16:16 и m16:32 извлекают
дальний указатель из заданного адреса памяти (косвенная ссылка).
В режиме реальных адресов или виртуальном режиме 8086 дальние
указатели содержат 16 битов для регистра CS и 16 или 32 бита для
регистра EIP (в зависимости от атрибута размера операнда). Эти
формы команды помещают в стек оба регистра, IP и EIP, в качестве
адреса возврата.
В защищенном режиме обе формы дальних указателей обращаются к
байту AR в дескрипторе, индексируемом селекторной частью
дальнего указателя. В зависимости от значения байта AR вызов
выполнит один из следующих типов передачи управления:
     - Дальний вызов к тому же самому уровню защиты
     - Дальний вызов между разными уровнями защиты
     - Переключение задачи
Более подробную информацию о передаче управления в защищенном
режиме см. в главах 6 и 7.
Изменяемые флаги
----------------
При переключении задачи изменяются все флаги; если же
переключение задачи не происходит, то флаги не изменяются.
Исключения защищенного режима
----------------------------------
Для дальних вызовов: #GP, #NP, #SS и #TS, как указано в разделе
"Работа команды".
Для ближних прямых вызовов: #GP(0), если процедура находится за
пределами границы кодового сегмента; #SS(0) в случае
недопустимого адреса в сегменте SS; #PF(код сбоя) в случае
страничного сбоя; #AC для невыравненной ссылки к памяти при
текущем уровне привилегированности, равном 3.
Исключения режима реальных адресов
---------------------------------------
Прерывание 13, если какая-либо часть операнда лежит вне
пространства исполнительных адресов от 0 до 0FFFFH.
Исключения виртуального режима 8086
----------------------------------------
Те же исключения, что и для режима реальных адресов: #PF (код
сбоя) для страничных сбоев; #AC для невыравненной ссылки к
памяти при текущем уровне привилегированности, равном 3.
Примечания
----------
Любой дальний вызов из 32-разрядного кодового сегмента в
16-разрядный кодовый сегмент должен находиться в первых 64К
32-разрядного кодового сегмента, поскольку атрибут размера
операнда команды в этом случае устанавливается на 16, что
позволяет сохранить только 16-битовое смещение адреса возврата.


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