Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник.docx
Скачиваний:
5
Добавлен:
26.11.2018
Размер:
54.24 Кб
Скачать

1; Ротация более чем на один бит требует указания регистра cl, который

содержит счётчик. Для команды ROL самый левый бит записывается в бит 0;

все другие биты сдвигаются влево. Для команды ROR бит 0 записывается в

самый левый бит; все другие биты сдвигаются вправо. См. также команды RCL

и RCR.

Ф л а г и: Команда воздействует на флаги CF и OF.

О б ъ е к т н ы й к о д: ROL: |110100cw|mod000r/m|

ROR: |110100cw|mod001r/m|

(если с = 0, то сдвиг на 1;

если с = 1, то сдвиг на CL).

SAHF: Установка флагов из регистра АН

---------------------------------------

О п е р а ц и я: Данная команда обеспечивает совместимость с

процессором 8080 для пересылки значений флагов из регистра АН во флаговый

регистр. См. также команду LAHF. Команда SAHF пересылает определенные биты

из регистра АН во флаговый регистр в следующем виде:

SZ * A * P * C (* обозначает неиспользуемые биты)

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: 10011110 (без операндов)

SAL, SAR, SHL и SHR: Сдвиг влево или вправо

---------------------------------------------

О п е р а ц и я: Выполняет сдвиг битов влево или вправо. Данные

операции могут выполняться в байте или в слове, в регистре или в памяти.

Сдвиг на один бит кодируется в команде значением 1; сдвиг более чем на

один бит требует указания регистра CL, который содержит счетчик сдвига.

Команда SAR выполняет арифметический сдвиг, который учитывает знак

сдвигаемого значения. Команды SHL и SHR выполняют логический сдвиг и

рассматривают знаковый бит как обычный бит данных. Команда SAL выполняется

аналогично команде SHL. Команды SAL и SHL сдвигают биты влево определенное

число раз и правый освобождающийся бит заполняют нулевым значением.

Команда SHR сдвигает биты вправо определенное число раз и левый

освобождающийся бит заполняет нулевым значением. Команда SAR сдвигает биты

вправо определенное число раз и левый освобождающийся бит заполняет

значением знакового бита (0 или 1). Во всех случаях значения битов,

выдвигаемых за разрядную сетку, теряются.

Ф л а г и: Команда воздействует на флаги CF, OF, PF, SF и ZF (флаг AF

не определен).

О б ъ е к т н ы й к о д: SAL/SHL: |110100cw|mod100r/m|

SAR: |110100cw|mod111r/m|

SHR: |110100cw|mod101r/m|

(если с = 0, то сдвиг на 1;

если с=1, то сдвиг на CL);

SBB: Вычитание с заемом

-------------------------

О п е р а ц и я: Обычно используется при вычитании многословных

двоичных величин для учета единичного бита переполнения в последующей фазе

операции. Если флаг CF установлен в 1, то команда SBB сначала вычитает 1

из операнда 1. Команда SBB всегда вычитает операнд 2 из операнда 1,

аналогично команде SUB. См. также команду ADC.

Ф л а г и: Команда воздействует на флаги AF, CF, OF, PF. SF и ZF.

О б ъ е к т н ы й к о д (три формата):

Регистр из регистра или памяти: |000110dw|modregr/m|

Непосредственное значение из регистра AX (AL):

|0001110w|--data--|data, если w=1|

Непосредственное значение из регистра или памяти:

|100000sw|mod011r/m|--data--|data, если sw=01|

SCAS/SCASB/SCASW: Поиск байта или слова в строке

--------------------------------------------------

О п е р а ц и я: Выполняет поиск определенного байта или слова в

строке. Для команды SCASB необходимое значение загружается в регистр AL, а

для команды SCASW - в регистр AX. Регистровая пара ES:DI указывает на

строку в памяти, которая должна быть сканирована. Данные команды обычно

используются с префиксом REPE или REPNE. Если флаг DF равен нулю, то

операция сканирует память слева направо и увеличивает регистр DI. Если

флаг DF равен единице, то операция сканирует память справа налево и

уменьшает регистр DI.

Ф л а г и: Команда воздействует на флаги AF, CF, OF, PF, SF и ZF.

О б ъ е к т н ы й к о д: 1010111w (без операндов).

STC: Установка флага переноса

-------------------------------

О п е р а ц и я: Устанавливает значение флага CF в 1. См. также

команду STD.

Ф л а г и: Команда воздействует на флаг CF (устанавливается в 1).

О б ъ е к т н ы й к о д: 11111001 (без операндов).

STD: Установка флага направления

----------------------------------

О п е р а ц и я: Устанавливает значение флага направления в 1. В

результате строковые операции, такие, как MOVS или CMPS, обрабатывают

данные справа налево. См. также CLD.

Ф л а г и: Команда воздействует на флаг DF (устанавливается в 1).

О б ъ е к т н ы й к о д: 11111101 (без операндов).

STI: Установка флага прерывания

---------------------------------

О п е р а ц и я: Разрешает маскируемые внешние прерывания после

выполнения следующей команды и устанавливает значения флага прерывания IF

в 1. См. также команду CLI.

Ф л а г и: Команда воздействует на флаг IF (устанавливается в 1).

О б ъ е к т н ы й к о д: 11111011 (без операндов).

STOS/STOSB/STOSW: Запись однобайтовой или двухбайтовой строки

---------------------------------------------------------------

О п е р а ц и я: Сохраняет байт или слово в памяти. При использовании

префикса REP операция дублирует значение байта или слова определенное

число раз, что делает ее удобной для очистки областей памяти. Для команды

STOSB необходимый байт загружается в регистр AL, а для команды STOSW

необходимое слово загружается в регистр АХ. Регистровая пара ES:DI

указывает область памяти, куда должен быть записан байт или слово. Если

флаг DF равен нулю, то операция записывает в память слева направо и

увеличивает регистр DI. Если флаг DF равен единице, то операция записывает

в память справа налево и уменьшает значение в регистре DI.

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: 1010101w (без операндов).

SUB: Вычитание двоичных чисел

-------------------------------

О п е р а ц и я: Вычитает байт или слово в регистре, памяти или

непосредственное значение из регистра; или вычитает байт или слово в

регистре или непосредственное значение из памяти. См. также команду SBB.

Ф л а г и: Команда воздействует на флаги AF, CF, OF, PF, SF и ZF.

О б ъ е к т н ы й к о д (три формата):

Регистр из регистра или памяти:

|001010dw|modregr/m|

Непосредственное значение из регистра АХ (AL):

|0010110w|--data--|data, если w=1|

Непосредственное значение из регистра или памяти:

|100000sw|mod101r/m|--data--|data, если sw=01|

TEST: Проверка битов

----------------------

О п е р а ц и я: Команда выполняет проверку байта или слова на

определенную битовую комбинацию. Команда TEST действует аналогично команде

AND, но не изменяет результирующий операнд. Операнды могут иметь

однобайтовые или двухбайтовые значения. Второй операнд может иметь

непосредственное значение. Команда выставляет флаги в соответствии с

логической функцией И.

Ф л а г и: Команда воздействует на флаги CF, OF, PF, SF и ZF (флаг AF

не определен).

О б ъ е к т н ы й к о д (три формата):

Регистр или память И регистр:

|1000010w|modregr/m|

Непосредственное значение И регистр АХ (AL):

|1010100w|--data--|data, если w=1|

Непосредственное значение И регистр или память:

y1111011w|mod000r/m|--data--|data, если w=1|

WAIT: Установка процессора в состояние ожидания

-------------------------------------------------

О п е р а ц и я: Позволяет процессору оставаться в состоянии

ожидания, пока не произойдет внешнее прерывание. Данная операция

необходима для обеспечения синхронизации процессора с внешним устройством

или с сопроцессором. Процессор ожидает, пока внешнее устройство (или

сопроцессор) не закончит выполнение операции и на входной линии TEST не

появится сигнал (активный уровень).

Ф л а г и: Не меняются.

О б ъ е к т н ы й к о д: 10011011