📄 tfcl.asm
字号:
MOV CX,01H
INT 10H
INC UPPER_COL
POP CX
LOOP R_N3
R_N3: POP BX
MOV UPPER_COL,BL
POP BX
MOV UPPER_ROW,BL
RET
NORTH3 ENDP
;************************************* SOUTH 3
SOUTH3 PROC NEAR
MOV BL,UNDER_ROW
PUSH BX
MOV BL,UNDER_COL
PUSH BX
SOUTH_3: MOV AH,02H
MOV DH,UNDER_ROW
MOV DL,UNDER_COL
MOV BH,00H
INT 10H
CMP CX,03H
JZ SOUTH_3_A1
CMP CX,02H
JZ SOUTH_3_A3
CMP CX,01H
JZ SOUTH_3_A2
SOUTH_3_A1: PUSH CX
MOV DI,SEG DAT2
MOV ES,DI
MOV BP,OFFSET DAT2
MOV AL,00H
MOV BL,WHITE
MOV AH,13H
MOV CX,01H
INT 10H
INC UNDER_COL
POP CX
LOOP SOUTH_3
SOUTH_3_A3: PUSH CX
MOV DI,SEG DAT2
MOV ES,DI
MOV BP,OFFSET DAT2
MOV AL,00H
MOV BL,YELLOW
MOV AH,13H
MOV CX,01H
INT 10H
INC UNDER_COL
POP CX
LOOP SOUTH_3
SOUTH_3_A2: PUSH CX
MOV DI,SEG DAT2
MOV ES,DI
MOV BP,OFFSET DAT2
MOV AL,00H
MOV BL,WHITE
MOV AH,13H
MOV CX,01H
INT 10H
INC UNDER_COL
POP CX
LOOP R_S3
R_S3: POP BX
MOV UNDER_COL,BL
POP BX
MOV UNDER_ROW,BL
RET
SOUTH3 ENDP
;************************************* WEST 3
WEST3 PROC NEAR
MOV BL,LEFT_ROW
PUSH BX
MOV BL,LEFT_COL
PUSH BX
WEST_3: MOV AH,02H
MOV DH,LEFT_ROW
MOV DL,LEFT_COL
MOV BH,00H
INT 10H
CMP CX,03H
JZ WEST_3_A1
CMP CX,02H
JZ WEST_3_A3
CMP CX,01H
JZ WEST_3_A2
WEST_3_A1: PUSH CX
MOV DI,SEG DAT2
MOV ES,DI
MOV BP,OFFSET DAT2
MOV AL,00H
MOV BL,WHITE
MOV AH,13H
MOV CX,01H
INT 10H
INC LEFT_COL
POP CX
LOOP WEST_3
WEST_3_A3: PUSH CX
MOV DI,SEG DAT2
MOV ES,DI
MOV BP,OFFSET DAT2
MOV AL,00H
MOV BL,YELLOW
MOV AH,13H
MOV CX,01H
INT 10H
INC LEFT_COL
POP CX
LOOP WEST_3
WEST_3_A2: PUSH CX
MOV DI,SEG DAT2
MOV ES,DI
MOV BP,OFFSET DAT2
MOV AL,00H
MOV BL,WHITE
MOV AH,13H
MOV CX,01H
INT 10H
INC LEFT_COL
POP CX
LOOP R_W3
R_W3: POP BX
MOV LEFT_COL,BL
POP BX
MOV LEFT_ROW ,BL
RET
WEST3 ENDP
;************************************* EAST3
EAST3 PROC NEAR
MOV BL,RIGHT_ROW
PUSH BX
MOV BL,RIGHT_COL
PUSH BX
EAST_3: MOV AH,02H
MOV DH,RIGHT_ROW
MOV DL,RIGHT_COL
MOV BH,00H
INT 10H
CMP CX,03H
JZ EAST_3_A1
CMP CX,02H
JZ EAST_3_A3
CMP CX,01H
JZ EAST_3_A2
EAST_3_A1: PUSH CX
MOV DI,SEG DAT2
MOV ES,DI
MOV BP,OFFSET DAT2
MOV AL,00H
MOV BL,WHITE
MOV AH,13H
MOV CX,01H
INT 10H
INC RIGHT_COL
POP CX
LOOP EAST_3
EAST_3_A3: PUSH CX
MOV DI,SEG DAT2
MOV ES,DI
MOV BP,OFFSET DAT2
MOV AL,00H
MOV BL,YELLOW
MOV AH,13H
MOV CX,01H
INT 10H
INC RIGHT_COL
POP CX
LOOP EAST_3
EAST_3_A2: PUSH CX
MOV DI,SEG DAT2
MOV ES,DI
MOV BP,OFFSET DAT2
MOV AL,00H
MOV BL,WHITE
MOV AH,13H
MOV CX,01H
INT 10H
INC RIGHT_COL
POP CX
LOOP R_E3
R_E3: POP BX
MOV RIGHT_COL,BL
POP BX
MOV RIGHT_ROW ,BL
RET
EAST3 ENDP
MOD3 ENDP
;****************************************************延时子程序 及键盘控制1
DELAY1 PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MAIN1: MOV INTFLAG,0
MOV COUNT ,18
MOV AL,NS
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
MAINLOOP1: MOV AH,0BH ;test keyboard
INT 21H
CMP AL,00H
JE CHK_INT1
MOV AH,08H ;get key
INT 21H
CMP AL,72H ;'r'
JZ RESTOR1
CMP AL,63H ;'c'
JZ CFG_NS1
CMP AL,64H ;'d'
JZ CFG_WE1
CMP AL,65H ;'e'
JZ CFG1
CMP AL,6EH ;'n'
JZ CFG_N1
CMP AL,1BH ;'ESC'
JNE CHK_INT1
JMP QUIT1
RESTOR1: CALL RESTORE1
JMP MAIN1
CFG_NS1: CALL CFIG_NS1
JMP MAIN1
CFG_WE1: CALL CFIG_WE1
JMP MAIN1
CFG_N1: CALL CFIG_N1
JMP CHK_INT1
CFG1: MOV AL,LEE
CMP AL,0
JZ LEE1
MOV LEE,0
JMP RET11
LEE1: MOV LEE,1
RET11: JMP RET12
MAINLOOP11: JMP MAINLOOP1
QUIT1: 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_INT1: CMP INTFLAG,0 ;计数18次,则减一秒
JE MAINLOOP11
MOV INTFLAG,0
DEC COUNT
JNE MAINLOOP11
MOV COUNT,18
MOV AL,SECOND
DEC AL
DAS
MOV SECOND,AL
CMP SECOND,0 ;等于0则返回
JA REFRESH1
RET12: JMP STOP1
REFRESH1: MOV AH,02H ;转成ASC 并输出
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 MAINLOOP1
STOP1: POP DX
POP CX
POP BX
POP AX
RET
DELAY1 ENDP
RESTORE1 PROC NEAR ;复位
MOV AL,20H
MOV WE,AL
MOV NS,AL
RET
RESTORE1 ENDP
CFIG_NS1 PROC NEAR ;数据输入 ASC转BCD
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 CC11
MOV WE,BL
JMP DD11
CC11: MOV NS,BL
DD11: POP DX
POP CX
POP BX
POP AX
RET
CFIG_NS1 ENDP
CFIG_WE1 PROC NEAR ;数据输入 ASC转BCD
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -