📄 timer2.asm
字号:
;******************************************************
;* 文件名:Timer2.asm
;* 创建日期:2001.7.4
;* 作者:陈文尧
;* 功能:利用内存驻留显示时钟
;* 备注:本程序是Timer.asm的另一个版本。由于她在需要驻留
;* 的代码中调用了库函数,又因为无法事先知道库函数的
;* 位置,所以不能确定代码驻留到哪个具体的标号为止,
;* 在这里本系统提供TSR2这个宏来实现。TSR2宏只要在
;* <汇编专家>中选了"使用未来汇编库函数"就会加上去。
;* TSR2有一个可选的参数,如果没有参数,则如果是EXE
;* 驻留1010h节COM驻留1000h节,如果有参数,则非发布
;* 模式同上面一样否则驻留为参数的值加上PSP的长度。
;* 我建议先把程序编译看COM文件的大小再决定驻留多少
;******************************************************
include system.inc
;******************************************************
;* 以下代码由汇编专家产生,不要随便修改
;******************************************************
.CODE
ifdef __COM__
org 100h
endif
@@Start:
;------------------------------------------------------
; 初始化数据段
;------------------------------------------------------
InitDS cs
;------------------------------------------------------
; 调用主函数
;------------------------------------------------------
call main
;------------------------------------------------------
; 正常退出,并驻留内存
;------------------------------------------------------
TSR2 182d ;本程序的.com文件长182Byte
;++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ 从这里开始到@@EndTSR,你可以加入需要驻留的代码和数据
;++++++++++++++++++++++++++++++++++++++++++++++++++++++
Time2Asc proc near
mov ah,al
and ah,0fh
shr al,04h
add ax,3030h
ret
Time2Asc endp
GetTime macro
mov ah,02h
int 1ah
mov al,cl
call Time2Asc
mov word ptr ds:MMM,ax
mov al,ch
call Time2Asc
mov word ptr ds:HHH,ax
mov al,dh
call Time2Asc
mov word ptr ds:SSS,ax
endm
new1ch proc near
pusha
push ds
push es
;
MovSeg ds,cs
GetTime
LibCall PutStringDirect,<offset HHH>,72d,<BC_BLUE or CR_YELLOW>
;
pop es
pop ds
popa
jmp dword ptr cs:[old1ch]
new1ch endp
old1ch dd ?
HHH db ?,?,':'
MMM db ?,?,':'
SSS db ?,?,00h
@@EndTSR:
;++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ 主函数,加入驻留前需要做的代码
;++++++++++++++++++++++++++++++++++++++++++++++++++++++
main proc
LibCall GetVect,1ch
mov word ptr old1ch,ax
mov word ptr old1ch+02h,dx
LibCall SetVect,1ch,<offset new1ch>
;
ret
main endp
;******************************************************
;* 标志程序结束并指定程序入口
;******************************************************
end @@Start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -