на начало
На главную страницу
Форум   

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

 

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'

Пример 2


;В полях данных сегмента данных, адресуемого через ES:
array dw 10000 dup (?) ;Место под массив слов
; В программном сегменте:
mov AX,-1 ;Число-заполнитель
mov CX,10000 ;Заполнить 10000 слов
сld ;Движение по строке вперед
lea DI,array ;ES:DI ® array
rep stosw ;Bce 10000 элементов массива
;получают значение -1 (FFFFh)

Пример 3


;В полях данных сегмента данных, адресуемого через ES:
line db 80 dup (' ') ;Пустая пока строка
;В программном сегменте:
mov AL,'>' ;Код ASCII знака '>'
mov CX,5 ;Заполнить 5 слов
eld ;Движение по строке вперед
lea DI,line ;ES:DI -" line
rep stos line ;Первые 5 байт строки line
;заполняются кодом ASCII
;знака ' >'

Пример 4


;В полях данных сегмента данных, адресуемого через ES:
line dw 80 dup (0) ;Строка, заполненная нулями
;В программном сегменте:
mov AL,'>' ;Код ASCII знака '>'
mov AH,31h ;Атрибут (синий по бирюзовому)
mov CX,5 ; Заполнить 5 слов
сld ;Движение по строке вперед
lea DI,line ;ES:DI -" line
rep stos line ;Первые 5 слов строки line
;заполняются кодом ASCII
;знака '>'вместе с атрибутом
;для последующего вывода на экран

 

386+ STOSD Запись двойного слова в строку данных


Команда аналогична командам МП 86 stosb и stosw, но позволяет записать в строку, адресуемую через регистры ES:EDI, двойное слово из регистра ЕАХ.

Пример


; В полях данных
dat dd 12789,2,550000,100000
; В программном сегменте
mov ЕАХ,444777
push DS
pop ES ;ES=DS
mov DI, off set dat
add DI,4*2 ;DS:SI -" 3-й элемент массива
;чисел
stosd ;dat=12789,2,444777,100000

 

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

страницы в данном разделе 
Приложение. Система команд процессоров Intel Система команд процессоров Intel
ААА ASCII-коррекция регистра АХ после сложения ADC Целочисленное сложение с переносом
386+ BSF Прямое сканирование битов 386+ BTR Проверка и сброс бита
CLC Сброс флага переноса СМР Сравнение
486+ CMPXCHG Сравнение и обмен DAA Десятичная коррекция в регистре AL после сложения
HLT Останов INS Ввод строки из порта
INT Программное прерывание MP Безусловный переход
386+ LEAVE Выход из процедуры высокого уровня 386Р+ LGDT Загрузка регистра таблицы глобальных дескрипторов
LOCK Запирание шины 386+ LODSD Загрузка двойного слова из строки
386Р+ LTR Загрузка регистра задачи TR MOVS Пересылка данных из строки в строку
MUL Умножение целых чисел без знака OUTS Вывод строки в порт
POP Извлечение слова из стека PUSH Занесение операнда в стек
RCR Циклический сдвиг вправо через бит переноса RET Возврат из процедуры
ROL Циклический сдвиг влево SBB Целочисленное вычитание с займом
386+ SETcc Установка байта по условию 386P+ SIDT Сохранение в памяти содержимого регистра таблицы дескрипторов прерываний
STI Установка флага прерывания 386P+ STR Сохранение содержимого регистра состояния задачи
486+ XADD Обмен и сложение >  


Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)



PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C



 
© faq.pp.ru, справочник программиста