| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1754 人关注过本帖, 1 人收藏
标题:汇编 钢琴实验 要求键入1、2、3、4、5、6、7、8 得音 1、2、3、4、5、6、7、 ...
只看楼主 加入收藏
陛下
Rank: 2
来 自:南宁
等 级:论坛游民
帖 子:62
专家分:90
注 册:2010-5-15
结帖率:42.86%
收藏(1)
 问题点数:0 回复次数:4 
汇编 钢琴实验 要求键入1、2、3、4、5、6、7、8 得音 1、2、3、4、5、6、7、i
我写了点
但到与门打开与关闭卡了
希望能帮助 谢谢
程序代码:
START:
      MOV AX,DATA
      MOV DS,AX
X1:   MOV,AH,01H
      INT 21H
KEY:  MOV AH,07H
      INT 21H
      CMP AL,'Q'
      JZ  EXIT

 
      CMP AL,O8H
      JZ X1
X2:
      SUB AL,31H
      MOV AH,00H
      MOV SI,AX
      SAL SI,1
;++++++++++++++++++++++++++
      MOV DX,0012H
      MOV AX,0000H
      MOV BH,00H
      MOV BL,AL
      DIV MOSIC[SI]
      MOV BX,AX
;++++++++++++++++++++++++
      MOV DX,43H
      MOV AL,0B6H
      OUT DX,AL
      IN AL,42H
      MOV AL,BL
      OUT 42H,AL
      MOV AL,BH
      OUT 42H,AL
;+++++++++++++++++++++
      IN AL,61H
      OR AL,03H
.....
下面的不会了     



      
     
搜索更多相关主题的帖子: color 
2010-12-29 15:13
陛下
Rank: 2
来 自:南宁
等 级:论坛游民
帖 子:62
专家分:90
注 册:2010-5-15
收藏
得分:0 
程序代码:
前面的我忘记写上去了
不好意思
现在的是我写的完整程序
DATA SEGMENT
MUSIC DW 524,588,660,598,784,988,1048
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,CS:DATA
START:
      MOV AX,DATA
      MOV DS,AX
X1:   MOV,AH,01H
      INT 21H
KEY:  MOV AH,07H
      INT 21H
      CMP AL,'Q'
      JZ  EXIT

      CMP AL,O8H
      JZ X1
X2:
      SUB AL,31H
      MOV AH,00H
      MOV SI,AX
      SAL SI,1
;++++++++++++++++++++++++++
      MOV DX,0012H
      MOV AX,0000H
      MOV BH,00H
      MOV BL,AL
      DIV MOSIC[SI]
      MOV BX,AX
;++++++++++++++++++++++++
      MOV DX,43H
      MOV AL,0B6H
      OUT DX,AL
      IN AL,42H
      MOV AL,BL
      OUT 42H,AL
      MOV AL,BH
      OUT 42H,AL
;+++++++++++++++++++++
      IN AL,61H
      OR AL,03H
.....
2010-12-29 16:00
曲水流觞___
Rank: 1
来 自:郑州
等 级:新手上路
帖 子:15
专家分:8
注 册:2010-11-25
收藏
得分:0 
我这有个程序,不知道对你有用没

编写实模式应用程序:利用IN/OUT指令编写简单的音乐程序。运行时,当用户按下按键1-7,分别演奏音调dou,re,mi,fa,so,la,si
.model small
.data
table dw 2277,2138,1808,1709,1522,1356,1208,1139
    ;对应中音1 ~ 7和高音i的定时器记数值
    ;代码段
.code
.startup  
    mov al,0b6h   ;设置定时器2工作方式
    out 43h,al
again: mov ah,1    ;等待按键
    int 21h
    cmp al,'1'    ;判断是否为数字1~8
    jb next ;close the speaker
    cmp al,'8'
    ja next
    sub al,30h
    ;1~8的ASCII码转换为二进制数
    sub al,1
    ;再减1,将数字1~8变为0~7,以便查表
    xor ah,ah
    shl ax,1  ;乘以2
    mov bx,ax
    ;记数值表是16位数据,无法采用xlat指令
    mov ax,table[bx]    ;取出对应的记数值
    out 42h,al    ;设置定时器2的记数值
    mov al,ah
    out 42h,al
    in al,61h    ;打开扬声器声音
    or al,03h    ;使D1D0=PB1PB0=11b,其他位不变
    out 61h,al
    jmp again    ;连续发声,直到按下另一个键
next: push ax
    in al,61h    ;不是数字1~8,则关闭扬声器声音
    and al,0fch    ;使D1D0=PB1PB0=00b,其他位不变  
    out 61h,al
    pop ax
    cmp al,1bh    ;判断是否为ESC键(对应ASCII码1bh)
    jne again    ;不是ESC,继续;否则程序执行结束
.exit 0
2010-12-31 13:15
Alar30
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:10
帖 子:988
专家分:1627
注 册:2009-9-8
收藏
得分:0 
貌似这类型的从来没玩过哈
学习了
2010-12-31 16:48
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
收藏
得分:0 
这个音阶对应是怎么来的?
这样也可以把一首简单的歌曲让BEEP连续发出来。
有空要试一下。

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2010-12-31 22:50
快速回复:汇编 钢琴实验 要求键入1、2、3、4、5、6、7、8 得音 1、2、3、4、5、 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031561 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved