📄 3.asm
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; 交通灯 ;;;
;;;PC7-PC5代表南北路口的红黄绿灯 ;;;
;;;PC2-PC0代表东西路口的红黄绿灯 ;;;
;;;且电路板上二极管是高电平亮 ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DATA SEGMENT
;IOPORT equ 0C400H-0288h ;ioport是TPC卡的IO地址
IO8255 equ 0C40BH ;io8253是8253控制地址
IO8255A equ 0C408H ;io8255A是8255 A口地址
IO8255C equ 0C40AH ;io8255C是8255 C口地址
DATA ENDS
STACK1 SEGMENT STACK
DB 100 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START: MOV BX,0
MOV DX,IO8255 ;8255初始化
MOV AL,10000000B ;C口为输出方式
OUT DX,AL ;写控制端
WORKSN:MOV DX,IO8255C
MOV AL,00100100B ;南绿灯亮,东红灯亮
OUT DX,AL ;送C口显示
CALL DLAY ;持续亮3s
MOV CX,4 ;黄灯亮灭次数控制
WORK1: MOV AL,01000100B ;南黄灯亮,东红灯亮
OUT DX,AL
CALL DLAY1
MOV AL,00000100B ;南黄灯灭,东红灯亮
OUT DX,AL
CALL DLAY1
LOOP WORK1
WORKEW:MOV AL,10000001B ;东绿灯亮,南红灯亮
OUT DX,AL ;送C口显示
CALL DLAY ;持续亮3s
MOV CX,4 ;黄灯亮灭次数控制
WORK2: MOV AL,10000010B ;东黄灯亮,南红灯亮
OUT DX,AL
CALL DLAY1
MOV AL,10000000B ;东黄灯灭,南红灯亮
OUT DX,AL
CALL DLAY1
LOOP WORK2
MOV DL,0FFH ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV AH,06H ; ;
INT 21H ; ;
JZ WORKSN ;看是否有s键按下,有的话结束 ;
JMP EN
DLAY PROC ;延时子程序 3s
PUSH CX
PUSH AX
MOV CX,0FFFFH
T1:MOV AX,0FFFFH
T2:DEC AX
JNZ T2
LOOP T1
POP AX
POP CX
RET
DLAY1 PROC ;延时子程序 0.3s
PUSH CX ;
PUSH AX ;
MOV CX,0A000H ;
T3:MOV AX,05000H;
T4:DEC AX ;
JNZ T4 ;
LOOP T3
POP AX
POP CX
RET
EN: MOV AH,4CH ;返回DOS
INT 21H
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -