⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 classdesign.asm

📁 舞台灯光效果的实现。其中包括十一种灯光效果。属于比较简易的舞台灯光设计
💻 ASM
字号:
.model small
.stack
.data

message db '11  kinds of results to show,and all on in turn,in circles',0dh,0ah
        db 'show0: All on,then all off',0dh,0ah
        db 'show1: L0->L1->L2->L3->L4-L7,only one on once time',0dh,0ah
        db 'show2: L7->L5->L3->L1',0dh,0ah
        db 'show3: L7L5L3L1->L6L4L2L0,all odd on ,then the others all',0dh,0ah
        db 'show4: L7L6->L5L4->L3L2->L1L0',0dh,0ah
        db 'show5: L4L3->L5L2->L6L1->L7L0',0dh,0ah
        db 'show6: L7L6L5L4->L3L2L1L0',0dh,0ah
        db 'show7: L7L6L5L4->L6L5L4L3->L5L4L3L2->L4L3L2L1->L3L2L1L0',0dh,0ah
        db 'show8: L7L4L3L2->L6L1->L5L0',0dh,0ah
        db 'show9: L7L6L5->L4L3L2->L2L1L0',0dh,0ah
        db 'show10:L7L6L5L4L3>L4L3L2L1L0',0dh,0ah
        db 'please press 0-9 or a  key to choose, any other key to stop',0dh,0ah,'$'
.code
.startup 
        call initial          ;初始化8255,8253
work:  mov ah,09
       mov dx,offset message
       int 21h          ;输出提示信息 
       
       mov ah,01
       int 21h          ;输入字符
       
       cmp al,'0'
       je  k0
       cmp al,'1'
       je  k1
       cmp al,'2'
       je  k2
       cmp al,'3'
       je  k3
       cmp al,'4'
       je  k4
       cmp al,'5'
       je  k5
       cmp al,'6'
       je  k6
       cmp al,'7'
       je  k7
       cmp al,'8'
       je  k8
       cmp al,'9'
       je  k9
       cmp al,'a'
       jne workend
k10:   call k10pro
       jmp  work
k9:    call k9pro
       jmp  work
k8:    call k8pro
       jmp  work
k7:    call k7pro
       jmp  work
k6:    call k6pro
       jmp  work
k5:    call k5pro
       jmp  work
k4:    call k4pro
       jmp  work
k3:    call k3pro
       jmp  work
k2:    call k2pro
       jmp  work
k1:    call k1pro
       jmp  work
k0:    call k0pro
       jmp  work
workend:         ;熄灭所有的灯
       mov dx,288h
       mov al,0
       out dx,al
.exit

initial  proc
       push dx
       push ax
       
       ;初始化 8255
       mov dx,28bh
       mov al,10001001b     ;89h,方式0,A口输出,C口输入
       out dx,al
       
       ;初始状态,所有灯亮
       mov dx,288h
       mov al,0ffh
       out dx,al
       
       ;初始化8253
       mov dx,283h
       mov al,00110110b     ;36h
       out dx,al
       
       mov dx,280h
       mov ax,1000          
       out dx,al
       mov al,ah
       out dx,al            ;计数器0,方式3,1000
       
       mov dx,283h
       mov al,76h
       out dx,al
       
       mov ax,1000
       mov dx,281h
       out dx,al
       mov al,ah
       out dx,al            ;计数器1,方式3,1000
       
       pop ax
       pop dx
       ret
initial  endp

k0pro  proc             ;全亮全灭循环
       push dx
       push ax
k0work:
       mov dx,288h
       mov al,0ffh
       out dx,al
       mov dx,28ah
       call timedelay           ;全亮0.5秒
       
       mov dx,288h
       mov al,0
       out dx,al
       call timedelay           ;全灭0.5秒
       
       mov ah,01h
       int 16h
       je  k0work
       
       pop ax
       pop dx
       ret
k0pro  endp
timedelay  proc
           push dx
           push bx
           push ax
           
           mov dx,28ah          ;读C口
           in al,dx
           mov bl,al            ;保存c口原来的值
           
loop1:      in al,dx
           cmp bl,al
           je loop1    
           
           pop ax
           pop bx
           pop dx
           ret
