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

📄 实验23_数字录音机.asm

📁 数字录音机试验的原理与程序。以每秒钟5000次的速率采集IN2输入的语音数据并存入内存,共采集60000个数据(录12秒)
💻 ASM
字号:
;*******************
;*     录音机      *
;*******************
data segment
 luport        equ 29ah                  ;录音口地址
 fangport      equ 290h                  ;放音口地址
 
 data_qu  db 10000 dup(?)                         ;录音数据存放数据区
 news_1   db 'Press any key to record:',24h       ;录音提示
 news_2   db 0dh,0ah,' Press SPACE to Playing,other key is exit:',24h    ;放音提示
data  ends
code  segment
     assume cs:code,ds:data,es:data
;.386
begin:  
     mov ax,data                           ;初始化
     mov  ds,ax
     mov  es,ax
     mov  dx,offset news_1                 ;显示录音提示
     mov  ah,9
     int  21h
test_1:  
     mov  ah,1                              ;等待键盘输入
     int  16h
     jz  test_1                             ;若不是则循环等待
     call  lu                               ;调用录音子程序
     mov dx,offset news_2                   ;显示放音提示
     mov ah,9
     int 21h
fy:  call fang                              ;调用放音子程序
     mov ax,0c07h
     int 21h
     cmp al,20h
     jz fy
     mov ah,4ch                             ;返回
     int 21h

lu proc near                                ;录音子程序
    mov di, offset data_qu                  ;置数据区首地址为DI
    mov cx,10000                            ;录10000个数据
    cld
xunhuan:
    mov  dx,luport                          ;启动A/D
    out dx,al                                
    in al,dx                                ;从A/D读数据到AL
    stosb                                   ;存入数据区,使DI加1 
    loop xunhuan                            ;循环
    ret                                     ;子程序返回
lu endp

fang proc near                              ;放音子程序
     mov si,offset data_qu                  ;置数据区首地址为SI
     mov cx,10000                           ;放10000个数据
     cld
fang_yin: 
     mov dx,fangport
     lodsb                                  ;从数据区取出数据
     
     out dx,al                              ;放音                                  
     mov bl,250
delay:
    dec bl
    jnz delay
    loop fang_yin                           ;循环
     ret                                    ;子程序返回
fang endp
code ends
end begin

⌨️ 快捷键说明

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