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

📄 liuxu.asm

📁 包含很多有用的程序
💻 ASM
字号:
crlf macro
  mov ah,02h
  mov dl,0dh
  int 21h
  mov ah,02h
  mov dl,0ah
  int 21h
  endm
cls macro al1,bh1,ch1,cl1,dh1,dl1
  mov ah,06h
  mov al,al1
  mov bh,bh1
  mov ch,ch1
  mov cl,cl1
  mov dh,dh1
  mov dl,dl1
  int 10h
  endm
setm macro a1,a2
  mov bh,0
  mov dh,a1
  mov dl,a2
  mov ah,02h
  int 10h
  endm
stack segment
  db 64 dup(?)
stack ends
data segment
   msg db 'press"c"key to cotinue(other key to exit)!','$'
   mus_freq dw 659,784,880,1319,1175,1047,988,1047
         dw 0,1047,988,880,784,880,659
         dw 659,784,880,1319,1175,1047,988,1047
         dw 0,1047,988,880,784,880
         dw 0,880,1047,988,880,784,880,659,880,784
         dw 880,1047,988,1047,988,880,988,1047,1047,1175
         dw 4 dup(1319),1175,1047,988,880,988,784
         dw 880,880,1047,988,784         
mus_time dw 40,40,91,91,3 dup(46),137
         dw 91,46,46,182,91,46,319
         dw 46,46,91,91,3 dup(46),228
         dw 91,46,46,182,182,364,46
         dw 137,5 dup(46),273,46,46
         dw 137,46,46,23,23,46,46,273,46,46
         dw 2 dup(4 dup(46),188) 
leng     dw $-mus_time
choose      db 1
save_si      dw 0
save_cx      dw 0
save_al      db 0
data ends
code segment
main proc far
   assume cs:code,ds:data,ss:stack
start:
 ;set up stack for return
    push ds
    sub ax,ax
    push ax
    call move1
    call move2
    call move3
    call move4
    call move5
    call move6
    crlf
    mov ah,09h
    lea dx,msg
    int 21h
    mov ah,01h
    int 21h
    cmp al,'c'
    je start
    mov ah,4ch
    int 21h
    main endp
;***************************************************
move1 proc near
start1:
    mov ax,data
    mov ds,ax
    mov al,'1'
    mov cl,79
    mov ch,0
a1:
    push ax
    push cx
    cls 0,1eh,0,0,24,79
    cls 0,0e4h,5,0,15,79
    pop cx
    pop ax
    mov ah,10
    mov bl,79
    sub bl,cl
    setm ah,bl
    cmp al,'0'
    je  t2
t1:
    mov dl,'U'
    mov ah,02h
    int 21h
    mov al,'0'
    jmp t3
t2:
    mov dl,'M'
    mov ah,02h
    int 21h
    mov al,'1'
t3:
    mov si,15000
b1:
    mov di,12000
c1:
    dec di
    jnz c1
    dec si
    jnz b1
    call music
    loop a1
    ret
 move1 endp
;****************************************************
move2 proc near
start2:
    mov ax,data
    mov ds,ax
    mov al,'1'
    mov cl,79
    mov ch,0
g1:
    push ax
    push cx
    cls 0,1eh,0,0,24,79
    cls 0,0e4h,5,0,15,79
    pop cx
    pop ax
    mov ah,10
    mov bl,0
    add bl,cl
    sub bl,1
    setm ah,bl
    cmp al,'0'
    je  k2
k1:
    mov dl,'U'
    mov ah,02h
    int 21h
    mov al,'0'
    jmp k3
k2:
    mov dl,'M'
    mov ah,02h
    int 21h
    mov al,'1'
k3:
    mov si,15000
m1:
    mov di,12000
n1:
    dec di
    jnz n1
    dec si
    jnz m1
    call music
    loop g1
    ret
 move2 endp
;******************************************
move3 proc near
start3:
    mov ax,data
    mov ds,ax
    mov al,'1'
    mov cl,79
    mov ch,0
a2:
    push ax
    push cx
    cls 0,1eh,0,0,24,79
    cls 0,0e4h,5,0,15,79
    pop cx
    pop ax
    mov ah,10
    mov bl,79
    sub bl,cl
    setm ah,bl
    cmp al,'0'
    je  r2
r1:
    mov dl,'U'
    mov ah,02h
    int 21h
    mov al,'0'
    jmp r3
r2:
    mov dl,'M'
    mov ah,02h
    int 21h
    mov al,'1'
r3:
    mov si,7500
b2:
    mov di,12000
c2:
    dec di
    jnz c2
    dec si
    jnz b2
    call music
    loop a2
    ret
 move3 endp
;*************************************************
move4 proc near
start4:
    mov ax,data
    mov ds,ax
    mov al,'1'
    mov cl,79
    mov ch,0
g2:
    push ax
    push cx
    cls 0,1eh,0,0,24,79 
    cls 0,0e4h,5,0,15,79
    pop cx
    pop ax
    mov ah,10
    mov bl,0
    add bl,cl
    sub bl,1
    setm ah,bl
    cmp al,'0'
    je  o2
o1:
    mov dl,'U'
    mov ah,02h
    int 21h
    mov al,'0'
    jmp o3
o2:
    mov dl,'M'
    mov ah,02h
    int 21h
    mov al,'1'
o3:
    mov si,7500
m2:
    mov di,12000
n2:
    dec di
    jnz n2
    dec si
    jnz m2
    call music
    loop g2
    ret
 move4 endp
;******************************************
move5 proc near
start5:
    mov ax,data
    mov ds,ax
    mov al,'1'
    mov cl,79
    mov ch,0
a3:
    push ax
    push cx
    cls 0,1eh,0,0,24,79
    cls 0,0e4h,5,0,15,79
    pop cx
    pop ax
    mov ah,10
    mov bl,79
    sub bl,cl
    setm ah,bl
    cmp al,'0'
    je  p2
p1:
    mov dl,'U'
    mov ah,02h
    int 21h
    mov al,'0'
    jmp p3
p2:
    mov dl,'M'
    mov ah,02h
    int 21h
    mov al,'1'
p3:
    mov si,3750
b3:
    mov di,12000
c3:
    dec di
    jnz c3
    dec si
    jnz b3
    call music
    loop a3
    ret
 move5 endp
;****************************************************
move6 proc near
start6:
    mov ax,data
    mov ds,ax
    mov al,'1'
    mov cl,79
    mov ch,0
g3:
    push ax
    push cx
    cls 0,1eh,0,0,24,79
    cls 0,0e4h,5,0,15,79
    pop cx
    pop ax
    mov ah,10
    mov bl,0
    add bl,cl
    sub bl,1
    setm ah,bl
    cmp al,'0'
    je  z2
z1:
    mov dl,'U'
    mov ah,02h
    int 21h
    mov al,'0'
    jmp z3
z2:
    mov dl,'M'
    mov ah,02h
    int 21h
    mov al,'1'
z3:
    mov si,3750
m3:
    mov di,12000
n3:
    dec di
    jnz n3
    dec si
    jnz m3
    call music
    loop g3
    ret
 move6 endp
;******************************************
music proc near
        push ax
        push bx
        push cx
        push dx
        push si
        push di
        mov ax,data
        mov ds,ax
        sti
        mov al,choose 
        cmp al,1
        je ring
        cmp al,2
        je delay_t
        cmp al,3
        je stop
ring:   
        mov choose,2  
        mov si,save_si
        mov di,mus_freq[si]
        cmp di,0
        jz delay_t
        mov al,0b6h
        out 43h,al
        mov dx,12h
        mov ax,348ch       
        div di
        out 42h,al
        mov al,ah
        out 42h,al
        in al,61h
        mov save_al,al
        or al,3
        out 61h,al
        mov cx,mus_time[si]
        mov save_cx,cx   
        jmp the_end 
delay_t:
        sub save_cx,8
        cmp save_cx,12
        ja the_end
        mov choose,3
        jmp the_end
stop:  
        mov choose,1
        mov al,save_al
        out 61h,al	
        add save_si,2
        mov bx,save_si  
        cmp bx,leng
        jb the_end
        mov save_si,0
the_end:
        cli     
        pop di
        pop si
        pop dx
        pop cx
        pop bx
        pop ax
        ret
music endp 

code ends
   end start

⌨️ 快捷键说明

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