?? b.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,7Ch
out 40h,al
mov al,2Eh
out 40h,al
mov cl,00h
sti
jmp $
IRQ0:
inc bx
cmp cl,00h
jne a
cmp bx,2000d
je bell
jmp endirq
a: cmp bx,1000d
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,7Ch
out 40h,al
mov al,2Eh
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 + -