Иллюстрированный самоучитель по Assembler

S

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

Команда stc устанавливает флаг переноса CF в регистре флагов. Команда не имеет параметров и не воздействует на остальные флаги процессора.

Пример:

stc; Флаг CF устанавливается

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

Команда STD устанавливает флаг направления DF в регистре флагов, определяя тем самым обратное направление выполнения строковых операций (в порядке убывания адресов элементов строки). Команда не имеет параметров и не воздействует на остальные флаги процессора.

Пример:

std; Флаг направления устанавливается

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

Команда STI устанавливает флаг разрешения прерываний IF в регистре флагов, разрешая все аппаратные прерывания (от таймера, клавиатуры, дисков и т.д.). Команда не имеет параметров и не воздействует на остальные флаги процессора.

Пример:

sti; Разрешение аппаратных прерываний

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

Команды предназначены для операций над строками (строкой называется последовательность байтов или слов памяти с любым содержимым). Они копируют содержимое регистра AL (в случае операций над байтами) или АХ (в случае операций над словами) в ячейку памяти соответствующего размера по адресу, определяемому содержимым пары регистров ES:DI. После операции копирования регистр DI получает положительное (если флаг DF=0) или отрицательное (если флаг DF=1) приращение. Величина приращения составляет 1 или 2 в зависимости от размера копируемого элемента.

Вариант команды stos имеет формат:

stos строка

(Что не избавляет от необходимости инициализировать регистры ES:DI адресом строки строка). Заменить сегментный регистр ES нельзя.

Рассматриваемые команды могут предваряться префиксом повторения rep. В этом случае они повторяются СХ раз, заполняя последовательные ячейки памяти одним и тем же содержимым регистра AL или АХ. Команда не воздействует на флаги процессора.

Пример 1:

;В полях данных сегмента данных, адресуемого через ES:
id db 'ID:'
;В программном сегменте:
eld; Движение по строке вперед
mov DI,offset id+3; DI › за знаком ':'
mov AL,'3'; Код ASCII цифры 3
stosb; Отправим в строку
mov AL,'9'; Код ASCII цифры 9
stosb; Отправим в строку
;Теперь в строке id записано 'ID:39'
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.