项目环境
  • 编译环境:搭建一个nasm2.8的编译环境。
  • 镜像文件:采用winhex_18.2刷入编码。
  • 虚拟机:采用Bochs-2.4.5
项目软件
  • 傻瓜式环境配置。
  • 解压文件到D盘能直接使用。
  • 项目软件及项目运行环境下载地址:https://download.csdn.net/download/Gyangxixi/19771363
音频对照表

程序源码(.asm)
org 0x8400
jmp start
;*****************************************数据准备区*****************************************
sound_f:;初始频率  dw 1000
sound_hz:;赫兹中转  dw 0
different_f:;不同音阶  dw 523  dw 587  dw 659  dw 698  dw 784  dw 880  dw 988
;*****************************************开始*****************************************
start:  mov ax,0xb800                        ;指向文本模式的显示缓冲区  mov es,ax  mov ax,0  mov ds,ax  cli  mov word [ds:0x24],int_key          ;写入键盘中断9号服务程序地址  mov word [ds:0x26],0  sti  ;设置频率
;   mov dx,12H
;   mov ax,34DEH
;   mov di,1000
;   div di  ;给定时器频率
;   mov al,10110110B
;   out 43h,al
;   mov ax,1983
;   out 42h,al
;   mov al,ah
;   out 42h,al  ;扬声器端口打开
;   in al,61h
;   or al,00000011B
;   out 61h,al
x:  jmp $  ;*****************************************键盘中断*****************************************
int_key:;键盘  mov dx,0x60                         ;读取键盘缓冲区数据  in al,dx  ;叫1   duo  cmp al,0x02  je call_1  ;叫2   rai  cmp al,0x03  je call_2  ;叫3   mi  cmp al,0x04  je call_3  ;叫4   fa  cmp al,0x05  je call_4  ;叫5   sao  cmp al,0x06  je call_5  ;叫6   la  cmp al,0x07  je call_6  ;叫7   xi  cmp al,0x08  je call_7  jmp read_sound  call_1:  mov bx,[ds:different_f]         ;duo  mov [ds:sound_f],bx  call make_sound  jmp read_sound  call_2:  mov bx,[ds:different_f+2]       ;rai  mov [ds:sound_f],bx  call make_sound  jmp read_sound  call_3:  mov bx,[ds:different_f+4]       ;mi  mov [ds:sound_f],bx  call make_sound  jmp read_sound  call_4:  mov bx,[ds:different_f+6]       ;fa  mov [ds:sound_f],bx  call make_sound  jmp read_sound  call_5:  mov bx,[ds:different_f+8]       ;sao  mov [ds:sound_f],bx  call make_sound  jmp read_sound  call_6:  mov bx,[ds:different_f+10]      ;la  mov [ds:sound_f],bx  call make_sound  jmp read_sound  call_7:  mov bx,[ds:different_f+12]      ;xi  mov [ds:sound_f],bx  call make_sound  jmp read_sound  read_sound:   mov dx,0x20  mov al,0x61  out dx,al
iret  ;*****************************************发声主程序*****************************************
make_sound:;发声  call give_f  call delay  call open_sound  call delay  call close_sound
ret  ;**********************************************************************************声音模块**********************************************************************************
;*****************************************设置频率*****************************************
set_f:;设置频率  push dx  push ax  mov dx,12H  mov ax,34DEH  mov di,[ds:sound_f]  div di  mov [ds:sound_hz],ax  pop ax  pop dx
ret
;*****************************************给定时器频率*****************************************
give_f:;给定时器频率  mov  al,10110110B  out  43H,al  call set_f  mov  ax,[ds:sound_hz]  out  42H,al  mov  al,ah  out  42H,al
ret  ;*****************************************扬声器端口打开*****************************************
open_sound:;扬声器端口打开  push ax  in al,61H  or al,00000011B;或操作与11111100B  out 61H,al  pop ax
ret
;*****************************************扬声器端口关闭*****************************************
close_sound:;扬声器端口关闭  push ax  in al,61H  and al,11111100B;与操作与00000011B  out 61H,al  pop ax
ret
;*****************************************时延*****************************************
delay:;时延  push cx   push dx  push ax   mov  cx,0FH  ;mov  dx,4240H              ;延迟  mov  dx,1000H               ;延迟  mov  ah,86H  int  15H  pop ax   pop dx  pop cx
ret

【汇编】模拟电子琴发声(.asm源码)相关推荐

  1. 汇编计算机钢琴流程图,汇编模拟电子琴程序

    <汇编模拟电子琴程序>由会员分享,可在线阅读,更多相关<汇编模拟电子琴程序(13页珍藏版)>请在人人文库网上搜索. 1.汇编语言程序设计课程设计报告题目: 模拟电子琴(音乐播放 ...

  2. 【数学建模】基于matlab武汉地铁2号线路线地图动态模拟【含Matlab源码 1092期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[数学建模]基于matlab武汉地铁2号线路线地图动态模拟[含Matlab源码 1092期] 点击上面蓝色字体,直接付费下载,即可. 获取代 ...

  3. 【运动学】基于matlab GUI三体运动模拟【含Matlab源码 871期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[运动学]基于matlab GUI三体运动模拟[含Matlab源码 871期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

  4. java毕业设计前行国家公务员模拟笔试系统mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计前行国家公务员模拟笔试系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计前行国家公务员模拟笔试系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈 ...

  5. 计算机毕业设计JAVA前行国家公务员模拟笔试系统mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA前行国家公务员模拟笔试系统mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA前行国家公务员模拟笔试系统mybatis+源码+调试部署+系统+数据库+lw ...

  6. python蒙特卡洛模拟抢红包(附源码),可用于课堂展示(presentation)

    本博客是复现b站毕导视频中描述的模拟论证过程,先上原视频链接(强烈建议先看原视频): 我给自己发了2亿个红包,才发现先抢和后抢差距这么大https://www.bilibili.com/video/B ...

  7. java asm源码分析_探究CAS原理(基于JAVA8源码分析)

    比较并替换,实现并发算法时常用到的一种技术,在java同步器中大量使用了CAS技术,神奇的实现了多线程执行的安全性 思想很简单:三个参数一个当前内存值V 旧的预期值A 即将更新的值B 当且仅当预期值A ...

  8. C语言模拟回合制游戏 源码

    源码下载地址: http://download.csdn.net/detail/monkey_uan/5115921 刚学C的作品,略带稚气,仅供参考学习,版权所有. #include<stdi ...

  9. 驾考培训系统驾考答题系统科目一科目二科目三科目四模拟考试培训系统源码

    介绍: 驾考培训系统 驾考答题系统 科目一科目二科目三考试培训系统源码 包括小车.客车.货车考试精选题目和模拟考试 网盘下载地址: https://pan.baidu.com/s/1NbYg4twfT ...

最新文章

  1. 实验四 32 位 ALU 设计实验
  2. 32位centos下安装jdk1.7报Permission denied处理方式
  3. 春节后面试别人的经历总结之一,好岗位分享给还在找工作中的软件开发爱好者们【转】...
  4. 最近学习的 Node.js 之 http
  5. 【算法】集成学习原理
  6. php创蓝253四要素认证_PHP下基于创蓝253接口的短信发送
  7. Oracle 建立包 和 包体
  8. 删除链表的倒数第n个节点 python_LeetCode 19.删除链表的倒数第N个节点(Python)
  9. python new init_python的new与init
  10. 机器视觉技术在工业检测中的应用综述
  11. 机器学习的环境搭建流程
  12. 那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程
  13. windows/ubuntn 快捷键和命令行使用
  14. 树莓派安装ubuntu 20.04后配置wifi固定ip地址
  15. nodejs安装及配置
  16. Oracle Duplicate database
  17. 百年烈酒公司William Grant&Sons将通过区块链追踪威士忌产品
  18. CSP2020-S1游记
  19. 代码零改动Serverless架构升级?
  20. HTML转EXE工具(HTML App Build)最新版

热门文章

  1. Ubuntu下解决Make的:cc1plus: warnings being treated as errors
  2. 计算机软件理论考博复试,考博复试时的自我介绍
  3. tcp 为什么要三次握手 两次不行吗
  4. 数梦工场7.5亿元都干点啥?
  5. Oracle ltrim() 函数详细用法
  6. 字节跳动前端面经凉经(半年经验社招)待填坑
  7. 人生的追求到底是什么?
  8. oracle中*_name*知多少
  9. 腾讯《活着》频道JS图片轮换效果解析
  10. Linux基础知识汇总,看这一篇就够了(2022最新整理)