汇编语言中断问题,下面这个程序是在第一个STI后就开始执行中断吗?或者他的中断执行顺序是怎样的

想问一下,我们知道汇编中断是在int n开始执行,那么在STI这条语句之后会执行吗?
比如:
例:编写一个中断处理程序,要求在主程序运行期间,
每隔 10 秒响铃一次,并显示 ‘bell’
.model small
.stack
.data

cnt dw 1
mes db 'bell',0ah,0dh,'$'
 
.code

main proc far
start:
mov ax, @data
mov ds, ax 
mov al, 1ch
mov ah, 35h
int 21h
push es
push bx

push ds
mov dx, offset ring
mov ax, seg ring
mov ds, ax
mov al, 1ch
mov ah, 25h
int 21h
pop ds
 
in al, 21h
and al, 11111110b
out 21h, al
sti

mov di, 30000
dly: mov si, 60000
dly1:
dec si
jnz dly1

dec di
jnz dly ;主程序
 
pop dx
pop ds
mov al, 1ch
mov ah, 25h
int 21h 

mov ax, 4c00h
int 21h

main endp 

ring proc near
……  ;保存寄存器
mov ax, @data
mov ds, ax
sti ;开中断
dec cnt
jnz exit
 
mov dx, offset mes
mov ah, 09
int 21h
call sound
 
mov cnt,182
exit: cli ;关中断
…… ;恢复寄存器
iret
ring endp

end start

通常,在保存现场或恢复现场过程中是不想被中断的;在设置中断向量、恢复中断向量过程中也是不允许中断的。其他情况都是可以中断的(sti)。
温馨提示:答案为网友推荐,仅供参考
相似回答