📄 23_shuziluyinji.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 + -