📄 tfcl.asm
字号:
DAS
MOV BL,AL
AND BL,00001111B
ADD BL,BH
DAA
CMP LEE,0
JNZ CC12
MOV NS,BL
JMP DD12
CC12: MOV WE,BL
DD12: POP DX
POP CX
POP BX
POP AX
RET
CFIG_WE1 ENDP
CFIG_N1 PROC NEAR
PUSH AX
PUSH BX
CMP N3,0
JZ M11
JMP M21
M11: MOV BL,N1
MOV WHIT, BL
MOV AL,N3
INC AL
MOV N3,AL
JMP EX1
M21: MOV BL,N2
MOV WHIT, BL
MOV AL,N3
DEC AL
MOV N3,AL
EX1: POP BX
POP AX
RET
CFIG_N1 ENDP
INTERRUPT1 PROC FAR ;从定时器读取时间
PUSHF
PUSH AX
PUSH DS
MOV AX,DATA
MOV DS,AX
MOV INTFLAG,1
MOV AL,20H ;EOI
OUT 20H,AL
POP DS
POP AX
POPF
IRET
INTERRUPT1 ENDP
;****************************************************延时子程序 2
DELAY2 PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MAIN2: MOV INTFLAG,0
MOV COUNT ,18
MOV AL,WE
MOV SECOND ,AL
MOV AH,35H
MOV AL,08H
INT 21H
MOV OLD_OFF,BX
MOV OLD_SEG,ES
IN AL,21H
MOV OLD_MSK,AL
MOV AH,02H
MOV DH,06
MOV DL,25
MOV BH,00H
INT 10H
CLI
PUSH DS
MOV AH,25H
MOV AL,08H
MOV DX,SEG INTERRUPT2
MOV DS,DX
MOV DX,OFFSET INTERRUPT2
INT 21H
POP DS
MOV AL,OLD_MSK
AND AL,11111110B
STI
MAINLOOP2: MOV AH,0BH ;test keyboard
INT 21H
CMP AL,00H
JE CHK_INT2
MOV AH,08H ;get key
INT 21H
CMP AL,72H
JZ RESTOR2
CMP AL,63H
JZ CFG_NS2
CMP AL,64H
JZ CFG_WE2
CMP AL,65H ;'e'
JZ CFG2
CMP AL,6EH ;'n'
JZ CFG_N2
CMP AL,1BH ;'ESC'
JNE CHK_INT2
JMP QUIT2
RESTOR2: CALL RESTORE2
JMP MAIN2
CFG_NS2: CALL CFIG_NS2
JMP MAIN2
CFG_WE2: CALL CFIG_WE2
JMP MAIN2
CFG_N2: CALL CFIG_N2
JMP CHK_INT2
CFG2: MOV AL,LEE
CMP AL,0
JZ LEE2
MOV LEE,0
JMP RET21
LEE2: MOV LEE,1
RET21: JMP RET22
MAINLOOP22: JMP MAINLOOP2
QUIT2: CLI
PUSH DS
PUSH ES
MOV AX,DS
MOV ES,AX
MOV AH,25H
MOV AL,08H
MOV DX,ES:OLD_SEG
MOV DS,DX
MOV DX,ES:OLD_OFF
INT 21H
POP ES
POP DS
MOV AL,OLD_MSK
OUT 21H,AL
STI
MOV AH,4CH ;exit
INT 21H
CHK_INT2: CMP INTFLAG,0
JE MAINLOOP22
MOV INTFLAG,0
DEC COUNT
JNE MAINLOOP22
MOV COUNT,18
MOV AL,SECOND
DEC AL
DAS
MOV SECOND,AL
CMP SECOND,0
JA REFRESH2
RET22: JMP STOP2
REFRESH2: MOV AH,02H
MOV DH,05
MOV DL,25
MOV BH,00H
INT 10H
MOV DH,SECOND
MOV DL,DH
AND DL,11110000B
MOV CL,04
SHR DL,CL
OR DL,30H
MOV AH,0EH
MOV AL,DL
INT 10H
MOV DL,DH
AND DL,00001111B
OR DL,30H
MOV AH,0EH
MOV AL,DL
INT 10H
MOV AH,02H
MOV DH,18
MOV DL,0
MOV BH,00H
INT 10H
MOV AH,02H
MOV AL,20H
INT 21H
MOV AH,02H
MOV AL,20H
INT 21H
JMP MAINLOOP2
STOP2: POP DX
POP CX
POP BX
POP AX
RET
DELAY2 ENDP
RESTORE2 PROC NEAR
MOV AL,20H
MOV WE,AL
MOV NS,AL
RET
RESTORE2 ENDP
CFIG_NS2 PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,02H
MOV DH,17
MOV DL,10
MOV BH,00H
INT 10H
MOV AH,09H
MOV DX,OFFSET DAT5
INT 21H
MOV AH,01H
INT 21H
SUB AL,30H
DAS
SHL AL,4
MOV BH,AL
AND BH,11110000B
MOV AH,01H
INT 21H
SUB AL,30H
DAS
MOV BL,AL
AND BL,00001111B
ADD BL,BH
DAA
CMP LEE,0
JNZ CC21
MOV WE,BL
JMP DD21
CC21: MOV WE,BL
DD21: POP DX
POP CX
POP BX
POP AX
RET
CFIG_NS2 ENDP
CFIG_WE2 PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,02H
MOV DH,17
MOV DL,10
MOV BH,00H
INT 10H
MOV AH,09H
MOV DX,OFFSET DAT5
INT 21H
MOV AH,02H
MOV DL,0DH ;'cr'
INT 21H
MOV AH,01H
INT 21H
SUB AL,30H
DAS
SHL AL,4
MOV BH,AL
AND BH,11110000B
MOV AH,01H
INT 21H
SUB AL,30H
DAS
MOV BL,AL
AND BL,00001111B
ADD BL,BH
DAA
CMP LEE,0
JNZ CC22
MOV NS,BL
JMP DD22
CC22: MOV NS,BL
DD22: POP DX
POP CX
POP BX
POP AX
RET
CFIG_WE2 ENDP
CFIG_N2 PROC NEAR
PUSH AX
PUSH BX
CMP N3,0
JZ M12
JMP M22
M12: MOV BL,N1
MOV WHIT,BL
MOV AL,N3
INC AL
MOV N3,AL
JMP EX2
M22: MOV BL,N2
MOV WHIT,BL
MOV AL,N3
DEC AL
MOV N3,AL
EX2: POP BX
POP AX
RET
CFIG_N2 ENDP
INTERRUPT2 PROC FAR
PUSHF
PUSH AX
PUSH DS
MOV AX,DATA
MOV DS,AX
MOV INTFLAG,1
MOV AL,20H ;EOI
OUT 20H,AL
POP DS
POP AX
POPF
IRET
INTERRUPT2 ENDP
;****************************************************延时子程序 2
DELAY3 PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV INTFLAG,0
MOV COUNT ,18
MOV SECOND ,0
MOV AH,35H
MOV AL,08H
INT 21H
MOV OLD_OFF,BX
MOV OLD_SEG,ES
IN AL,21H
MOV OLD_MSK,AL
MOV AH,02H
MOV DH,06
MOV DL,25
MOV BH,00H
INT 10H
CLI
PUSH DS
MOV AH,25H
MOV AL,08H
MOV DX,SEG INTERRUPT3
MOV DS,DX
MOV DX,OFFSET INTERRUPT3
INT 21H
POP DS
MOV AL,OLD_MSK
AND AL,11111110B
STI
MAINLOOP3: JMP CHK_INT3
CHK_INT3: MOV AH,02H
MOV DH,05
MOV DL,25
MOV BH,00H
INT 10H
MOV DL,'0'
MOV AH,02H
INT 21H
MOV DL,'0'
MOV AH,02H
INT 21H
CMP INTFLAG,0
JE MAINLOOP3
MOV INTFLAG,0
DEC COUNT
JNE MAINLOOP3
MOV COUNT,18
MOV AL,SECOND
INC AL
DAA
MOV SECOND,AL
CMP SECOND,0
JNA REFRESH3
JMP STOP3
REFRESH3: JMP MAINLOOP2
STOP3: POP DX
POP CX
POP BX
POP AX
RET
DELAY3 ENDP
INTERRUPT3 PROC FAR
PUSHF
PUSH AX
PUSH DS
MOV AX,DATA
MOV DS,AX
MOV INTFLAG,1
MOV AL,20H ;EOI
OUT 20H,AL
POP DS
POP AX
POPF
IRET
INTERRUPT3 ENDP
;******************************
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -