字路口红绿灯模拟演示程序
汇编:十字路口红绿灯模拟演示程序
;端口各灯的设置: 1 红 1 黄 1 绿 0 0 2 红 2 黄 2 绿
data segment
portc1 db 24h,44h,04h,44h,04h,44h,04h ;六个灯可能
db 81h,82h,80h,82h,80h,82h,80h ;的状态数据
db 0ffh
data ends
code segment
;结束标志
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,28bh
mov al,90h
out dx,al
mov dx,28ah
re_on: mov bx,0
on: mov al,portc1[bx]
;设置 8255 为 C 口输出
cmp al,0ffh
jz
re_on
out dx,al
inc bx
mov
cx,20
test al,21h
jz
mov
de1
cx,2000
;点亮相应的灯
;参数赋初值
;是否有绿灯亮
;没有,短延时
;有,长延时
de1: mov di,9000
de0: dec di
;di 赋初值 5000
;减 1 计数
jnz de0
loop de1
push dx
mov ah,06h
mov dl,0ffh
int 21h
pop dx
jz on
;di 不为 0
;没有,转到 on
exit: mov ah,4ch
;返回 DOS
int 21h
code
end
ends
start