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

📄 huayin21.asm

📁 学期末的课程设计,做一个滑音程序,输入起始和终止频率即可得到平滑发声
💻 ASM
字号:
data segment
mess1 db 13,10,'*********** sound program ****************'
      db 13,10,'        choose the operation              '
      db 13,10,'          c :  continue                '
      db 13,10,'          q :  quit to dos             '
      db 13,10,'************copyright@chengning***********$'
mess11 db 'input the choose:$'
mess2 db 'please enter the start frequency:$'
mess3 db 'please enter the end frequency:$'


frestart label byte
  max    db  5
  act    db  ?
 freq1   db  5 dup(?)


choose   label byte
   hui   db 5
   haa   db ?
   chos  db 2 dup(?)
   

data ends
;************************************
node segment
   assume cs:node,ds:data,es:data
main proc far
     push ds
     sub  ax,ax
     push ax
     mov  ax,data
     mov  ds,ax
     mov  es,ax

start: 
     call huanhang    
     lea  dx,mess1
     mov  ah,09h
     int  21h
     call huanhang
     lea  dx,mess11
     mov  ah,09h
     int  21h
     lea  dx,choose
     mov  ah,0ah
     int  21h
     mov  si,2
     cmp  choose[si],'q'
     jz   exit
     call huanhang
     lea  dx,mess2
     mov  ah,09h
     int  21h
     lea  dx,frestart
     mov  ah,0ah
     int  21h
     call change
     mov  bx,ax
     call huanhang
     lea  dx,mess3
     mov  ah,09h
     int  21h
     lea  dx,frestart
     mov  ah,0ah
     int  21h
     call change
     mov  di,bx
huayin:
     call sound
     inc  di
     cmp  di,ax
     jnz  huayin
     jz   start
     ;jz   exit
exit:
     mov ax,4c00h
     int 21h
main  endp
;***************************
change proc near
     push bx
     xor bh,bh
     mov dh,10
     mov cl,act
     sub cl,1
     xor ch,ch
     mov si,2
zh:  mov bl,frestart[si]
     sub bl,30h
     add ax,bx
     mul dh
     inc si
     loop zh
     pop bx
     ret
change endp    
;***************************
sound proc near
     push ax
     push bx
     push dx
     push cx
     mov al,10110110b
     out 43h,al
     mov dx,12h
     mov ax,34dch
     div di
     out 42h,al
     mov al,ah
     out 42h,al

     in  al,61h
     mov ah,al
     or  al,3
     out 61h,al
     mov bx,100
leng:mov cx,2801
delay:loop delay
      dec bx
      jnz leng
      mov al,ah
      out 61h,al
goout:  pop cx
      pop dx
      pop bx
      pop ax
      ret
sound endp
;****************************  
huanhang proc near
     push  ax
     push  dx
     mov   ah,02h
     mov   dl,0dh
     int   21h
     mov   dl,0ah
     int   21h   
     pop   dx
     pop   ax
     ret
huanhang   endp
;****************************
node ends
end  main
     

⌨️ 快捷键说明

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