【汇编】模拟电子琴发声(.asm源码)
项目环境
- 编译环境:搭建一个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源码)相关推荐
- 汇编计算机钢琴流程图,汇编模拟电子琴程序
<汇编模拟电子琴程序>由会员分享,可在线阅读,更多相关<汇编模拟电子琴程序(13页珍藏版)>请在人人文库网上搜索. 1.汇编语言程序设计课程设计报告题目: 模拟电子琴(音乐播放 ...
- 【数学建模】基于matlab武汉地铁2号线路线地图动态模拟【含Matlab源码 1092期】
一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[数学建模]基于matlab武汉地铁2号线路线地图动态模拟[含Matlab源码 1092期] 点击上面蓝色字体,直接付费下载,即可. 获取代 ...
- 【运动学】基于matlab GUI三体运动模拟【含Matlab源码 871期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[运动学]基于matlab GUI三体运动模拟[含Matlab源码 871期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...
- java毕业设计前行国家公务员模拟笔试系统mybatis+源码+调试部署+系统+数据库+lw
java毕业设计前行国家公务员模拟笔试系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计前行国家公务员模拟笔试系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈 ...
- 计算机毕业设计JAVA前行国家公务员模拟笔试系统mybatis+源码+调试部署+系统+数据库+lw
计算机毕业设计JAVA前行国家公务员模拟笔试系统mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA前行国家公务员模拟笔试系统mybatis+源码+调试部署+系统+数据库+lw ...
- python蒙特卡洛模拟抢红包(附源码),可用于课堂展示(presentation)
本博客是复现b站毕导视频中描述的模拟论证过程,先上原视频链接(强烈建议先看原视频): 我给自己发了2亿个红包,才发现先抢和后抢差距这么大https://www.bilibili.com/video/B ...
- java asm源码分析_探究CAS原理(基于JAVA8源码分析)
比较并替换,实现并发算法时常用到的一种技术,在java同步器中大量使用了CAS技术,神奇的实现了多线程执行的安全性 思想很简单:三个参数一个当前内存值V 旧的预期值A 即将更新的值B 当且仅当预期值A ...
- C语言模拟回合制游戏 源码
源码下载地址: http://download.csdn.net/detail/monkey_uan/5115921 刚学C的作品,略带稚气,仅供参考学习,版权所有. #include<stdi ...
- 驾考培训系统驾考答题系统科目一科目二科目三科目四模拟考试培训系统源码
介绍: 驾考培训系统 驾考答题系统 科目一科目二科目三考试培训系统源码 包括小车.客车.货车考试精选题目和模拟考试 网盘下载地址: https://pan.baidu.com/s/1NbYg4twfT ...
最新文章
- 实验四 32 位 ALU 设计实验
- 32位centos下安装jdk1.7报Permission denied处理方式
- 春节后面试别人的经历总结之一,好岗位分享给还在找工作中的软件开发爱好者们【转】...
- 最近学习的 Node.js 之 http
- 【算法】集成学习原理
- php创蓝253四要素认证_PHP下基于创蓝253接口的短信发送
- Oracle 建立包 和 包体
- 删除链表的倒数第n个节点 python_LeetCode 19.删除链表的倒数第N个节点(Python)
- python new init_python的new与init
- 机器视觉技术在工业检测中的应用综述
- 机器学习的环境搭建流程
- 那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程
- windows/ubuntn 快捷键和命令行使用
- 树莓派安装ubuntu 20.04后配置wifi固定ip地址
- nodejs安装及配置
- Oracle Duplicate database
- 百年烈酒公司William Grant&Sons将通过区块链追踪威士忌产品
- CSP2020-S1游记
- 代码零改动Serverless架构升级?
- HTML转EXE工具(HTML App Build)最新版