.286
.MODEL SMALL
.CODE
;-------数据段---------
CLOCK DB 8 DUP(?)
OLD1C LABEL DWORD ;旧1c中断
OLD1COFF DW ?
OLD1CSEG DW ?
oldint9 dd ?
time dw 91
oldint60 dd ?
oldint1c dd ?
;-----------------------
soundf proc
push dx
push ax
push cx
mov dx,10
in al,61h
and al,0fch
sound:
xor al, 02
out 61h, al
mov cx, 1400h
wait1:
loop wait1
dec dx
jne sound
pop cx
pop ax
pop dx
ret
soundf endp
;-----------------------
dispclock proc
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DS
mov cs:time, 18
LEA SI,CLOCK
MOV AH,02H
INT 1AH
MOV AH,CH
MOV AL,CL ;获取系统时间
MOV CL,4
SHR CH,CL
OR CH,30H
MOV DS:[SI],CH
INC SI ;送ascii码,小时 高位
MOV CH,AH
AND CH,0FH
OR CH,30H
MOV DS:[SI],CH
INC SI ;送ascii码,小时 低位
MOV DL,3AH
MOV DS:[SI],DL
INC SI ;冒号
MOV AH,AL
SHR AL,CL
OR
Dos下的屏保程序实现
最新推荐文章于 2023-02-14 20:19:47 发布
本文介绍了一段DOS下的屏保程序实现,重点在于键盘检测和中断处理。通过修改键盘中断INT 9,设置新的中断处理程序来复位计时器,当键盘被按下时重新启动屏保。由于程序在内存驻留,导致错误时需强制关闭DOSBox。此外,还提到了一个用于解除内存驻留的remove.exe工具。


735

被折叠的 条评论
为什么被折叠?



