掌握8086输入输出程序的设计方法及调试过程。掌握计算机中定时器、中断、并行接口的使用,理解输入输出在计算机中的作用。
实验内容:
1. 设计一个能用键盘上不同按键发出不同频率声音的软件。
2. 编制一个能根据键盘的不同输入,演奏不同歌曲的程序。
<1>
;字母键Z/X/C/V/B/N/M分别发出低1—低7共 7个低音音符
;字母键A/S/D/F/G/H/J分别发出中1—中7共7个中音音符
;字母键Q/W/E/R/T/Y/U分别发出高1—高7共7个高音音符
;按回车键退出程序
ASSUME CS:CODE ,DS:DATA
DATA SEGMENT
;A 到Z 26个字母所对应的频率,其中0的只是填充位置,并不计入计算
HzInOrder DW 523,392,330,659,1318,698,784,880,0,988,0,0,494,440,0,0,1046,1397,587,1568,1967,349,1175,294,1760,262
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA ;将数据段的地址送AX
MOV DS,AX ;AX送入DS代码段
Lop:
MOV AH,8
INT 21H ;获取单个字符,隐藏输入
MOV AH,0
MOV SI,0
CMP Al,0DH ;如果是回车符则退出
JZ BREAK
CALL Judge ;判断输入是否合法,不合法则跳到循环开始部分
SUB Al,41H; 将读入数据与大写A对应的ASCII码做减法
MOV SI,AX
MOV AX,SI ;SI=SI*2
ADD SI,AX
MOV AX,0B6H
OUT 43H,AX ;初始化2号定时器
CALL DIVMOVE ;除法和输送数据
CALL MUSICON ;控制扬声器发声
CALL DELAY ;控制发声时间
CALL MUSICOFF ;取消发声
Loop Lop
<2>
;这是一个音乐程序
;按大写字母“A”,唱乐曲“成都”;
;按大写字母“B”,唱乐曲“因为刚好遇见你”
;按大写字母“C”,唱乐曲“祝福歌”
;按"Q"键,退出
DATA SEGMENT
INFO1 DB 0DH,0AH,'WELCOME YOU TO COME HERE!$'
INFO2 DB 0DH,0AH,'this is a music program!$'
INFO3 DB 0DH,0AH,'please select!$'
INFO4 DB 0DH,0AH,'INPUT ERROR!$'
INFO5 DB 0DH,0AH,'PLEASE INPUT AGAIN!$'
MUSLIST DB 0DH,0AH,'A MUSIC1'
DB 0DH,0AH,'B MUSIC2'
DB 0DH,0AH,'C MUSIC3'
DB 0DH,0AH,'Q EXIT'
db 0dh,0ah,'$'
MUS_FREG1
dw 262,262,262 ;频率表
dw 262,220,524,440,440,440,392
dw 392,330,330,262,294,262,262
dw 262,220,524,587,524,524,440
dw 440,392,330,392,294,262,247
dw 262,220,524,440,440,440,392
dw 392,392,330,392,294,262,294
dw 262,247,262,262,262,294
dw 330,294,262,262,247,262,262
dw -1
实验结果:
如果想要源码,请有偿私聊。