📄 fi.asm
字号:
CODE SEGMENT
ASSUME CS:CODE,DS:CODE
ORG 100H
START:
JMP ACTION
MAIN:
CLI
PUSH DS
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
STI
XOR BH,BH ;读光标位置
MOV AH,3
INT 10H
PUSH DX
MOV AH,2CH
INT 21H
PUSH DX
PUSH CX
LEA SI,TIME
XCHG AL,CH
CALL DO
POP AX
CALL DO
POP AX
XCHG AL,AH
CALL DO
PUSH CS
POP ES
MOV BX,0EH
LEA AX,TT ;打印提示语句和时间
MOV BP,AX
MOV AX,1300H
MOV CX,21H
MOV DX,002FH
INT 10H
POP DX
XOR BH,BH ;恢复光标位置
MOV AH,2
INT 10H
CLI
POP SI
POP DX
POP CX
POP BX
POP AX
POP DS
STI
PUSHF
CALL CS:[INT1C]
IRET
DO: ;处理时间子程序
XOR AH,AH
MOV BL,10
DIV BL
ADD AX,3030H
MOV CS:[SI],AL
INC SI
MOV CS:[SI],AH
INC SI
INC SI
RET
EXIT:
pushf
push ax
push ds
MOV DI,20H ;恢复系统时钟的中断向量表
MOV AX,WORD PTR [INT1C]
MOV CS:[1CH*4],AX
MOV AX,WORD PTR [INT1C+2]
MOV CS:[1CH*4+2],AX
MOV DI,20H ;恢复CTRL+Break控制中断
MOV AX,WORD PTR [INT1B]
MOV CS:[1BH*4],AX
MOV AX,WORD PTR [INT1B+2]
MOV CS:[1BH*4+2],AX
pop ds
pop ax
popf
INT1C DD ? ;定义两个字节,存放INT1CH的入口
INT1B DD ? ;定义两个字节,存放INT1BH的入口
TT DB 'PRESS CTRL+BREAK TO EXIT.' ;提示语句
TIME DB '00:00:00' ;存放时间
ACTION: PUSH ES
XOR AX,AX
MOV ES,AX
MOV AX,ES:[1BH*4] ;保存中断入口
MOV WORD PTR CS:[INT1B],AX
MOV AX,ES:[1BH*4+2]
MOV WORD PTR CS:[INT1B+2],AX
MOV AX,ES:[1CH*4]
MOV WORD PTR CS:[INT1C],AX
MOV AX,ES:[1CH*4+2]
MOV WORD PTR CS:[INT1C+2],AX
POP ES
push CS
pop DS
MOV DX,OFFSET main ;改INT1C的入口
MOV AX,251CH
INT 21H
MOV DX,OFFSET EXIT ;改INT1B的入口
MOV AX,251BH
INT 21H
mov DX,OFFSET ACTION
INT 27H
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -