在右上角显示时钟,按任一键结束
用MASM5.0编译通过.
data segment
HH DB 0,0,':'
MM DB 0,0,':'
SS1 DB 0,0
data ends
code segment
main proc far
assume cs:code
start:
push ds
mov ax,0
push ax
mov ax,data
mov ds,ax
AGAIN:
mov ah,2ch 读取系统时咐扮间 CH:CL--时:分 DH:DL--秒:衡历灶百分秒
int 21h
MOV BX ,OFFSET HH
MOV AL,CH
CALL C16_10 转换AL中16进制为10进制,并填入相应位置烂神
MOV BX ,OFFSET MM
MOV AL,CL 分
CALL C16_10
MOV BX ,OFFSET SS1
MOV AL,DH 秒
CALL C16_10
MOV AH,2 光标定位
MOV DH,0 首行
MOV DL,70 70列
MOV BH,0
INT 10H
MOV CX,8
MOV SI,OFFSET HH
NN1:
MOV AH,0EH 电传方式写字符(一次1个)
MOV AL,[SI]
MOV BL,0
INT 10H
INC SI
LOOP NN1
MOV AH,1
INT 16H
JNZ DOWN 按任一键结束
JMP AGAIN
DOWN:
RET
main endp
============
C16_10 PROC NEAR
PUSH CX 将AL中的16进制转为10进制
MOV AH,0
MOV CX,10D
DIV CL
ADD AX,3030H
MOV [BX],AL
INC BX
MOV [BX],AH
POP CX
RET
C16_10 ENDP
=============
code ends
end start
可以放一个中断程序到1C中断,这样会每秒18.2次被调用里面放一个简单的敏册手显示程序,调用中断10,定位当时的鼠标位置,保存,然后可以到屏幕右上角显示当时的时间,姿做时钟数据直接调用21中断取得电脑主机时间数据。
程序主体就是置换原有1C中断地址为新中断地址,记得保存原有中断地址,在新中断运行的时候调用一次原有中断。然后可以考虑驻留内存,或者是遇桥嫌到中断按键后退出程序以便于调试
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)