运行图如下:

代码如下:
DATA SEGMENT
IO8255A EQU 0F0H ;8255的A口地址
IO8255B EQU 0F2H ;8255的B口地址
IO8255C EQU 0F4H ;8255的B口地址
IO8255CON EQU 0F6H ;8255的控制寄存器地址
IO8253_0 EQU 0E8H ;8253的0通道
IO8253_1 EQU 0EAH ;8253的0通道
IO8253_2 EQU 0ECH ;8253的0通道
IO8253CON EQU 0EEH ;8253的控制寄存器
DATA ENDS
STACK1 SEGMENT
STA DW 50 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK1
MAIN PROC FAR
START: PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV DX,IO8253CON
MOV AL,00110111B ;8253,通道0初始化, 16位读写,方式三,BCD计数
OUT DX,AL
MOV DX,IO8253_0
MOV AL,00H
OUT DX,AL
MOV AL,50H
OUT DX,AL
MOV DX,IO8253CON
MOV AL,01110111B ;8253,通道1初始化
OUT DX,AL
MOV DX,IO8253_1
MOV AL,13H
OUT DX,AL
MOV AL,00H
OUT DX,AL
MOV DX,IO8255CON
MOV AL,8BH ;8255控制字,8255初始化,A口输出,B口输入,C低输入 ,方式0
OUT DX,AL
S: MOV DX,IO8255B ;读B口开关状态
IN AL,DX
MOV CX,0020H
S0: CMP AL,0
JNZ S1
MOV DX,IO8255A
MOV AL,11000000B
OUT DX,AL
S1: CMP AL,01H
JNZ S2
MOV DX,IO8255C
IN AL,DX
TEST AL,01H ;检测c口状态
MOV DX,IO8255A
JNZ LEFT
MOV AL,11000000B
OUT DX,AL
JMP S
LEFT: MOV AL,11010101B ;B输出六盏灯状态:闪,灭,闪,灭,闪,灭
OUT DX,AL
JMP S
S2: CMP AL,02H
JNZ S3
MOV DX,IO8255C
IN AL,DX
TEST AL,01H ;检测c口状态
MOV DX,IO8255A
JNZ RIGHT
MOV AL,11000000B
OUT DX,AL
JMP S
RIGHT: MOV AL,11101010B ;六盏灯状态:灭,闪,灭,闪,灭,闪
OUT DX,AL
JMP S
S3: CMP AL, 04H
JNZ S4
MOV DX,IO8255C
IN AL,DX
TEST AL,02H ;检测c口状态
MOV DX,IO8255A
JNZ HURRY
MOV AL,11111111B
OUT DX,AL
JMP S
HURRY: MOV AL,11000000B ;六盏灯状态:闪,闪,闪,闪,闪,闪
OUT DX,AL
JMP S
S4: CMP AL,08H
JNZ S5
MOV DX,IO8255A
BREAK: MOV AL,11110000B ;六盏灯状态:灭,灭,灭,灭,亮,亮
OUT DX,AL
CALL DELAY0
JMP S
S5: CMP AL,09H
JNZ S6
MOV DX,IO8255C
IN AL,DX
TEST AL,01H ;检测c口状态
MOV DX,IO8255A
JNZ LEFTBREAK
MOV AL,11100000B
OUT DX,AL
JMP S
LEFTBREAK: MOV AL,11110101B ;六盏灯状态:闪,灭,闪,灭,闪,亮
OUT DX,AL
JMP S
S6: CMP AL,0AH
JNZ S7
MOV DX,IO8255C
IN AL,DX
TEST AL,01H ;检测c口状态
MOV DX,IO8255A
MOV AL,11010000B
OUT DX,AL
JMP S
RIGHTBREAK: MOV AL,11111010B ;六盏灯状态:灭,闪,灭,闪,亮,闪
OUT DX,AL
JMP S
S7: CMP AL,0CH
JNZ S8
MOV DX,IO8255C
IN AL,DX
TEST AL,02H ;检测c口状态
MOV DX,IO8255A
JNZ HURRYBREAK
MOV AL,11110000B
OUT DX,AL
JMP S
HURRYBREAK: MOV AL,11111111B ;六盏灯状态:闪,闪,闪,闪,亮,亮
OUT DX,AL
JMP S
S8: CMP AL,0DH
JNZ S9
MOV DX,IO8255C
IN AL,DX
TEST AL,02H ;检测c口状态
MOV DX,IO8255A
JNZ HURRYLEFTBREAK
MOV AL,11100000B
OUT DX,AL
JMP S
HURRYLEFTBREAK: MOV AL,11111111B ;六盏灯状态:闪,闪,闪,闪,闪,亮
OUT DX,AL
JMP S
S9: CMP AL,0EH
JNZ S10
MOV DX,IO8255C
IN AL,DX
TEST AL,02H ;检测c口状态
MOV DX,IO8255A
JNZ HURRYRIGHTBREAK
MOV AL,11010000B
OUT DX,AL
JMP S
HURRYRIGHTBREAK: MOV AL,11111111B ;六盏灯状态:闪,闪,闪,闪,亮,闪
OUT DX,AL
JMP S
S10: CMP AL,10H
JNZ S11
STOP: MOV DX,IO8255C
IN AL,DX
TEST AL,02H ;检测c口状态
JNZ QQ
MOV DX,IO8255A
MOV AL,11111111B ;六盏灯状态:灭,灭,闪,闪,闪,闪,,以30HZ频率闪烁
OUT DX,AL
JMP S
QQ: MOV DX,IO8255A
MOV AL,11000000B
OUT DX,AL
JMP S
S11: JMP S
RET
MAIN ENDP
DELAY PROC NEAR ;延时程序
PUSH CX
MOV CX,000FH
S12: LOOP S12
POP CX
RET
DELAY ENDP
DELAY0 PROC NEAR
PUSH CX
PUSH AX
MOV CX,0400H
S13: CALL DELAY
LOOP S13
POP AX
POP CX
RET
DELAY0 ENDP
CODE ENDS
END
不知道哪错了,开关没有用