timedelay  endp
k1pro    proc               ;L0--L7轮流亮
         push dx
         push ax
         
         mov dx,288h
         mov al,1
k1work:  out dx,al
         call timedelay
         rol  al,1
         
         mov  ah,01h
         int 16h
         je k1work
         
         pop ax
         pop dx
         ret
k1pro    endp
k2pro    proc               ;L7,L5,L3,L1奇数轮流亮
         push dx
         push cx
         push ax
         
         mov cl,2
         mov dx,288h
         mov al,80h
k2work:  out dx,al
         call timedelay
         ror al,cl
         
         mov ah,01
         int 16h
         je k2work
         
         pop ax
         pop cx
         pop dx
         ret
k2pro    endp    
k3pro    proc               ;全奇全偶轮流亮
         push dx
         push ax
         
         mov dx,288h
         mov al,0aah
k3work:  out dx,al
         call timedelay
         ror  al,1
         
         mov  ah,01
         int  16h
         je   k3work
         
         pop  ax
         pop  dx
         ret
k3pro    endp
k4pro   proc                ;L7L6->L5L4->L3L2->L1L0轮流亮
        push dx
        push cx
        push ax
        
        mov cl,2
        mov dx,288h
        mov al,0c0h
k4work: out dx,al
        call timedelay
        ror al,cl
        
        mov ah,01
        int 16h
        je k4work
        
        pop ax
        pop cx
        pop dx
        ret
k4pro   endp       
k5pro  proc             ;L4L3->L5L2->L6L1->L7L0轮流亮
        push dx
        push ax
        
        mov dx,288h
k5work: mov al,18h
        out dx,al
        call timedelay
        
        mov al,24h
        out dx,al
        call timedelay
        
        mov al,42h
        out dx,al
        call timedelay
        
        mov al,81h
        out dx,al
        call timedelay
        
        mov ah,01
        int 16h
        je k5work
        
        pop ax
        pop dx
        ret
k5pro   endp

k6pro  proc             ;L7L6L5L4->L3L2L1L0轮流亮
       push dx
       push cx
       push ax
       
       mov cl,4
       mov dx,288h
       mov al,0f0h
k6work: out dx,al
        call timedelay
        ror al,cl
        
        mov ah,01h
        int  16h 
        je  k6work
        
        pop ax
        pop cx
        pop dx
        ret
k6pro  endp
k7pro  proc             ;L7L6L5L4->L6L5L4L3->L5L4L3L2->L4L3L2L1->L3L2L1L0轮流亮
       push dx
       push ax
     
       mov dx,288h
       mov al,0f0h
k7work: out dx,al
        call timedelay
        ror al,1
        
        mov ah,01h
        int  16h 
        je  k7work
        
        pop ax
        pop dx
        ret
k7pro  endp
k8pro  proc             ;按颜色轮流亮
       push dx
       push ax
       
       mov dx,288h
       
k8work: mov al,9ch
       out dx,al
       call timedelay     ;4红灯亮
       
       mov al,42h
       out dx,al
       call timedelay    ;两个黄灯亮
       
       mov al,21h
       out dx,al
       call timedelay    ;两个绿灯亮
       
       mov ah,01
       int 16h
       je k8work
       
       pop ax
       pop dx
       ret
k8pro  endp
k9pro  proc             ;红黄绿->红红红->红黄绿 轮流亮
       push dx
       push ax
       
       mov dx,288h       
k9work: mov al,0e0h
       out dx,al
       call timedelay
       
       mov al,1ch
       out dx,al
       call timedelay
       
       mov al,07h
       out dx,al
       call timedelay
       
       mov ah,01
       int 16h
       je k9work
       
       pop ax
       pop dx
       ret
k9pro  endp
k10pro proc         ;L7L6L5L4L3->L4L3L2L1L0轮流亮
       push dx
       push cx
       push ax
       
       mov  cl,3       
       mov dx,288h
       mov al,0f8h
k10work:  out dx,al
        call timedelay
        ror  al,cl
        
        mov ah,01
        int 16h
        je k10work
        
        pop ax
        pop cx
        pop dx
        ret
k10pro endp
     
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -