打印

汇编音乐发生程序

[复制链接]
1452|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yybj|  楼主 | 2012-1-6 18:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stack segment para stack 'stack'
db 64 dup('stack...')
stack ends
;---------------------------------------------------------------------------------------
data segment para 'data'
mus_freq dw 330,294,262,294,3 dup(330) ; bar 1 &2
dw 3 dup(294),330,392,392 ; bar 3 &4
dw 330,294,262,294,4 dup(330) ; bar 5 &6
dw 294,294,330,294,262, -1 ; bar 7 &8
mus_time dw 6 dup(25),50 ; bar 1 &2
dw 2 dup(25,25,50) ; bar 3 &4
dw 12 dup(25),100 ; bar 5 &6
data ends
;---------------------------------------------------------------------------------------
code segment para 'code'
music proc far
assume cs:code ,ss:stack ,ds:data
start:
push dx
mov ax, 0
push ax

mov ax,data ;initialize DS
mov ds,ax
mov ax, stack
mov ss, ax

lea si, mus_freq
lea bp, ds:mus_time
freq:
mov di,[si]
cmp di, -1
je end_mus
mov bx, ds:[bp]
call gensound
add si, 2
add bp, 2
jmp freq
end_mus:
ret
music endp

gensound proc near
push ax
push bx
push cx
push dx
push di

mov al, 0b6h ;10110110 即将计数器2设定为模式3
out 43h, al ;send it to control register
;使AX中得到送往定时器2的计数值
mov dx, 12h ;timer divisor
mov ax, 348ch
div di ;119130/(given size)
out 42h, al ;给计数器2装入计数值x从而产生对应赫兹的频率
mov al, ah
out 42h, al
in al, 61h
mov ah, al
or al, 3 ;make pb0=1 pb1=1
out 61h, al ;turn the speaker on
wait1: mov cx, 2800 ;wait for sepcified interval
delay: loop delay
dec bx
jnz wait1
mov al, ah ;recover value of port
out 61h, al ;recover the register
pop di
pop dx
pop cx
pop bx
pop ax
ret
gensound endp
code ends
end start

相关帖子

沙发
gxgclg| | 2012-1-6 18:51 | 只看该作者
试试看

使用特权

评论回复
板凳
火箭球迷| | 2012-1-7 08:46 | 只看该作者
这个编起来应该不难

使用特权

评论回复
地板
baidudz| | 2012-1-7 09:15 | 只看该作者
这个好像不能实现楼主需要的功能

使用特权

评论回复
5
hsbjb| | 2012-1-8 10:36 | 只看该作者
哪位大侠给注释一下

使用特权

评论回复
6
pkat| | 2012-1-8 14:39 | 只看该作者
基本能看明白

使用特权

评论回复
7
xsgy123| | 2012-1-8 20:32 | 只看该作者
汇编学得不太多,看懂了其中的一部分

使用特权

评论回复
8
黑发尤物| | 2012-1-9 18:34 | 只看该作者
有注释就好了

使用特权

评论回复
9
hsbjb| | 2012-1-9 22:07 | 只看该作者
楼主可以考虑加一些注释

使用特权

评论回复
10
火箭球迷| | 2012-1-9 22:33 | 只看该作者
如果有些汇编基础,还是很容易看懂的

使用特权

评论回复
11
dfsa| | 2012-1-10 22:53 | 只看该作者
什么音乐?

使用特权

评论回复
12
wh6ic| | 2012-1-11 14:29 | 只看该作者
嗯...!...?怎么把 x86 汇编的贴到这里来了,莫非新塘有x86的MPU或MCU?

使用特权

评论回复
13
xsgy123| | 2012-1-11 19:25 | 只看该作者
楼主这程序估计不是针对新塘的

使用特权

评论回复
14
hsbjb| | 2012-1-15 18:46 | 只看该作者
通过查资料,差不多看明白了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

2496

帖子

1

粉丝