⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bell.asm

📁 微机原理——接口应用编程源码
💻 ASM
字号:
stack   segment stack
        dw 64 dup(?)
stack   ends
code    segment
        assume cs:code
main:	mov ax,0000h
        mov ds,ax
        mov ax,offset IRQ0

        add ax,2000h	;ip
        mov si,20h
        mov [si],ax

        mov ax,0000h	;cs
        mov si,22h
        mov [si],ax

        mov al,13h	;icw1
        out 20h,al

        mov al,08h	;icw2
        out 21h,al

        mov al,09h	;icw4
        out 21h,al

        mov al,0feh	;ocw1
        out 21h,al

        mov dx,43h	;8253 ctl wrd
        mov al,30h
        out dx,al

        mov al,80h	;8255 ctl wrd
        out 63h,al

	mov bx,0d

        mov al,0ffh	
        out 40h,al
        mov al,0ffh
        out 40h,al

        mov cl,00h
        sti
        jmp $

IRQ0:   
        inc bx

        cmp cl,00h
        jne a

        cmp bx,180d	
        je bell
        jmp endirq

a:      cmp bx,60d	
        je bell
        jmp endirq  
bell:   mov dx,63h 	;bell ring
        mov al,00000111b
        out dx,al

        call delay	;ring delay

        mov dx,63h	;stop ring
        mov al,00000110b
        out dx,al

        mov bx,0d
        cmp cl,00h
        jne b
        mov cl,0aah
        jmp endirq
   
b:      mov cl,00h
        
endirq: mov al,0ffh	
        out 40h,al
        mov al,0ffh
        out 40h,al

        mov al,20h
        out 20h,al
        iret

delay   proc
        push ax
        push cx
        mov cx,0ffffh
  c:    mov ax,0000h
        loop c
        pop cx
        pop ax
        ret
delay endp
        
code    ends
        end main

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -