📄 qichexinhaodengkongzhi.txt
字号:
DATA SEGMENT
DB55 EQU 319H
DC55 EQU 31AH
CTL EQU 31BH
CRT DB 'START',0DH,0AH,'$'
ERR DB 'ERROR',0DH,0AH,'$'
DATA ENDS
STACK SEGMENT STACK
STA DW 50 DUP(?)
STACK ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET CRT ;显示“START”
MOV AH,09H
INT 21H
L0: MOV DX,CTL ;8255控制口
MOV AL,82H ;工作于方式0,B口输入,C口输出
OUT DX,AL
MOV DX,DB55
IN AL,DX
CMP AL,83H ;若开关为停止,返回DOS
JNZ L1
MOV AX,4C00H
INT 21H
L1: CMP AL,07H ;若为左转,将灯的状态值赋给BX,进入
JNZ L2 ;显示子程序
MOV BL,2AH
MOV BH,3FH
CALL LL1
JMP L0
L2: CMP AL,0BH ;若为右转,将灯的状态值赋给BX,进入
JNZ L3 ;显示子程序
MOV BL,15H
MOV BH,3FH
CALL LL1
JMP L0
L3: CMP AL,13H
JNZ L4
MOV BL,00H
MOV BH,3FH
CALL LL1
JMP L0
L4: CMP AL,23H
JNZ L5
MOV BL,0FH
MOV BH,0FH
CALL LL1
JMP L0
L5: CMP AL,27H
JNZ L6
MOV BL,0AH
MOV BH,1FH
CALL LL1
JMP L0
L6: CMP AL,2BH
JNZ L7
MOV BL,05H
MOV BH,2FH
CALL LL1
JMP L0
L7: CMP AL,33H
JNZ L8
MOV BL,00H
MOV BH,0FH
CALL LL1
JMP L0
L8: CMP AL,37H
JNZ L9
MOV BL,00H
MOV BH,3DH
CALL LL1
JMP L0
L9: CMP AL,3BH
JNZ L10
MOV BL,00H
MOV BH,3EH
CALL LL1
JMP L0
L10: CMP AL,43H
JNZ L11
MOV BL,03H
MOV BH,3FH
CALL LL1
JMP L0
L11: MOV DX,OFFSET ERR ;若状态均不符合,则为违规
MOV AH,09H ;操作,输出错误信息
INT 21H
JMP L0
RET
MAIN ENDP
LL1 PROC NEAR
PUSH AX
PUSH CX
PUSH DX
MOV CX,04H
MOV DX,DC55
LOP1: MOV AL,BL
OUT DX,AL
CALL DELAY2 ;调用延时子程序
MOV AL,BH
OUT DX,AL
CALL DELAY2
LOOP LOP1 ;循环5次
POP DX
POP CX
POP AX
RET
LL1 ENDP
DELAY1 PROC NEAR
PUSH CX
MOV CX,0FFFFH
CCC: LOOP CCC
POP CX
RET
DELAY1 ENDP
DELAY2 PROC NEAR
PUSH CX
MOV CX,0100H
UUU: CALL DELAY1
LOP UUU
POP CX
RET
DELAY2 ENDP
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -