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

📄 sound3.asm

📁 这是我在很多网站上辛苦搜集的所有有关计算机钢琴的程序以及大量报告
💻 ASM
字号:
;汇编程序 音乐演示 (2008-10-09 10:53:06) 
;标签:教育   分类:兴趣爱好 

;    用汇编语言打开电脑内置的喇叭,通过对发声的频率和时间的控制,来演示机器音乐,不同的歌;曲只要用不同的data就可以了,试验看看,看侃这首歌曲你听过没?
;
data    segment  
   freq      dw    196,220  
             dw    262,262,262,262,262,220,196  
             dw    262,262,262,262,294,262,220,262  
             dw    294,294,294,294,294,262,220  
             dw    294,294,294,294,330,294,330,392  
             dw    440,440,392,440,392,330  
             dw    294,294,330,294,262,220,196,220  
             dw    262,262,262,262,262,220  
             dw    262,196,220  
             dw    440,440,392,440,524,440  
             dw    392,330,294,262,220,196,220  
             dw    262,262,262,262,294,262  
             dw    262,330,392  
             dw    440,440,440,440,524,440  
             dw    392,392,392,440,392,330,294  
             dw    262,262,262,262,294  
             dw    330,330,294  
             dw    262,262,262,262,524,440  
             dw    392,392,392,440,392,330,392  
             dw    440,524,524,440,392  
             dw    392,330,392  
             dw    440,440,440,440,524,440  
             dw    392,392,392,440,392,330,294  
             dw    262,262,262,262,392  
             dw    330,330,294  
             dw    262,262,262,262,294,330  
             dw    392,392,330,392,330,392  
             dw    440  
             dw    9,9,196,660,294,294,262  
             dw    262,-1  
   
   time      dw    400,400  
             dw    400,200,400,400,800,400,400  
             dw    400,200,400,200,200,800,400,400  
             dw    400,200,400,400,800,400,400  
             dw    400,200,400,200,200,800,400,400  
             dw    400,800,400,800,400,400  
             dw    400,200,200,400,400,800,400,400  
             dw    400,200,400,400,800,800  
             dw    1600,800,800  
             dw    400,800,400,800,400,400  
             dw    400,400,400,400,800,400,400  
             dw    400,800,400,800,400,200  
             dw    2400,400,400  
             dw    400,800,400,800,400,400  
             dw    400,800,200,200,800,400,400  
             dw    400,800,400,800,800  
             dw    2400,400,400  
             dw    400,800,400,800,400,400  
             dw    400,800,200,200,800,400,400  
             dw    800,400,800,400,200  
             dw    2400,400,400  
             dw    400,800,400,800,400,400  
             dw    400,800,200,200,800,400,400  
             dw    400,800,400,800,800  
             dw    2400,400,400  
             dw    400,800,400,800,400,400  
             dw    400,800,400,800,400,400  
             dw    3200  
             dw    800,400,400,400,400,400,400  
             dw    4000   

infor db "press any key to exit...$"
data     ends
writes  macro a1
       lea dx,a1
       mov ah,09h
       int 21h
       endm   

code     segment   
        assume    cs:code,ds:data   
main    proc    far   

start: mov    ax,data   
       mov    ds,ax   
       mov    si,offset    freq   
       mov    di,offset    time   
       writes  infor
   l1: mov    cx,[si]   
       cmp    cx,-1   
       je    exit   
       mov    bx,[di]   
       call    gensound   
       add    si,2   
       add    di,2
       mov ah,0bh ;按任意键结束
       int  21h
       cmp  al,00h
       jnz  exit   
       jmp    l1   
 exit: mov    ah,4ch   
       int    21h   
 main     endp  
   
   gensound     proc    near  
                 push    dx  
                 mov    al,0b6h  
                 out    43h,al  
                 mov    dx,08h  
                 mov    ax,3208h  
                 div    cx  
                 out    42h,al      
                 mov    al,ah  
                 out    42h,al  
                 in    al,61h  
                 mov    ah,al  
                 or    al,3  
                 out    61h,al  
   l2:           push    dx  
                 push    ax  
                 mov    dx,8h  
                 mov    ax,0f05h  
   s1:           sub    ax,1  
                 sbb    dx,0  
                 jnz    s1  
                 pop    ax  
                 pop    dx  
                 dec    bx  
                 jnz    l2  
          mov    al,ah  
          out    61h,al  
          pop    dx  
          ret  
   gensound      endp  
   code        ends   
   end    start 

⌨️ 快捷键说明

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