logo资料库

汇编语言与接口技术课程设计.doc

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
汇编课程设计报告 学生所在学院: 燕山大学信息学院 学生所在班级: _ 学 生 姓 名:________ ___ ____ 指 导 教 师:
课程设计(一) 一、设计题目:2 号乐曲程序 二、设计要求:利用定时器产生声音的方法编写程序,使 PC 机 奏出《两只老虎》的乐曲。 三、设计原理: 1.乐谱中的每个音符有音高和音长两种属性,按照乐谱把每个音符的 频率和节拍定义成两个数据表,程序从频率表中取出一个音符的频率值, 以产生一定音高的声音,同时取出相应的节拍计数值控制这一频率的声音 延长的时间。 2.每个音符的频率值 Freq 经过转化后送入定时器的 42H 端口,以产 生相应频率的脉冲。转换的公式为:533H*896/Freq=123280H/freq 3.节拍时间表中存放的计数值是音长的 1/10,如 2 拍的音长定为 0.5 秒,对应的计数值应为 50;一拍的音长是 0.25 秒,对应的计数值应为 25. 然后控制 100p 指令反复执行 2801*n 次来取得音符的延长时间(n 为音长所 对应的计数值) 4.乐曲演奏完后,同样要完成对 61H 端口的复位操作以避免死机。 四、程序设计: MY8254_COUNT0 EQU 0E440H MY8254_COUNT1 EQU 0E441H MY8254_COUNT2 EQU 0E442H EQU 0E443H MY8254_MODE
DATA SEGMENT FREQ_TABLE DW 2 DUP(262,294,330,262) DW 2 DUP(330,349,392) DW 2 DUP(392,440,392,349,330,262) DW 2 DUP(294,196,262),-1 TIME_TABLE DW 8 DUP(8) DW 2 DUP(8,8,16) DW 2 DUP(6,2,6,2,8,8) DW 2 DUP(8,8,16) STITLE DB 'NOW LET US PLAY:TWO TIGERS',0DH,0AH,'$' SIGN1 DB '1 ','$' SIGN2 DB '2 ','$' SIGN3 DB '3 ','$' SIGN4 DB '4 ','$' SIGN5 DB '5 ','$' SIGN6 DB '6 ','$' SIGN7 DB '5. ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: FREQ: MOV AX,DATA MOV DS,AX LEA SI,FREQ_TABLE LEA BP,DS:TIME_TABLE MOV AH,09H MOV DX,OFFSET STITLE INT 21H MOV DI,[SI] CMP DI,-1 JE EXIT MOV AH,09H MOV BX,DS:[BP] CMP DI,262 JNZ SIGN_2 MOV DX,OFFSET SIGN1 INT 21H SIGN_2: CMP DI,294
JNZ SIGN_3 MOV DX,OFFSET SIGN2 INT 21H CMP DI,330 JNZ SIGN_4 MOV DX,OFFSET SIGN3 INT 21H CMP DI,349 JNZ SIGN_5 MOV DX,OFFSET SIGN4 INT 21H CMP DI,392 JNZ SIGN_6 MOV DX,OFFSET SIGN5 INT 21H CMP DI,440 JNZ SIGN_7 MOV DX,OFFSET SIGN6 INT 21H CMP DI,196 JNZ SIGN_8 MOV DX,OFFSET SIGN7 INT 21H SIGN_3: SIGN_4: SIGN_5: SIGN_6: SIGN_7: SIGN_8: CALL DO_SOUND ADD SI,2 ADD BP,2 JMP FREQ EXIT: MOV AH,4CH INT 21H DO_SOUND PROC NEAR PUSH AX PUSH BX PUSH DX
PUSH DI MOV DX,MY8254_MODE MOV AL,36H OUT DX,AL MOV DX,0FH MOV AX,4240H DIV DI MOV DX,MY8254_COUNT0 OUT DX,AL MOV AL,AH OUT DX,AL IN AL,61H MOV AH,AL OR AL,3 OUT 61H,AL CALL DELAY MOV AL,AH OUT 61H,AL POP DI POP DX POP BX POP AX RET DO_SOUND ENDP DELAY PROC NEAR PUSH AX START1: MOV CX,2801 START2: IN AL,61H AND AL,10H CMP AL,AH JE START2 MOV AH,AL LOOP START2 DEC BX JNZ START1 POP AX RET DELAY ENDP
CODE ENDS END START 五、运行结果 编译并连接程序,打开实验箱,运行程序,演奏出两只老虎乐曲。
课程设计(二) 一、设计题目:光标轨迹程序 drawb 二、设计要求:程序能在屏幕上画出光标移动的轨迹,画城墙、水平线 等图,光标的移动受键盘上光标键的控制,如果键入 escape 键,则程序结 束,返回 dos 三、设计原理: 1:本科设使用的是图形方式利用像素来生成彩色图形 2:使用了描绘像素点的 BIOS 功能,写像素点所需要的调用参数行变量和 列变量分别保留在 DX 和 CX 寄存器中,一开始先把 DX 和 CX 置在屏幕的中 央,当按动一个光标控制键时,寄存器 DX 和 CX 中的值会改变,当按动↑ 键时,DX 的值减 1,当按动↓键时,DX 的值加 1,当按动←键时,CX 减 1, 当按动→键时,CX 加 1,这样由 CX 和 DX 的值决定了写点的坐标位置。写 点的彩色值(像素值)由数字键 0-3 决定,其 0-3 的值保留在 BL 中,在调 用写点功能时,再传送给 AL。在光标控制键的指引下,我们可以画出任何 我们想画的图形。 四、程序设计: EQU 48H UP EQU 50H DOWN LEFT EQU 4BH RIGHT EQU 4DH ESC EQU 1BH CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE;,DS:DATA START: PUSH DS SUB AX,AX PUSH AX MOV AH,6 MOV AL,0 MOV CX,0 MOV DL,79 MOV DH,24
INT 10H MOV AH,0 MOV AL,04H INT 10H MOV AH,0BH MOV BH,0 MOV BL,0H INT 10H MOV AH,0BH MOV BH,1 MOV BL,0 INT 10H MOV DX,100D MOV CX,160D GET_CHAR:MOV AH,0 INT 16H CMP AL,35H JZ CHANGE1 CMP AL,34H JZ CHANGE0 CMP AL,ESC JZ EXIT CMP AL,33H JG PLOT CMP AL,30H JL PLOT MOV BL,AL AND BL,03 JMP GET_CHAR PLOT:MOV AL,AH CMP AL,UP
分享到:
收藏