用到的芯片是  ADC0809   CAD0832  8253  8255

只是从百度上看到的代码,修改了一点点 ,希望对你有帮助

DATAS SEGMENT

ioport   equ 0c800h-280h
    io0809   equ ioport+29ah
    io0832   equ ioport+290h
    io8253   equ ioport+280h
    io8255   equ ioport+288h
    io8253c  equ ioport+283h
    io8255c  equ ioport+28bh
    
    msg0     db'<Press R to start record>',0dh,0ah,'$'
    msg1     db  0dh,0ah,'<Input Error!Please input R or r to continue...>',0dh,0ah,'$'
    msg2     db  0dh,0ah,'<Press P to play record>',0dh,0ah,'$'
    msg3     db  0dh,0ah,'<Input Error!Please input P or p to continue...>',0dh,0ah,'$'
    msg4     db  0dh,0ah,'Recording...',0dh,0ah,'$'
    msg5     db  0dh,0ah,'Playing...',0dh,0ah,'$'
    msg6     db'Input:','$'
    msg7     db  0dh,0ah,'Thank you!',0dh,0ah,'$'
    msg8     db  0dh,0ah,'Record Complete!',0dh,0ah,'$'
    msg9    db  0dh,0ah,'Play Over.',0dh,0ah,'$';
    msg10    db  0dh,0ah,'If you want to pause,press any key!','$'
    msg11    db  0dh,0ah,'<Press R to play replay>',0dh,0ah,'$'
    msg12    db'<Press Q to quit>',0dh,0ah,'$'
    buf      db  60000 dup(?)  
    
DATAS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS

START:
MOV AX,DATAS
MOV DS,AX

MOV DX,OFFSET MSG0   ;显示按R开始
MOV AH,09H
    INT 21H
    
MOV DX,OFFSET MSG6   ;显示并等待input
MOV AH,09H
    INT 21H

CHOOSE0:       ;直到输入r为止才开始录音
MOV AH,1
    INT 21H
CMP AL,'R'
    JZ  OK0
CMP AL,'r'
    JZ  OK0
MOV DX,OFFSET MSG1    ;提示输入错误,继续要输入
MOV AH,09H
    INT 21H
MOV DX,OFFSET MSG6
MOV AH,09H
    INT 21H
    JNZ CHOOSE0

OK0:
MOV DX,OFFSET MSG4     ;开始录音
MOV AH,09H
    INT 21H
    
MOV DI,OFFSET BUF
MOV CX,30000

REC:
MOV DX,IO0809      ;启动0809将模拟信号转化成数字信号
    OUT DX,AL
    CALL DELAY
    IN  AL,DX      ;输入转化数据
MOV [DI],AL      
INC DI
LOOP REC     ;一直循环30000次,因为cx=30000

OK2:
MOV DX,OFFSET msg8
MOV AH,09H
    INT 21H
    
MOV DX,OFFSET MSG2
MOV AH,09H
    INT 21H
    
MOV DX,OFFSET MSG6
MOV AH,09H
    INT 21H

CHOOSE1:       ;按p进行播音
MOV AH,1
    INT 21H
CMP AL,'P'
    JZ  OK1
CMP AL,'p'
    JZ  OK1
    
MOV DX,OFFSET MSG3
MOV AH,09H
    INT 21H
    
MOV DX,OFFSET MSG6  
MOV AH,09H
    INT 21H
    JNZ CHOOSE1      ;直到按了p才进行播音

OK1:
MOV DX,OFFSET MSG5
MOV AH,09H
    INT 21H
MOV DI,OFFSET BUF
MOV CX,30000

PLAY:
MOV DX,IO0832       ;启动0832将数字转换成模拟信号,播音
MOV AL,[DI]
    OUT DX,AL
    CALL DELAY
INC DI
    LOOP PLAY    ;一直播放直到cx=0
    
MOV DX,OFFSET msg9
MOV AH,09H
    INT 21H

MOV DX,OFFSET msg11
MOV AH,09H
    INT 21H
    
MOV DX,OFFSET msg12
MOV AH,09H
    INT 21H

REPLAY:              ;重新播放
MOV DX,OFFSET MSG6
MOV AH,09H
    INT 21H
MOV AH,1
    INT 21H
CMP AL,'R'
    JZ  OK1
CMP AL,'r'
    JZ  OK1       ;按r是重新播放
CMP AL,'Q'        ;按q是退出
    JZ  QUIT
CMP AL,'q'
    JZ  QUIT
    
MOV DX,OFFSET MSG1
MOV AH,09H
    INT 21H
    
    JNZ REPLAY

QUIT:    
MOV DX,OFFSET msg7
MOV AH,09H
    INT 21H
    
MOV AH,4CH
    INT 21H

DELAY PROC NEAR
PUSH DX
MOV DX,IO8253C
MOV AL,10H       ;工作方式0,二进制计数
    OUT DX,AL
    
MOV DX,IO8253
MOV AL,200      ;每秒以5千次的速率采集(1mhz/5000)
    OUT DX,AL

MOV DX,IO8255C
MOV AL,90H      ;8255A进C出
    OUT DX,AL
MOV DX,IO8255
OUTTEST:
    IN AL,DX       ;将out0(pa0)的数据放在al
    TEST AL,01     ;检查计数器的out0是不是高电平
    JZ OUTTEST
