prog8_10.asm

来自「汇编语言-王爽 源代码 加 卜艳萍版源代码」· 汇编 代码 · 共 72 行

ASM
72
字号
stack  segment stack
       dw  100 dup(?)
stack  ends
data  segment
string  db  0dh,0ah,'this is a music program!$'
mdata1  dw  330,392,330,294,330,392,330,294,330
        dw  330,292,330,294,262,294,330,392,294
mdata2  dw  50,50,50,25,25,50,25,25,100
        dw  50,50,25,25,50,50,25,25,100
        dw  50,25,25,50,25,25,50,25,25,100
data  ends
code  segment
      assume  cs:code,ds:data,ss:stack
main  proc far
      mov  ax,data
      mov  ds,ax
      lea  dx,string
      mov  ah,9
      int  21h
      call  mplay
      mov  ah,4ch
      int  21h
main  endp
mplay  proc  near
       lea  si,mdata1
       lea  bp,ds:mdata2
 lop:  mov  di,[si]
       cmp  di,-1
       je  endplay
       mov  bx,ds:[bp]
       call  soundplay
       add  si,2
       add  bp,2
       jmp  lop
       endplay:ret
mplay  endp
soundplay  proc  near
       push  ax
       push  bx
       push  cx
       push  dx
       push  di
       mov  al,0b6h
       out  43h,al
       mov  dx,12h
       mov  ax,533h*896
       div  di
       out  42h,al
       mov  al,ah
       out  42h,al
       in al,61h
       mov  ah,al
       or  al,3
       out  61h,al
 wait1:mov  cx,8ff0h
delay1:loop delay1
       dec  bx
       jnz  wait1
       mov  al,ah
       out  61h,al
       pop  di
       pop  dx
       pop  cx
       pop  bx
       pop  ax
       ret
soundplay  endp 
code  ends
      end  main


⌨️ 快捷键说明

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