关于中断的汇编程序,求高手哥给详细解释下
主程序运行时,每10秒响铃1次,同时在屏幕上显示信息“The bell is ring”(时钟中断约每秒中断18.2次)
.model small
.stack
.data
.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,20000 /*di,si值为什么设这么多*/
delay:
mov si,30000
delay1:
dec si
jnz delay1
dec di
jnz delay
pop dx
pop ds
mov al,1ch
mov ah,25h
int 21h
mov ax,4c00h /*这里*/
int 21h
ring proc near
push ds
push ax
push cx
push dx
mov ax,@data
mov ds,ax
sti
dec count
jnz exit
mov dx,offset msg
mov ah,09h
int 21h
mov dx,100 /*这一段*/
in al,61h
and al,0fch
sound:
xor al,02
out 61h,al
mov cx,1400h
wait1:
loop wait1
dec dx
jne sound
mov count 182
exit:
cli
pop dx
pop cx
pop ax
pop ds
iret
ring endp
end start