我的编程空间,编程开发者的网络收藏夹
学习永远不晚

汇编语言如何实现发出各种声音

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

汇编语言如何实现发出各种声音

这篇文章主要介绍“汇编语言如何实现发出各种声音”,在日常操作中,相信很多人在汇编语言如何实现发出各种声音问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”汇编语言如何实现发出各种声音”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

响铃设计

1设计要求:

要求掌握响铃的使用方法。设计程序,从键盘接收输入字符,如是数字N,则响铃N次,如输入为非数字,则不响铃。

2设计思路:

判断输入为0~9之间,将N值给BP,设置响铃延时次数CX输出N次响铃。

汇编语言如何实现发出各种声音

3程序清单:

DATA    SEGMENT        pkey   DB  0AH,0DH,'please input the N:','$'        ERR   DB  0AH,0DH,'eero!',0AH,0DH,'please input the N again:','$'DATA    ENDS  CODE    SEGMENT        ASSUME  CS:CODE,DS:DATASTATE:  MOV AX,DATA        MOV DS,AX        MOV ES,AX                 LEA DX,pkey        MOV AH,09H        INT 21H                 ;DOS功能调用,输出字符串INPUT:  MOV AH,01H        INT 21H        CMP AL,'9'        JA  eero        CMP AL,'0'        JB  eero        SUB AL,30H              ;输入为0~9,则AL为响铃次数        SUB AH,AH        MOV BP,AX               ;BP为响铃次数N        xiang:   MOV CX,4                ;CX为响铃延时时间        MOV AH,02H                      MOV DL,07H        INT 21H                 ;DOS功能调用,响铃 LP:     LOOP LP                 ;响铃延时        DEC BP          JNZ xiang               ;响铃N次        JMP STATE                                eero:    LEA DX,ERR        MOV AH,9        INT 21H                 ;输出错误字符串        JMP INPUTCODE   ENDSEND  STATE

4程序运行结果及分析:

设置CX次数为延时次数,BP次数为响铃次数,调用响铃功能通过延时实现响铃,起初会把延时次数和响铃次数混淆导致错误。

汇编语言如何实现发出各种声音

图9 响铃设计结果

需要外接扬声器的发声程序

1机枪声音

PROGRAM SEGMENT      MAIN PROC FAR        ASSUME CS:PROGRAM                ORG 100HSTRAT:MOV CX,20DNEW_SHOT:PUSH CX         CALL SHOOT         MOV CX,4000H          SILENT:LOOP SILENT       POP CX       LOOP NEW_SHOT       INT 20H        MAIN ENDP    SHOOT PROC NEAR            MOV DX,140H      MOV BX,20H      IN  AL,61H      AND AL,11111100B       SOUND:XOR AL,2      OUT 61H,AL      ADD DX,9248H      MOV CL,3      ROR DX,CL      MOV CX,DX      AND CX,1FFH      OR CX,10          WAIT: LOOP WAIT        DEC BX       JNZ SOUND       AND AL,11111100B       OUT 61H,AL       RET             SHOOT ENDP   PROGRAM ENDS END STRAT

2音乐播放

;定义数据段data segment     infor1 db 0Dh, 0AH, "welocom you to come here listeng! $"     mus_freg  dw 330,294,262,294,3 dup (330)     ;频率表               dw 3 dup (294),330,392,392               dw 330,294,262,294,4 dup (330)               dw 294,294,330,294,262,-1     mus_time  dw 6 dup (25),50                   ;节拍表               dw 2 dup (25,25,50)               dw 12 dup (25),100data ends;栈段定义stack segment stack      db 200 dup(?)stack ends;--------字符串输出宏----------SHOWBM MACRO b     LEA DX,b     MOV AH,9     INT 21H ENDM;----------音乐地址宏-----------ADDRESS MACRO A,B     LEA SI,A     LEA BP,DS:BENDM;代码段定义code segment     assume ds:data, ss:stack, cs:codestart:     mov ax, data     mov ds, ax     mov ax, stack     mov ss, ax     mov sp, 200        address mus_freg, mus_time     call musicexit:          mov ah, 4cH     int 21h;------------发声-------------gensound proc near     push ax     push bx     push cx     push dx     push di     mov al, 0b6H     out 43h, al     mov dx, 12     mov ax, 348ch     div di     out 42h, al     mov al, ah     out 42h, al      in al, 61h     mov ah, al     or al, 3     out 61h, alwait1:     mov cx, 3314     call waitfdelay1:     dec bx     jnz wait1     mov al, ah     out 61h, al     pop di     pop dx     pop cx     pop bx     pop ax     ret gensound endp;--------------------------waitf proc near      push axwaitf1:      in al,61h      and al,10h      cmp al,ah      je waitf1      mov ah,al      loop waitf1      pop ax      retwaitf endp;--------------发声调用函数----------------music proc near      xor ax, axfreg:      mov di, [si]      cmp di, 0FFFFH      je end_mus      mov bx, ds:[bp]      call gensound      add si, 2      add bp, 2      jmp fregend_mus:      retmusic endpcode ends     end start

到此,关于“汇编语言如何实现发出各种声音”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

汇编语言如何实现发出各种声音

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

汇编语言如何实现发出各种声音

这篇文章主要介绍“汇编语言如何实现发出各种声音”,在日常操作中,相信很多人在汇编语言如何实现发出各种声音问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”汇编语言如何实现发出各种声音”的疑惑有所帮助!接下来,请跟
2023-06-21

c语言如何实现声音输出

在C语言中,可以使用音频库来进行声音输出。以下是使用ALSA音频库来实现声音输出的示例代码:#include int main() {int err;snd_pcm_t *handle;snd_pcm_hw_params_t *param
2023-10-25

汇编语言怎么实现各种码制的转换

本篇内容主要讲解“汇编语言怎么实现各种码制的转换”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“汇编语言怎么实现各种码制的转换”吧!1.十六进制转换为二进制数设计1.1设计要求:设计转换程序,将键
2023-06-21

汇编语言中如何实现字符串操作

这篇文章将为大家详细讲解有关汇编语言中如何实现字符串操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。软件:emu8086语言:汇编语言(Assembly)注意:小编列出了字符串匹配和字符串
2023-06-21

Android编程如何实现短信收发及语音播报提示功能

这篇文章给大家分享的是有关Android编程如何实现短信收发及语音播报提示功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:发送短信功能界面public class S
2023-05-30

如何正确配置Go语言开发环境:实现顺畅编程体验

如何正确配置Go语言开发环境:实现顺畅编程体验Go语言作为一种快速、简洁和高效的编程语言,越来越受到开发者的青睐。在开始学习和使用Go语言之前,正确配置开发环境是至关重要的,只有配置好了环境,才能保证顺畅的编程体验。本文将详细介绍如何正确
如何正确配置Go语言开发环境:实现顺畅编程体验
2024-03-10

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录