📄 light.txt
字号:
my8255_a equ 9860h
my8255_b equ 9861h
my8255_c equ 9862h
my8255_mode equ 9863h
data segment
la db ?
lb db ?
mess1 db '流水灯显示',0ah,0dh,'$'
mess2 db '按除1 、2、3、4以外的任意键程序停止运行',0ah,0dh,'$'
mess3 db '1.双向单个显示灯',0ah,0dh,'$'
mess4 db '2.单向单个显示灯',0ah,0dh,'$'
mess5 db '3.双向连续显示灯',0ah,0dh,'$'
mess6 db '4.单向连续显示灯',0ah,0dh,'$'
mess7 db '请输入选项:',0ah,0dh,'$'
mess8 db '输入有误,请重新输入',0AH,0DH,'$'
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov ah,09h
mov dx,offset mess1
int 21h
mov ah,09h
mov dx,offset mess2
int 21h
mov ah,09h
mov dx,offset mess3
int 21h
mov ah,09h
mov dx,offset mess4
int 21h
mov ah,09h
mov dx,offset mess5
int 21h
mov ah,09h
mov dx,offset mess6
int 21h
mov ah,09h
mov dx,offset mess7
int 21h
pp: mov ah,01h
int 21h
cmp al,31h
jz p1
cmp al,32h
jz p2
cmp al,33h
jz p3
cmp al,34h
jz p4
mov ah,09h
mov dx,offset mess8
int 21h
JMP PP
p1: call procedure1
p2: call procedure2
p3: call procedure3
p4: call procedure4
;*********延迟********
dally: push cx
mov cx,3ffh
d1: movax,0ffffh
d2: dec ax
jne d2
loop d1
pop cx
ret
;********跳出运行*******
Break proc near
mov ah,.6h
mov dl,0ffh
int 21h
je return
mov ax,4c00h
int 21h
return: ret
break endp
;*****双向单个显示灯********
procedure1 proc near
mov dx,my8255_mode
mov al,80h
out dx,al
mov dx,my8255_a
mov al,7fh
out dx,al
mov la,al
mov dx,my8255_b
mov al,0feh
out dx,al
mov lb,al
call dally
a1: mov cx,08h
mov al,la
ror al,1
mov la,al
mov dx,my8255_a
out dx,al
mov al,lb
rol al,1
mov lb,al
mov dx,my8255_b
out dx,al
call dally
call break
loop a1
procedure1 endp
;*** ***单向单个显示灯******
procedure2 proc near
mov dx,my8255_mode
mov al,80h
out dx,al
e11: mov la,0feh
mov lb,0feh
mov cx,08h
e1: mov al,la
ror al,1
mov la,al
mov dx,my8255_a
out dx,al
mov al,lb
ror al,1
mov lb,al
mov dx,my8255_b
out dx,al
call dally
call break
loop e1
jmp e11
procedure2 endp
;**** **双向连续显示灯*****
procedure3 proc near
mov dx,my8255_mode
mov al,80h
out dx,al
b11: mov la,0ffh
mov lb,0ffh
mov cx,08h
b1: mov al,la
shr al,1
mov la,al
mov dx,my8255_a
out dx,al
mov al,lb
shl al,1
mov lb,al
mov dx,my8255_b
out dx,al
call dally
call break
loop b1
b22: mov la,0
mov lb,0
mov bl,80h
mov bh,01h
mov cx,08h
b2: mov al,la
rol bl,1
or al,bl
mov la,al
mov dx,my8255_a
out dx,al
mov al,lb
ror bh,1
or al,bh
mov lb,al
mov dx,my8255_b
out dx,al
call dally
call break
loop b2
jmp b11
procedure3 endp
;*****单向连续显示灯*****
procedure4 proc near
mov dx,my8255_mode
mov al,80h
out dx,al
c11: mov la,7fh
mov cx,08h
c1: mov al,la
shr al,1
mov la,al
mov dx,my8255_a
out dx,al
call dally
call break
loop c1
c22: mov lb,7fh
mov cx,08h
c2: mov a;,lb
shr al,1
mov lb,al
mov dx,my8255_b
out dx,al
call dally
call break
loop c2
c33: mov bl,80h
mov cx,08h
c3: mov al,lb
rol bl,1
or al,bl
mov lb al
mov dx,my8255_b
out dx,al
call dally
call break
loop c3
c44: mov bl,80h
mov cx,08h
c4: mov al,la
rol bl,1
or al,bl
mov la,al
mov dx my8255_a
out dx,al
call dally
call break
loop c4
jmp c11
procedure4 endp
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -