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

📄 27_f.asm

📁 多种汇编语言程序设计案例
💻 ASM
📖 第 1 页 / 共 2 页
字号:
                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
             dec        dl
             cmp        char1,dl
             je         exit71
             call       erase1 
             cmp        col0,26
             je         exit41
             add        col0,2
             jmp        exit41
       ;----------------------------
 exit71:     cmp        count1,1
             je         exit93
             cmp        line_on1,4
             jne        exit91
             cmp        col0,26
             jne        exit92
 exit91:     sub        col0,2
             je         exit82
             inc        line_on1
             inc        line_on2
             sub        col_on1,2
             add        col_on2,2
             call       erase1
             mov        count1,2
             jmp        exit41
 exit82:     cmp        count_cx,1
             je         exit22
             jmp        exit81
 exit92:     mov        al,26
             sub        al,col0
             mov        count2,al
             add        count2,2
             mov        dl,col0
             mov        col00,dl
 exit93:     sub        count2,2
             je         exit91
             inc        line_on1
             inc        line_on2
             sub        col_on1,2
             add        col_on2,2
             sub        col0,2
             call       erase1             
             mov        dl,col00
             mov        col0,dl
             dec        count1
             cmp        count1,1
             je         exit94
             mov        count1,1
 exit94:     jmp        exit41 
 exit22:     jmp        exit21
 exit81:     add        char1,2
             sub        char2,2
             cmp        char1,39
             je         exit21
             mov        line_on1,4
             mov        line_on2,4
             mov        dl,char1
             inc        dl
             mov        col_on1,dl
             mov        dl,char2
             dec        dl
             mov        col_on2,dl
             mov        col0,2
             mov        count1,2
             jmp        exit41
 exit01:     mov  line2,dh
             mov  col2,dl
             add  di,4
             mov  pot2,di
             mov  dl,col01
             cmp  col0,dl
             je   exit02
             add  col01,2
             mov  col,2
             mov  char01,2 
             dec  char01 
             jmp  exit410
 exit02:     jmp        exit61
 exit21:        pop  di
                pop  dx
                pop  cx
                pop  bx                  
                pop  ax                             
             ret
 exit03:     jmp  exit01
 exit410:    mov        dh,line1
             mov        di,pot1
             mov        dl,col1
             jmp        plot_next1
 exit310:    mov        dh,line2
             mov        di,pot2
             mov        dl,col2
 ;----------------------------------------
 plot_next1:
             add  dh,[di+2]
             add  dl,[di+3]
             mov  ah,2
             int  10h
             mov  al,[di]
             mov  bl,[di+1]
             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
             mov  col,2
             dec  char01
             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,2
             mov  col,2
             mov  char01,2 
             dec  char01 
             jmp  exit4101
 exit021:    jmp        left
 exit012:    jmp  exit011

 exit4101:   mov        dh,line1
             mov        di,pot1
             mov        dl,col1
             jmp        erase_next1
 exit3101:   mov        dh,line2
             mov        di,pot2
             mov        dl,col2
 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   exit011  ;-------------
             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
             mov  col,2
             dec  char01
             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 + -