📄 trafficlight.asm
字号:
MOV AL,0
REPE8: CALL HHH1
CMP CX,320
JNZ REPE8
INC DX
CMP DL,78
JNZ REPE7
RET
XIAO4 ENDP
SOUND PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DI
MOV AL,0B6H
OUT 43H,AL
MOV DX,12H
MOV AX,3280H
DIV DI
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
IN AL,61H
MOV AH,AL
OR AL,03H
OUT 61H,AL
DELAY1:MOV ECX,0AFFFFFH
DELAY2:LOOPD DELAY2
DEC BX
JNZ DELAY1
MOV AL,AH
OUT 61H,AL
POP DI
POP DX
POP CX
POP BX
POP AX
RET
SOUND ENDP
T_1 PROC NEAR
MOV BP,SEG STR1
MOV ES,BP
MOV BP,OFFSET STR1
MOV CX,STR2-STR1
MOV DX,1
MOV BL,0EH
MOV AL,1
MOV AH,13H
INT 10H
MOV BP,OFFSET STR2
MOV CX,STR3-STR2
MOV DH,24
MOV DL,8
MOV BL,0EH
MOV AL,1
MOV AH,13H
INT 10H
RET
T_1 ENDP
T_2 PROC NEAR
MOV BP,SEG STR1
MOV ES,BP
MOV BP,OFFSET STR3
MOV CX,STR4-STR3
MOV DH,24
MOV DL,8
MOV BL,0EH
MOV AL,1
MOV AH,13H
INT 10H
RET
T_2 ENDP
T_3 PROC NEAR0
MOV BX,0
INT 10H
MOV DX,0
M0: MOV CX,0
M2: MOV AH,0CH
MOV AL,0
INT 10H
CMP CX,319D
JNE M1
INC DX
CMP DX,200D
JE M3
JMP M0
M1: INC CX
JMP M2
M3: MOV BP,SEG STR5
MOV ES,BP
MOV BP,OFFSET STR5
MOV CX,STR6-STR5
MOV DX,2308
MOV BL,0EH
MOV AL,1
MOV AH,13H
INT 10H
MOV BP,OFFSET STR6
MOV CX,STR7-STR6
MOV DX,5376
MOV BL,0EH
MOV AL,1
MOV AH,13H
INT 10H
MOV BP,OFFSET STR7
MOV CX,LEN_STR7
MOV DX,5641
MOV BL,0EH
MOV AL,1
MOV AH,13H
INT 10H
RET
T_3 ENDP
DAI2 PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
MOV AH,0CH
MOV DX,LINE9
MOV CX,CORLUM5
MOV SI,OFFSET CAR3_8X16DOT
MOV COUNT1,8
REP57:MOV COUNT2,2
REP58:MOV COUNT3,8
REP59:ROL BYTE PTR [SI],1
MOV AL,0
JNC NEX11
MOV AL,9
NEX11:PUSH AX
PUSH CX
INT 10H
POP CX
POP AX
INC CX
DEC COUNT3
JNZ REP59
INC SI
DEC COUNT2
JNZ REP58
INC DX
MOV CX,CORLUM5
DEC COUNT1
JNZ REP57
POP SI
POP DX
POP CX
POP BX
POP AX
RET
DAI2 ENDP
XIAN01 PROC NEAR
MOV BX,60
CALL XIAN1
ADD BX,30
CALL XIAN1
RET
XIAN01 ENDP
XIAN02 PROC NEAR
MOV BX,220
CALL XIAN1
ADD BX,30
CALL XIAN1
ADD BX,30
CALL XIAN1
ADD BX,30
CALL XIAN1
RET
XIAN02 ENDP
XIAN03 PROC NEAR
MOV BX,0
CALL XIAN2
ADD BX,25
CALL XIAN2
ADD BX,25
CALL XIAN2
MOV BX,130
CALL XIAN2
ADD BX,25
CALL XIAN2
ADD BX,25
CALL XIAN2
ADD BX,25
CALL XIAN2
RET
XIAN03 ENDP
XIAN1 PROC NEAR
MOV AH,0CH
MOV DX,96
MOV CX,BX
MOV SI,OFFSET XIAN1_8X16DOT
MOV COUNT1,8
REP60:MOV COUNT2,2
REP61:MOV COUNT3,8
REP62:ROL BYTE PTR [SI],1
MOV AL,0
JNC NEX12
MOV AL,15
NEX12:PUSH AX
PUSH CX
INT 10H
POP CX
POP AX
INC CX
DEC COUNT3
JNZ REP62
INC SI
DEC COUNT2
JNZ REP61
INC DX
MOV CX,BX
DEC COUNT1
JNZ REP60
RET
XIAN1 ENDP
XIAN2 PROC NEAR
MOV AH,0CH
MOV DX,BX
MOV CX,158
MOV SI,OFFSET XIAN2_16X8DOT
MOV COUNT1,16
REP63:MOV COUNT2,1
REP64:MOV COUNT3,8
REP65:ROL BYTE PTR [SI],1
MOV AL,0
JNC NEX13
MOV AL,15
NEX13:PUSH AX
PUSH CX
INT 10H
POP CX
POP AX
INC CX
DEC COUNT3
JNZ REP65
INC SI
DEC COUNT2
JNZ REP64
INC DX
MOV CX,158
DEC COUNT1
JNZ REP63
RET
XIAN2 ENDP
TIMER PROC NEAR
CLI
PUSH DS
PUSH AX
MOV AX,DATA
MOV DS,AX
INC COUNT_TIME
MOV AL,20H
OUT 20H,AL
TIMER1:STI
POP AX
POP DS
IRET
TIMER ENDP
A1 PROC NEAR
PUSH DX
MOV DX,208H
IN AL,DX
POP DX
AND AL,0F0H
CMP AL,0F0H
RET
A1 ENDP
B1 PROC NEAR
PUSH AX
PUSH CX
INT 10H
POP CX
POP AX
INC CX
DEC COUNT3
RET
B1 ENDP
C1 PROC NEAR
MOV AH,0DH
INT 10H
MOV AH,0CH
PUSH CX
DEC CX
INT 10H
POP CX
INC DX
DEC COUNT3
RET
C1 ENDP
D1 PROC NEAR
PUSH DX
MOV DX,208H
IN AL,DX
MOV AH,AL
POP DX
AND AL,0F0H
CMP AL,0F0H
RET
D1 ENDP
E1 PROC NEAR
MOV AL,AH
AND AL,0FH
CMP AL,0FH
RET
E1 ENDP
F1 PROC NEAR
MOV AH,0DH
INT 10H
MOV AH,0CH
PUSH DX
PUSH CX
MOV ECX,0000FFFFH
DDD3: LOOPD DDD3
POP CX
INC DX
INT 10H
POP DX
PUSH CX
MOV ECX,0000FFFFH
DDD4: LOOPD DDD4
POP CX
INC CX
DEC COUNT3
RET
F1 ENDP
HHH1 PROC NEAR
PUSH AX
INT 10H
POP AX
INC CX
RET
HHH1 ENDP
NN1 PROC NEAR
MOV AH,0DH
INT 10H
MOV AH,0CH
PUSH DX
PUSH CX
MOV ECX,0000FFFFH
DDD5: LOOPD DDD5
POP CX
DEC DX
INT 10H
POP DX
PUSH CX
MOV ECX,0000FFFFH
DDD6: LOOPD DDD6
POP CX
INC CX
DEC COUNT3
RET
NN1 ENDP
WRITE1 PROC NEAR
LEA SI,MS
MOV AL,[SI]
ADD AL,1
DAA
MOV [SI],AL
MOV BL,AL
AND AL,0F0H
ROR AL,4
ADD AL,30H
DAA
LEA SI,AMS
MOV [SI],AL
MOV AL,BL
AND AL,0FH
ADD AL,30H
DAA
INC SI
MOV [SI],AL
MOV BP,SEG AMS
MOV ES,BP
MOV BP,OFFSET AMS
MOV CX,2
MOV DH,20
MOV DL,23
MOV BL,0EH
MOV AL,1
MOV AH,13H
INT 10H
RET
WRITE1 ENDP
WRITE2 PROC NEAR
LEA SI,MN
MOV AL,[SI]
ADD AL,1
DAA
MOV [SI],AL
MOV BL,AL
AND AL,0F0H
ROR AL,4
ADD AL,30H
DAA
LEA SI,AMN
MOV [SI],AL
MOV AL,BL
AND AL,0FH
ADD AL,30H
DAA
INC SI
MOV [SI],AL
MOV BP,SEG AMN
MOV ES,BP
MOV BP,OFFSET AMN
MOV CX,2
MOV DH,5
MOV DL,16
MOV BL,0EH
MOV AL,1
MOV AH,13H
INT 10H
RET
WRITE2 ENDP
WRITE3 PROC NEAR
LEA SI,NW
MOV AL,[SI]
ADD AL,1
DAA
MOV [SI],AL
MOV BL,AL
AND AL,0F0H
ROR AL,4
ADD AL,30H
DAA
LEA SI,ANW
MOV [SI],AL
MOV AL,BL
AND AL,0FH
ADD AL,30H
DAA
INC SI
MOV [SI],AL
MOV BP,SEG ANW
MOV ES,BP
MOV BP,OFFSET ANW
MOV CX,2
MOV DH,14
MOV DL,5
MOV BL,0EH
MOV AL,1
MOV AH,13H
INT 10H
RET
WRITE3 ENDP
GR1 PROC NEAR
PUSH DX
PUSH CX
PUSH AX
PUSH SI
STI
MOV COUNT_TIME,0D
CALL XIAO1
CALL XIAO2
CALL XIAO3
CALL XIAO4
CALL MIE1
CALL MIE2
CALL MIE3
CALL MIE4
CALL MIE5
CALL MIE6
Z_D5:CALL DENG3
CALL DENG4
CALL CARGANDOWN2
CALL WRITE1
CMP COUNT_TIME,180D
JL Z_D5
CLI
CALL MIE3
CALL MIE4
POP SI
POP AX
POP CX
POP DX
JMP JX
RET
GR1 ENDP
GR2 PROC NEAR
PUSH DX
PUSH CX
PUSH AX
PUSH SI
STI
MOV COUNT_TIME,0D
CALL XIAO1
CALL XIAO2
CALL XIAO3
CALL XIAO4
CALL MIE1
CALL MIE2
CALL MIE3
CALL MIE4
CALL MIE5
CALL MIE6
Z_D6: CALL DENG1
CALL DENG6
CALL CARZHIXIAN
CALL WRITE3
CMP COUNT_TIME,180D
JL Z_D6
CLI
CALL MIE1
CALL MIE6
POP SI
POP AX
POP CX
POP DX
JMP JX
RET
GR2 ENDP
CAR01 PROC NEAR
CALL A1
MOV AH,0CH
MOV DX,110
MOV CX,120
MOV SI,OFFSET CAR1_8X16DOT
MOV COUNT1,8
REP221:MOV COUNT2,2
REP231:MOV COUNT3,8
REP241:ROL BYTE PTR [SI],1
MOV AL,0
JNC NEX51
MOV AL,1
NEX51: CALL B1
JNZ REP241
INC SI
DEC COUNT2
JNZ REP231
INC DX
MOV CX,120
DEC COUNT1
JNZ REP221
RET
CAR01 ENDP
CAR02 PROC NEAR
CALL D1
MOV AH,0CH
MOV DX,100
MOV CX,120
MOV SI,OFFSET CAR3_8X16DOT
MOV COUNT1,8
REP282:MOV COUNT2,2
REP292:MOV COUNT3,8
REP302:ROL BYTE PTR [SI],1
MOV AL,0
JNC NEX62
MOV AL,14
NEX62: PUSH AX
PUSH CX
INT 10H
POP CX
POP AX
INC CX
DEC COUNT3
JNZ REP302
INC SI
DEC COUNT2
JNZ REP292
INC DX
MOV CX,120
DEC COUNT1
JNZ REP282
RET
CAR02 ENDP
BROKEN PROC NEAR
KK2:
CALL CAR01
CALL CAR02
CALL MIE2
CALL MIE3
CALL MIE6
CALL DENG1
CALL DENG4
MOV AH,1
INT 16H
MOV AH,0
INT 16H
CMP AL,08H
JNE KK2
JMP JX
RET
BROKEN ENDP
MAIN ENDP
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -