📄 systime.asm
字号:
cursor EQU 45H
attrib EQU 2fh
code SEGMENT
ASSUME CS:code,DS:code
start:
JMP go
oldcur DW ?
OLD1C DW 2 DUP(?)
NEWINT1C:
PUSHF
CALL DWORD PTR CS:OLD1C
PUSH AX
PUSH BX
PUSH CX
PUSH DX
XOR BH,BH
MOV AH,3
INT 10H
MOV CS:OLDCUR,DX
MOV AH,2
XOR BH,BH
MOV DX,CURSOR
INT 10H
MOV AH,2 ;读取系统时钟
INT 1AH INT
PUSH DX PUSH DX
PUSH CX
PUSH CXP BX
POP BXSH BX
PUSH BXLL SHOWCALL
CALL SHOWCALLN
POP BX
POP BXHG BH,BXCHG BH BLLL SHOWCALL
CALL SHOWCALLN
POP BX
POP BXLL SHOWCALL
MOV DX,CMOVLDCURDX CS MOV AH,2MOV AHXOR BH,BXOR BH BHT 10HINT POP DX
POP PDX CX
POP PCX BX
POP PBX AX
POP IAXT
SHOWBYTIRETOC NEAR
PROC NEARH BX
PUSH MBX CL,4MOV CLV AL,BHMOV ALRBH AL,CL
SHR ALDCL AL,30HADD ALLL SHOW
CALL CALL CURMOVECALL POP BX
POPMOV BX AL,BH
MOV ANAL BH AL,0FH
AND AAL AL,30H
ADD CALL SHOW
CALL CALL CURMOVE
CALL RET
SHOWBYTE ENDRET
SHOWCOLONENDPC NEAR
PROCVNEAR AL,':'
MOV CALL SHOW
CALL CALL CURMOVE
CALL RET
SHOWCOLON ENRET
CURMOVE ENDP NEAR
PROCUNEAR AX
PUSHPUSHAX BX
PUSHPUSHBX CX
PUSHPUSHCX DX
PUSHMOV DX AH,3
MOV MOAH BH,0
MOV INBH 10H
INT INC DL
INC MOV DL AH,2
MOV INAH 10H
INT POP DX
POP POP DX CX
POP POP CX BX
POP POP BX AX
POP RETAXURMOVE ENDPRET
SHOW ENDP NEAR
PROCUNEAR AX
PUSHPUSHAX BX
PUSHPUSHBX CX
PUSHMOV CX AH,09H
MOV AHV BX,attriMOV BX MOV CX,1
MOV INCX 10H
INT POP CX
POP POP CX BX
POP POP BX AX
POP RETAXHOW ENDPRET
GO:
ENDP PUSH CS
PUSHPOP CS DS
POP MOV DS AX,351CHMOV AX ;取中断向量
INT 21H
INT OLD1C,BX MOV存原中断向量
BX MOV BX,ES
MOV OLD1MOV,BX
BX ES MOV MOV,OFFSET NEWINBXC ;置新的中断向量MOV DXMOFFSET AX,251CH
INT 21H
MOVMOV AX DX,OFFSET GO
INT SUB DX,OFFMOV STARDXOFFSET MOV CL,SUB DX OFFSET DX,CL
MOVD CLX,11H
SHRMOV DX CL,3100H ADD;结束并驻DX
INT MOV 21HAXODE ENDS
END START
INTENDSEND
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -