📄 tfcl.asm
字号:
;电子0303 田里 20034972
;交通灯************************
DATA SEGMENT
DAT0 DB ' r : Time Restore.',0DH,0AH,'$'
DAT1 DB ' c : Change The N-S GREEN TIME .',0DH,0AH,'$'
DAT2 DB '#'
DAT3 DB ' d : Change The W-E GREEN TIME .',0DH,0AH,'$'
DAT4 DB 'ESC : QUIT .',0DH,0AH,'$'
DAT5 DB 'PLEASE INPUT SECONDS(<99):',0DH,0AH,'$'
DAT6 DB '********************* *********************','$'
DAT7 DB ' * * ','$'
DAT8 DB ' n : NIGHT CONTROL(NEXT MOD).',0DH,0AH,'$'
DAT9 DB ' Design By TianLi (Elec.0303|20034972) ',0DH,0AH,'$'
DAT10 DB ' Press ENTER into the program ! ' ,0DH,0AH,'$'
DAT11 DB ' And Press ESC to Quit ',0DH,0AH,'$'
DAT12 DB ' This is a Traffic Lights Program ',0DH,0AH,'$'
DAT13 DB ' e : COLOR FAST CHANGE.',0DH,0AH,'$'
RED DB 04H
GREEN DB 02H
WHITE DB 0FH
WHIT DB 0FH
YELLOW DB 8EH
UPPER_ROW DB 1
UPPER_COL DB 24
UNDER_ROW DB 9
UNDER_COL DB 24
LEFT_ROW DB 5
LEFT_COL DB 1
RIGHT_ROW DB 5
RIGHT_COL DB 47
INTFLAG DB 0
COUNT DB 18
SECOND DB 0
OLD_SEG DW ?
OLD_OFF DW ?
OLD_MSK DB ?
NS DB 20H
WE DB 20H
N1 DB 8EH
N2 DB 0FH
N3 DB 0
LEE DB 0
DATA ENDS
;***************************************
STACK SEGMENT STACK
STA DB 256 DUP(?)
TOP EQU $-STA
STACK ENDS
;************************************8
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START: MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV AX,TOP
MOV SP,AX
A0: MOV AH,0 ;设置300*200彩色图形方式
MOV AL,3
INT 10H
MOV AH,01H
MOV CX,2000H
INT 10H
MOV AH,02H ;定义首页
MOV DH,4
MOV DL,0
MOV BH,00H
INT 10H
MOV AL,'*'
MOV BL,0EH
MOV AH,09H
MOV CX,2EH
INT 10H
MOV AH,02H
MOV DH,8
MOV DL,14
MOV BH,00H
INT 10H
MOV AL,'*'
MOV BL,WHITE
MOV AH,09H
MOV CX,1CH
INT 10H
MOV AH,02H
MOV DH,5
MOV DL,0
MOV BH,00H
INT 10H
MOV AH,09H
MOV DX,OFFSET DAT12
INT 21H
MOV AH,09H
MOV DX,OFFSET DAT10
INT 21H
MOV AH,09H
MOV DX,OFFSET DAT11
INT 21H
MOV AH,09H
MOV DX,OFFSET DAT9
INT 21H
MOV AL,'*'
MOV BL,0EH
MOV AH,09H
MOV CX,2DH
INT 10H
MOV AH,0BH
INT 21H
CMP AL,00H
JNZ A0
MOV AH,08H
INT 21H
CMP AL,0DH
JZ REAL
CMP AL,1BH
JZ QUIT
JMP A0
QUIT: MOV AH,4CH
INT 21H
REAL: MOV AX,0600H
MOV CX,0000H
MOV DX,184FH
MOV BH,07H
INT 10H
;*************************************************
A1: MOV AH,02H
MOV DH,12
MOV DL,10
MOV BH,00H
INT 10H
MOV AH,09H
MOV DX,OFFSET DAT0
INT 21H
MOV AH,02H
MOV DH,3
MOV DL,0
MOV BH,00H
INT 10H
MOV AH,09H
MOV DX,OFFSET DAT6
INT 21H
MOV AH,02H
MOV DH,7
MOV DL,0
MOV BH,00H
INT 10H
MOV AH,09H
MOV DX,OFFSET DAT6
INT 21H
MOV CL,0
A2: MOV AH,02H
MOV DH,CL
MOV DL,0
MOV BH,00H
INT 10H
MOV AH,09H
MOV DX,OFFSET DAT7
INT 21H
INC CL
CMP CL,3H
JNZ A2
MOV CL,8
A3: MOV AH,02H
MOV DH,CL
MOV DL,0
MOV BH,00H
INT 10H
MOV AH,09H
MOV DX,OFFSET DAT7
INT 21H
INC CL
CMP CL,0CH
JNZ A3
MOV AH,02H
MOV DH,13
MOV DL,10
MOV BH,00H
INT 10H
MOV AH,09H
MOV DX,OFFSET DAT1
INT 21H
MOV AH,02H
MOV DH,14
MOV DL,10
MOV BH,00H
INT 10H
MOV AH,09H
MOV DX,OFFSET DAT3
INT 21H
MOV AH,02H
MOV DH,15
MOV DL,10
MOV BH,00H
INT 10H
MOV AH,09H
MOV DX,OFFSET DAT8
INT 21H
MOV AH,02H
MOV DH,16
MOV DL,10
MOV BH,00H
INT 10H
MOV AH,09H
MOV DX,OFFSET DAT4
INT 21H
MOV AH,02H
MOV DH,11
MOV DL,10
MOV BH,00H
INT 10H
MOV AH,09H
MOV DX,OFFSET DAT13
INT 21H
CMP LEE,1
JZ A5
CALL MOD1
CMP LEE,1
JZ A4
CALL MOD3
CALL MOD2
CMP LEE,1
JZ A4
CALL MOD3
JMP A4
A5: CALL MOD2
CMP LEE,0
JZ A4
CALL MOD3
CALL MOD1
CMP LEE,0
JZ A4
CALL MOD3
A4: JMP A1
;********************************************* 灯颜色和位置设置1
MOD1 PROC NEAR
MOV CX,03H
CALL NORTH1
MOV CX,03H
CALL SOUTH1
MOV CX,03H
CALL WEST1
MOV CX,03H
CALL EAST1
CALL DELAY1
RET
;************************************* NORTH1
NORTH1 PROC NEAR
MOV BL,UPPER_ROW
PUSH BX
MOV BL,UPPER_COL
PUSH BX
NORTH_1: MOV AH,02H
MOV DH,UPPER_ROW
MOV DL,UPPER_COL
MOV BH,00H
INT 10H
CMP CX,03H
JZ NORTH_1_A1
CMP CX,02H
JZ NORTH_1_A3
CMP CX,01H
JZ NORTH_1_A2
NORTH_1_A1: PUSH CX
MOV DI,SEG DAT2
MOV ES,DI
MOV BP,OFFSET DAT2
MOV AL,00H
MOV BL,RED
MOV AH,13H
MOV CX,01H
INT 10H
INC UPPER_COL
POP CX
LOOP NORTH_1
NORTH_1_A3: PUSH CX
MOV DI,SEG DAT2
MOV ES,DI
MOV BP,OFFSET DAT2
MOV AL,00H
MOV BL,WHIT
MOV AH,13H
MOV CX,01H
INT 10H
INC UPPER_COL
POP CX
LOOP NORTH_1
NORTH_1_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 UPPER_COL
POP CX
LOOP R_N1
R_N1: POP BX
MOV UPPER_COL,BL
POP BX
MOV UPPER_ROW,BL
RET
NORTH1 ENDP
;************************************* 灯颜色和位置设置1
SOUTH1 PROC NEAR
MOV BL,UNDER_ROW
PUSH BX
MOV BL,UNDER_COL
PUSH BX
SOUTH_1: MOV AH,02H
MOV DH,UNDER_ROW
MOV DL,UNDER_COL
MOV BH,00H
INT 10H
CMP CX,03H
JZ SOUTH_1_A1
CMP CX,02H
JZ SOUTH_1_A3
CMP CX,01H
JZ SOUTH_1_A2
SOUTH_1_A1: PUSH CX
MOV DI,SEG DAT2
MOV ES,DI
MOV BP,OFFSET DAT2
MOV AL,00H
MOV BL,RED
MOV AH,13H
MOV CX,01H
INT 10H
INC UNDER_COL
POP CX
LOOP SOUTH_1
SOUTH_1_A3: PUSH CX
MOV DI,SEG DAT2
MOV ES,DI
MOV BP,OFFSET DAT2
MOV AL,00H
MOV BL,WHIT
MOV AH,13H
MOV CX,01H
INT 10H
INC UNDER_COL
POP CX
LOOP SOUTH_1
SOUTH_1_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_S1
R_S1: POP BX
MOV UNDER_COL,BL
POP BX
MOV UNDER_ROW,BL
RET
SOUTH1 ENDP
;************************************* WEST 1
WEST1 PROC NEAR
MOV BL,LEFT_ROW
PUSH BX
MOV BL,LEFT_COL
PUSH BX
WEST_1: MOV AH,02H
MOV DH,LEFT_ROW
MOV DL,LEFT_COL
MOV BH,00H
INT 10H
CMP CX,03H
JZ WEST_1_A1
CMP CX,02H
JZ WEST_1_A3
CMP CX,01H
JZ WEST_1_A2
WEST_1_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_1
WEST_1_A3: PUSH CX
MOV DI,SEG DAT2
MOV ES,DI
MOV BP,OFFSET DAT2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -