Установить флаг прерывания
STI - Установить флаг прерывания IF.
В большинстве случаев
sti устанавливает флаг прерывания (IF) в регистре FLAGS. Это позволяет процессору реагировать на маскируемые аппаратные прерывания.
Если IF=0, маскируемые аппаратные прерывания остаются заблокированными на границе команды после выполнения
sti. (Отложенный эффект этой инструкции предусмотрен для того, чтобы разрешить включение прерываний непосредственно перед возвращением из процедуры или подпрограммы. Например, если за инструкцией
sti следует инструкция
ret, команде
ret разрешается выполняться до того, как будут распознаны внешние прерывания. Никакие прерывания не могут быть распознаны, если выполнение
cli немедленно следует за таким выполнением
sti.) Блокирование заканчивается после доставки другого события (например, исключения) или выполнения следующей инструкции.
Флаг IF и инструкции
sti и
cli не запрещают генерацию исключений и немаскируемых прерываний (NMI). Однако NMI (и прерывания системного управления) могут быть заблокированы на границе команды после выполнения
sti, которое начинается с IF=0.
В качестве примера, сначала очистим флаг IF а следующей инструкцией установим его.
- title Автор: Довгополов Евгений Сергеевич
- .model small
- .stack 100h
- code segment public
- ____assume cs:code
- ____main proc
- ________std
- ________cld
- ________mov_____ax, 4C00h
- ________int_____21h
- ____main endp
- code ends
- end main