汇编语言如何实现发出各种声音
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇文章主要介绍"汇编语言如何实现发出各种声音",在日常操作中,相信很多人在汇编语言如何实现发出各种声音问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"汇编语言如何实现发
千家信息网最后更新 2025年01月22日汇编语言如何实现发出各种声音
这篇文章主要介绍"汇编语言如何实现发出各种声音",在日常操作中,相信很多人在汇编语言如何实现发出各种声音问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"汇编语言如何实现发出各种声音"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
9.响铃设计
9.1设计要求:
要求掌握响铃的使用方法。设计程序,从键盘接收输入字符,如是数字N,则响铃N次,如输入为非数字,则不响铃。
9.2设计思路:
判断输入为0~9之间,将N值给BP,设置响铃延时次数CX输出N次响铃。
9.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
9.4程序运行结果及分析:
设置CX次数为延时次数,BP次数为响铃次数,调用响铃功能通过延时实现响铃,起初会把延时次数和响铃次数混淆导致错误。
图9 响铃设计结果
10.需要外接扬声器的发声程序
10.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
10.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
到此,关于"汇编语言如何实现发出各种声音"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
响铃
次数
声音
设计
汇编语言
语言
字符
程序
学习
输入
输出
功能
字符串
数字
方法
更多
结果
错误
音乐
帮助
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
河南网络安全工作责任制
山东一柜网络技术有限公司
无锡crm软件开发公司
电子科技大学网络安全导师哪个好
原神国际服资料能更改服务器吗
如何查看服务器的内存
dsp后台软件开发
宁夏智能养老软件开发公司
软件开发 时间
球球大作战的服务器ip
上杭县灵子软件开发工作室
承德通网络技术有限公司
服务器怎么安装wps软件
手机应用软件开发技术价格
小学生网络安全常识教学设计
mysql数据库表清空恢复
网络安全技术实验报告
公安机关网络安全宣传月活动
不能保证网络安全英文
美国对中国网络安全
网络安全等级由高到低
直销软件开发厂家
云管理服务器系统
联想管理服务器
软件开发保护包括哪些
数据库查询班级名称
朋友圈网络安全政治教育
战地1pc和ps版服务器互通吗
网络安全起源是什么
如何删除和元软件开发