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

📄 03.asm

📁 这是我在学习汇编语言期间做的一个程序霓虹灯显示的程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
                mov  cl,[di]
                inc  di
                mov  char_cnt2,cx
                mov  pointer2,di
                mov  line_on2,dh
                mov  col_on2,dl
                mov  char,cx
                pop  di
                pop  dx
                pop  cx
                pop  bx                  
                pop  ax
                ret
 move_shape2    endp
;-----------------------------------------
 must_2      proc       near
                push ax
                push bx
                push cx
                push dx
                push di
                mov  ah,0fh
                int  10h
 exit41:     sub  cx,cx
             mov        col,2
             mov        col01,2
             mov        char0,2
             mov        char01,2
             mov        cx,char_cnt1
             mov        di,pointer1
             mov        dh,line_on1
             mov        dl,col_on1
             mov        char,cx
             jmp        plot_next1
 exit31:     sub  cx,cx
             mov        cx,char_cnt2
             mov        di,pointer2
             mov        dh,line_on2
             mov        dl,col_on2
             mov        char,cx
             jmp        plot_next1
 ;------------------------------------------
 exit61:     call       dly_qrtr
             mov        char0,2
             mov        char01,2
             mov        col01,2
             mov        col,2
             mov        dl,col_on2
             cmp        dl,38
             je         exit71
             cmp        dl,32
             je         exit71
             cmp        dl,26
             je         exit71
             cmp        dl,20
             je         exit71
             cmp        dl,14
             je         exit71
             cmp        dl,8
             je         exit71
             cmp        dl,2
             je         exit72
             call       dly_qrtr
             call       dly_qrtr
             call       dly_qrtr
             call       dly_qrtr
             call       erase1
             cmp        col0,26
             je         exit81
             add        col0,4
 exit81:     jmp        exit41

 exit71:     add        col_on1,2
             sub        col_on2,2
             cmp        col0,26
             je         exit81  
             add        col0,4
             jmp        exit41
 exit02:     jmp        exit61
 exit72:     jmp        exit21
 exit01:     mov  line2,dh
             mov  col2,dl
             add  di,4
             mov  pot2,di

             mov  dl,col01
             cmp  col0,dl
             je   exit02

             add  col01,4
             mov  col,4
             mov  char01,2 
             dec  char01
             jmp  exit410
             
 exit21:        pop  di
                pop  dx
                pop  cx
                pop  bx                  
                pop  ax                             
             ret
 exit410:    mov        dh,line1
             mov        di,pot1
             mov        dl,col1
             jmp        plot_next1
 exit310:    mov        dh,line2
             mov        di,pot2
             mov        dl,col2
             jmp        plot_next1
 exit03:     jmp  exit01
 ;----------------------------------------
 plot_next1: add  dh,[di+2]
             add  dl,[di+3]
             mov  ah,2
             int  10h
             mov  ah,8
             int  10h
             cmp  dl,3
             jb   exitx0
             cmp  dl,76
             jae  exitx0
             cmp  ah,0bh
             je   exitx
             cmp  ah,0dh
             je   exitx2
             cmp  ah,0ah
             je   exitx3
             cmp  ah,0eh
             je   exitx4
 exitx0:     mov  al,[di]
             mov  bl,[di+1]
             jmp  exitx1
 exitx:      mov  bl,0dh
             jmp  exitx1
 exitx2:     mov  bl,0ah
             jmp  exitx1
 exitx3:     mov  bl,0eh
             jmp  exitx1
 exitx4:     mov  bl,0ch
 exitx1:     push cx
             mov  cx,1
             mov  ah,09
             int  10h
             pop  cx
             dec  col
             je   exit51
             add  di,4
             jmp  plot_next1

 exit51:     cmp  char01,0
             je   exit03   ;-------------
             cmp  char01,1
             je   exit12
             cmp  char0,1
             je   exit03  ;--------------------
             mov  line1,dh
             mov  col1,dl
             add  di,4
             mov  pot1,di
             mov  col,2     
             dec  char0
             jmp  exit31

 exit12:     mov  line1,dh
             mov  col1,dl             
             add  di,4
             mov  pot1,di
             dec  char01
             mov  col,4
             jmp  exit310
must_2       endp
;--------------------------------------------
 erase       proc       near
             cmp        count0,4
             jne        exit6
             add        col_on1,2
             jmp        exit
 exit6:      cmp        count0,3
             jne        exit7
             sub        col_on1,2
             jmp        exit
 exit7:      cmp        count0,2
             jne        exit8
             inc        line_on1
             jmp        exit
 exit8:      cmp        count0,1
             jne        exit
             dec        line_on1
 exit:       mov        dh,line_on1
             mov        dl,col_on1
             mov        cx,char_cnt1
             mov        di,pointer1
             ret
 erase       endp
;-----------------------------------------
 erase1       proc       near
            sub  cx,cx
            mov        cx,char_cnt1
            mov        di,pointer1
            mov        dh,line_on1
            mov        dl,col_on1
            mov        char,cx
            jmp        erase_next1

exit62:     sub  cx,cx
            mov        cx,char_cnt2
            mov        di,pointer2
            mov        dh,line_on2
            mov        dl,col_on2
            mov        char,cx
            jmp        erase_next1

 exit011:    mov  line2,dh
             mov  col2,dl
             add  di,4
             mov  pot2,di

             mov  dl,col01
             cmp  col0,dl
             je   exit021

             add  col01,4
             mov  col,4      
             mov  char01,2 
             dec  char01 
             jmp  exit4101                 

 exit4101:   mov        dh,line1
             mov        di,pot1
             mov        dl,col1
             jmp        erase_next1
 exit3101:   mov        dh,line2
             mov        di,pot2
             mov        dl,col2
             jmp        erase_next1
 exit012:    jmp  exit011
 exit021:    jmp  left
            
 erase_next1:
             add        dh,[di+2]
             add        dl,[di+3]
             mov        ah,2
             int        10h
             mov        al,'*'
             mov        bl,0
             push       cx
             mov        cx,1
             mov        ah,9
             int        10h
             pop        cx
  ;-------------------------------------
             dec        col
             je         exit0
             add        di,4
             jmp        erase_next1
 exit0:      cmp  char01,0
             je   exit012  ;-------------
             cmp  char01,1
             je   exit121
             cmp  char0,1
             je   exit012  ;--------------------
             mov  line1,dh
             mov  col1,dl
             add  di,4
             mov  pot1,di
             mov  col,2     
             dec  char0
             jmp  exit62
 exit121:    mov  line1,dh
             mov  col1,dl
             add  di,4
             mov  pot1,di
             dec  char01
             mov  col,4
             jmp  exit3101
 left:       add        col_on1,2
             sub        col_on2,2
             ret
 erase1       endp
 ;------------------------------------------
 dly_qrtr    proc       near
             push       cx
             push       dx
             mov        dx,25
 dll:        mov        cx,65530
 dl2:        loop       dl2
             dec        dx
             jnz        dll
             pop        dx
             pop        cx
             ret
 dly_qrtr    endp
 ;---------------------------------------
 code_seg    ends
             end    main
 ;---------------------------------

⌨️ 快捷键说明

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