Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
I8086.DOC
Скачиваний:
50
Добавлен:
02.05.2014
Размер:
1.36 Mб
Скачать

0 ─►│ Операнд ├──►│cf│

    └─────────┘   └──┘

Имеются две разновидности сдвига: одноразрядный и многоразрядный. В последнем случае количество разрядов, на которое производится сдвиг, должно быть предварительно занесено в регистр CL.

ФлажокCFсодержит значение последнего выдвинутого из операнда разряда.

Значение флажка OFв операции многоразрядного сдвига не определено. В операции одноразрядного сдвига устанавливается, если перед выполнением сдвига старший разряд операнда содержал единицу, и сбрасывается в противном случае. Поскольку после выполнения сдвига старший разряд будет содержать нуль, флажокOFпоказывает, произошла ли смена значения старшего разряда операнда.

Флажки SF,ZF,AFиPFне изменяются.

Замечания по программированию

Микропроцессоры 8086 и 8088 не маскируют значение счётчика сдвига. Таким образом, сдвиг может быть выполнен на произвольное число разрядов от 0 до 255. В процессорах, начиная с 80286, в качестве счётчика сдвига используются только младшие 5 разрядов регистра CL, что ограничивает максимальное количество сдвигов (не более 31).

      1. STC– установка флага переноса

F9

STC

CF:= 1

Описание.Устанавливается флажок переносаCFрегистраFLAGS.

ФлажокCFустанавливается, остальные флажки не изменяются.

      1. STD– установка флага направления

FD

STD

DF:= 1

Описание.Устанавливается флажок переносаDFрегистраFLAGS.

Установка флажка DFобеспечивает выполнение строковых операций с автодекрементом (уменьшением адресов операндов, находящихся в регистрахSIиDI).

ФлажокCFустанавливается, остальные флажки не изменяются.

      1. STI– установка флага разрешения прерывания

FB

STI

IF:= 1

Описание.Устанавливается флажок переносаIFрегистраFLAGS.

Когда флажок IFустановлен, разрешена обработка внешних прерываний.

ФлажокIFустанавливается, остальные флажки не изменяются.

      1. STOS– запись строки

AA

STOSB

запись байта из AL в [ES:DI]

AB

STOSW

запись слова из AX в [ES:DI]

Описание.Эта инструкция записывает содержимое регистраALилиAXпо адресуES:DI.

Инструкция STOSотносится к группе инструкций обработки строк. Операнд-приёмник находится в памяти по адресу, содержащемуся в регистровой пареES:DI. Сегментный регистрESне может быть заменён другим сегментным регистром с помощью префикса замены сегмента. Операндом-источником всегда является регистрALилиAX.

После записи байта или слова из аккумулятора в память содержимое регистра DIувеличивается (DF=0) или уменьшается (DF=1) на 1 или 2 в зависимости от размера операнда.

Флажкине изменяются.

Замечания по программированию

При записи на языке ассемблера либо используется мнемоника STOSBилиSTOSW, явно определяющая размер операндов, либо используется обобщённая мнемоникаSTOSс указанием местоположения операнда в памяти. Следует, однако, помнить, что адресация операнда в памяти всегда осуществляется с помощью регистровой парыES:DI, поэтому указанный в данной инструкции адрес используется только для определения размера операнда и, возможно, для применения префикса замены сегмента. За правильность установки начальных значений регистров отвечает программист.