📄 timer.asm
字号:
;******************************************************
;* 文件名:Timer.asm
;* 创建日期:2001.7.4
;* 作者:陈文尧
;* 功能:利用内存驻留显示时钟
;******************************************************
include system.inc
;******************************************************
;* 以下代码由汇编专家产生,不要随便修改
;******************************************************
.CODE
ifdef __COM__
org 100h
endif
@@Start:
;------------------------------------------------------
; 初始化数据段
;------------------------------------------------------
InitDS cs
;------------------------------------------------------
; 调用主函数
;------------------------------------------------------
call main
;------------------------------------------------------
; 正常退出,并驻留内存
;------------------------------------------------------
TSR @@EndTSR
;++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ 从这里开始到@@EndTSR,你可以加入需要驻留的代码和数据
;++++++++++++++++++++++++++++++++++++++++++++++++++++++
Time2Asc proc near
out 70h,al
in al,71h
mov ah,al
and ah,0fh
shr al,04h
add ax,3030h
ret
Time2Asc endp
;从CMOS中读取系统时间
GetTime macro
mov al,00h
call Time2Asc
mov word ptr SSS,ax
mov al,02h
call Time2Asc
mov word ptr MMM,ax
mov al,04h
call Time2Asc
mov word ptr HHH,ax
endm
;采用直接写屏方式显示时间
PutTime macro
local @Begin
MovSeg es,0b800h
mov ah,BC_BLUE or CR_YELLOW
mov di,(80d-BUFFER_LEN) shl 01h
mov si,offset HHH
mov cl,BUFFER_LEN
cld
@Begin:
lodsb
stosw
dec cl
ja @Begin
endm
new1ch proc
pusha
push ds
push es
;
MovSeg ds,cs
GetTime
PutTime
;
pop es
pop ds
popa
jmp dword ptr cs:[old1ch]
new1ch endp
old1ch dd ?
HHH db ?,?,':'
MMM db ?,?,':'
SSS db ?,?
BUFFER_LEN = $ - offset HHH
@@EndTSR:
;++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ 主函数,加入驻留前需要做的代码
;++++++++++++++++++++++++++++++++++++++++++++++++++++++
main proc
mov ax,351ch
int 21h
mov word ptr old1ch,bx
mov ax,es
mov word ptr old1ch+02h,ax
mov ax,251ch
mov dx,offset new1ch
int 21h
;
ret
main endp
;******************************************************
;* 标志程序结束并指定程序入口
;******************************************************
end @@Start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -