【汇编】dosbox钢琴
DATA SEGMENT
msg DB 0DH,0AH,'[ 1 2 3 4 5 6 7 ]'
DB 0DH,0AH,' [ q w e r t y u ]'
DB 0DH,0AH,'_________________'
DB 0DH,0AH,'9: EXIT'
DB 0DH,0AH,'_________________','$'
;********音调******后面用到-1判断音乐播是否放完
sound_0 DW -
sound_11 DW ,-
sound_12 DW ,-
sound_13 DW ,-
sound_14 DW ,-
sound_15 DW ,-
sound_16 DW ,-
sound_17 DW ,-
sound_1 DW ,-
sound_2 DW ,-
sound_3 DW ,-
sound_4 DW ,-
sound_5 DW ,-
sound_6 DW ,-
sound_7 DW ,-
time DW
DATA ENDS
;************************
STACK SEGMENT
Db DUP ('STACK')
STACK ENDS
;***********************
CODE SEGMENT
ASSUME DS:DATA,SS:STACK,CS:CODE
START:
MOV AX,DATA
MOV DS,AX MOV aH,
MOV AL,
INT 10H ;*****定义一个宏*****
SHOW MACRO b
LEA DX,b
MOV AH,
INT 21H
ENDM ;********一个声音宏********
onesound macro soundis,jumpis,letteris
CMP AL,letteris
JNZ jumpis
LEA SI,soundis
LEA BP,DS:time
CALL MUSIC
JMP input
ENDM show msg INPUT: MOV AH,01H
INT 21H
CMP AL,''
jnz go mov ah,4ch
int 21h go: onesound sound_11,a0,'q'
a0: onesound sound_12,b0,'w'
b0: onesound sound_13,c0,'e'
c0: onesound sound_14,d0,'r'
d0: onesound sound_15,e0,'t'
e0: onesound sound_16,f0,'y'
f0: onesound sound_17,g0,'u'
g0: onesound sound_1,h0,''
h0: onesound sound_2,i0,''
i0: onesound sound_3,j0,''
j0: onesound sound_4,k0,''
k0: onesound sound_5,l0,''
l0: onesound sound_6,m0,''
m0: onesound sound_7,n0,''
n0: onesound sound_0,o0,al
o0: jmp input
;********************发声 GENSOUND PROC NEAR
;-------------
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DI
;--------------
MOV AL,0B6H
OUT 43H,AL
MOV DX,12H
MOV AX,348ch
DIV DI
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
IN AL,61H
MOV AH,AL
OR AL,
OUT 61H,AL WAIT1: MOV CX,
call waitf
DELAY1: 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 ax
waitf1:
in al,61h
and al,10h
cmp al,ah
je waitf1
mov ah,al
loop waitf1
pop ax
ret
waitf endp ;************************
MUSIC PROC NEAR
PUSH DS
SUB AX,AX
PUSH AX
FREG: MOV DI,[SI] CMP DI,-;音乐是否放完?
JE END_MUS MOV BX,DS:[BP]
CALL GENSOUND
ADD SI,
ADD BP,
JMP FREG
END_MUS:
RET
MUSIC ENDP
CODE ENDS
;**********************
END START
【汇编】dosbox钢琴的更多相关文章
- 使用DOSBox在Win7_x64下搭建汇编环境
1. 软件安装 1. debug.exe,masm.exe,link.exe,edit.com等汇编工具,一般32位的windows系统有自带,但64位系统下并没有,而且将32位系统下的工具拷贝到64 ...
- 汇编笔记-DOSBox安装和使用(转载)
我自己安装使用在Windwos10下面. [DOSBox简介] 1. 官方网址:http://www.dosbox.com/. 2. debug功能在win7之后系统已经不自带了,即64位系统是不能直 ...
- Mac OS环境下DOSBox汇编环境的搭建
平台: mac 工具: DOSBox(点击下载DOSBox官网) debug.edit.link.masm等等(点击下载masm汇编开发工具,提取码: skc8) 步骤: 1 .安装DOSBox: 解 ...
- MS-DOS 系统汇编环境之DOSBOX+vim
经过虚拟机的体验,我发现还是dosbox里汇编比较方便..... 一.下载安装 dosbox DOSBOX 准备好 masm.exe.link.exe.debug.exe,放在~/dos下(文件夹名字 ...
- 汇编环境配置及 Hello World。DOSBox,debug.exe,VisualStudio
▶ DOSBOX 相关 ● 下载 DOSBox(http://www.dosbox.com/download.php?main=1),安装到文件夹 DOSBox . ● 下载 debug.exe(Wi ...
- 【8086汇编-Day2】dosbox实验环境配置及测试
我学习汇编用的是王爽的<汇编语言>第三版,书中是以8086处理器为例,是工作在实模式下的,而当下的个人电脑处理器都是工作在保护模式下的.所以需要一个虚拟的工作在实模式下的处理器,这里主要用 ...
- dosbox+masm5.0编译汇编文件
在去年写过如何bc3.1编译ucos,不过现在很少去用到,但是那是用dosbox也是懵懵懂懂的,参见https://blog.csdn.net/liming0931/article/details/8 ...
- dosbox+masm汇编环境的安装和使用
1. 下载dosbox安装程序:DOSBox0.74-win32-installer.exe 链接:https://pan.baidu.com/s/1gXPKTT-xKb6BpjOJdhmudA 密码 ...
- 【汇编】1.汇编环境的搭建:DOSBox的安装
前言 DOSBox是一款在windows系统运行DOS程序的环境模拟器.可以解决在64位机中汇编程序编译调试等问题. 本文以 DOSBox 0.74 为例,汇编编译程序采用MASM6. 第一步下载相关 ...
随机推荐
- 用Twebbrowser做可控编辑器与MSHTML(插入表格)
在插入表格问题上出现与结果想象不一样的问题.看代码 <table border="1" cellpadding="0" width="100%& ...
- Leetcode 48.旋转矩阵
旋转矩阵 给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使用另一个矩阵来旋转图像. 示例 1: ...
- Windows读取NXP MiFare Ultralight C类型NFC卡片的信息
1,读取 我们需要外接一个NFC Reader让Windows可以读取NFC卡片的内容. 因为特殊原因,我们选择了Sony rc-s380 NFC Reader.相关介绍 我们需要下载并安装NFC P ...
- paste deploy初探
这段时间刚着手开始研究Openstack Swift源码,为后续开发做准备. Swift依据python WSGI规范.WSGI(Web Server Gateway Interface)是Pytho ...
- [bzoj1131][POI2008]Sta_树形dp
Sta bzoj-1131 POI-2008 题目大意:给定一棵n个点的树,求一个根,使得深度和最大. 注释:$1\le n \le 10^6$. 想法:扭一扭即可. 扭的时候看看这个点当没当过根. ...
- 翻翻git之---溜的飞起的载入效果AVLoadingIndicatorView
转载请注明出处:王亟亟的大牛之路 由于接近过春节.看各个群体的工作都不太旺盛(不是年会就是各种吹B或是放空). 之前的Material Design的内容差点儿讲的差点儿相同了(至少基本的几个控件都介 ...
- 一个NHibernate的BUG
一.背景 我们如今做的项目,用NHibernate实现数据訪问层. 訪问数据时,有的数据库表是确定的:有明白的表名.字段名.这时候依照常规的方法处理就可以:建立数据库表到类的映射.使用HQL读写数据库 ...
- 一篇文章贯穿ACE各种发送接收组件 1.2版
TCP通信过程介绍 首先介绍一下socket通信的基本过程:这里先如果有两个家伙在通信,一个是S.还有一个叫C (1)S打开port监听本地的port看看有没有人来连接: (2)与此同一时候C试图去连 ...
- Qt graphic item日记
今天在用用graphic view 加入graphic item的时候要引入一个context menu,自然就要对context menu上的action进行slot处理.可是graphic ite ...
- SQL server触发器、存储过程操作远程数据库插入数据,解决服务器已存在的问题
近期弄了一个小项目,也不是非常复杂,须要将一个数据库的一些数据备份到另外一个库.不是本地,可能是网络上其它的数据库.想了一下,用了存储过程和触发器. 也不是非常复杂,首先我须要操作远程数据库,于是写了 ...