POP DX             ;复位
    RET
DELAY ENDP

CODES ENDS
END START

数字录音机 汇编实验相关推荐

  1. 计算机组成原理汇编程序实验,计算机组成原理汇编实验(资料).pdf

    计算机组成原理汇编实验(资料) 汇编语言调试工具 DEBUG 的使用 一.实验目的: 1.掌 DEBUG 的基本命令及其功能 2.熟练掌 DEBUG 的常用命令,学会用 DEBUG 调试程序. 3.掌 ...

  2. 汇编实验三:三个有符号数比较大小

    汇编实验三:三个有符号数比较大小 问题 源码 利用库函数io.inc 问题 给出三个有符号数,编写一个比较相等关系的程序: (1) 如果这三个数都不相等,则显示0: (2) 如果这三个数中有两个数相等 ...

  3. 汇编实验1——利用8255实现LED的流水点亮实验

    前言 做这个实验耗时近半天,其中安装虚拟机5小时,编写程序3小时. 踩过不少的坑,比如说一开始一直显示不出来usb插件,最后发现是开关没开:又比如,程序逻辑没有问题,但始终显示不出正确的结果,最后发现 ...

  4. 完整详细的汇编实验报告

    完整详细的汇编实验报告 1.用Debug命令查看寄存器和内存中的内容 2.不同寻址方式的灵活运用 3.算术及位串处理程序 4.伪指令 敢拼才会赢,详细报告地址: 点击这里 1.用Debug命令查看寄存 ...

  5. 计算机原理汇编程序实验报告的总结,计算机组成原理及汇编实验报告

    计算机组成原理及汇编实验报告 (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 17.90 积分 中南大学中南大学计算机组成原理及汇编实验报告计算机组 ...

  6. 汇编实验1及博客初尝试

    Part 1 这一篇博客应该不是传说中的技术博客.初闻博客该是小学的计算机课,那个时候老师教我们注册邮箱注册博客注册论坛.注册完了我们便去玩植物大战僵尸,不用动脑子的重复性操作.计算机老师也和我们探究 ...

  7. 汇编实验之用debug命令查看寄存器和内存中的内容

    文章目录 前言 一.用Debug的R命令查看.改变CPU寄存器的内容 r命令查看cpu寄存器内容: r命令改变寄存器中的内容: 二.用Debug的D命令查看内存中的内容 用D命令直接查看内存中的内容 ...

  8. EVC中嵌汇编实验心得

    EVC中嵌汇编实验心得 1.基于X86的CPU可以直接在C/C++中用_asm关键字嵌入汇编程序.有一点要注意:某些系统标识符不可使用. 例如在下面程序中: __asm{   MOV   DX   , ...

  9. 汇编实验:屏幕窗口程序(代码有较为详细的注释)

    实验3.4 屏幕窗口程序 1.题目:屏幕窗口程序 2.实验要求: 在屏幕上开出三个窗口,它们的行列坐标按照教材要求.光标首先定位在右窗口最下面一行的行首(15,50),如从键盘输入字符,则显示在右窗口 ...

最新文章

  1. [JAVA EE] Filter过滤器
  2. mSystem:西农韦革宏组细菌-真菌互作影响微生物多样性-土壤养分循环关系
  3. Assembly is incorrectly specified as a file
  4. 使用 jQuery Mobile 与 HTML5 开发 Web App (四) —— jQuery Mobile 表单上
  5. mdb java_Java生成mdb文件(MS Access文件)
  6. 【飞控理论】从零开始学习Kalman Filters之二:最优状态估计、最优估计算法和方程
  7. go mysql id为0_go 语言中mysql操作200万数据时应该如何写?
  8. python中argsort_浅述python中argsort()函数的实例用法
  9. SOPC自定义外设(IP)的地址对齐
  10. 简明 MongoDB 入门教程 1
  11. 学校能效管理系统解决方案-校园能源管理之智慧消防(安科瑞-须静燕)
  12. MTK-EIS电子防抖-gyro校准
  13. 怎么制作QQ动态表情包,GIF出处是哪
  14. mbit职业测试软件,MBTI职业性格测试(高考专业填报版)(手机版)
  15. Android HTTP边下边播
  16. Java实现Zip压缩包解压
  17. 为了销量!苹果恐要iPhone SE降价:不到2千买吗?
  18. MarkDown CheatSheet 速查表
  19. 利用 android手机DLNA功能,实现手机视频无线播放到电脑、电视
  20. 《生物化学与分子生物学》----蛋白质----听课笔记(六)

热门文章

  1. 渐变折射率光纤的理论分析和光纤的损耗
  2. PhotoShop CC 2017软件工具面板使用---矩形选框工具
  3. js中split()方法、splice()方法、slice()方法
  4. 封神台--第二章:遇到阻难!绕过WAF过滤!解题思路
  5. 摄影-模特引导、直方图、色调曲线、分离色调、相机校准、HSL、渐变滤镜、径向滤镜、画笔
  6. java计算机毕业设计高校体育器材及场地管理源码+mysql数据库+系统+lw文档+部署
  7. 实现领养宠物的功能(test类)
  8. FreeBasic写DLL给VB6调用(直接用API创建和修改VB字符串方法)
  9. 关于电的计算机公式,电学所有计算公式
  10. ECU Manager EM动力升级调教设备