?? recorder beta.asm
字號:
DATA SEGMENT
ioport equ 0dd80h-280h
io8253a equ ioport+280h;8253的A口
io8253b equ ioport+283h;8253的控制字
io8255a equ ioport+288h;8255的A口
io8255b equ ioport+28bh;8255的控制字
io0832a equ ioport+290h;DAC0832
io0809a equ ioport+29ah;ADC0809IN2
TIP1 DB 0dh,0ah,"播放開始……",0dh,0ah,'$'
BUF DB 60000 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AH,6;判斷是否有鍵按下
MOV DL,0FFH
INT 21H
JE AD;無鍵按下則轉AD進行錄音
AD:
MOV SI,OFFSET BUF
MOV CX,60000
CONAD:
MOV DX,io0809a;ADC0809IN2
OUT DX,AL;啟動AD轉換
CALL DELAY;調用延時
IN AL,DX
MOV [SI],AL
INC SI
LOOP CONAD
MOV DX,OFFSET TIP1;顯示錄音完畢提示"播放開始……"
MOV AH,09H
INT 21H
MOV AX,0
MOV DX,0
MOV AH,6
MOV DL,0FFH
INT 21H
JE DA
DA:
MOV SI,OFFSET BUF
MOV CX,60000
CONDA:
MOV DX,io0832a;DAC0832的A口
MOV AL,[SI]
OUT DX,AL
CALL DELAY
INC SI
LOOP CONDA
DELAY PROC NEAR;延時子程序
PUSH DX
MOV DX,io8253b;8253的控制字
MOV AL,00010000B;計數器0以方式0工作
OUT DX,AL
MOV DX,io8253a;8253的A口
MOV AL,200
OUT DX,AL
MOV DX,io8255b;8255的控制字
MOV AL,10010000B;8255A方式0,A口輸入
OUT DX,AL
MOV DX,io8255a;8255的A口地址
CHKPA0:
IN AL,DX
TEST AL,00000001B;檢查PA0的狀態
JZ CHKPA0
POP DX
RET
DELAY ENDP
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -