《微机原理课程设计指导书.doc》由会员分享,可在线阅读,更多相关《微机原理课程设计指导书.doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、微机原理课程设计指导书东华大学信息学院自动化系2014年9月1日一、课程设计目的本课程设计是继微机系统及应用、微机系统及应用实验课程之后的一次综合性设计、实验训练。根据微机系统及应用课程教学的重点和主要知识点及工程实际需要,设置汇编语言程序设计、PC机内部接口和8086系统接口电路设计等设计题目。要求学生综合本课程和其它相关课程中学到的80X86系统结构、汇编语言设计、典型接口芯片、电路电子技术等相关知识进行程序设计、硬件接口电路设计和调试,系统地掌握微机原理和接口技术的相关知识,实现知识的融会贯通。要求学生通过1.5周的学习,提高设计汇编语言程序的能力和技巧,培养实现一个简单应用系统功能的硬
2、件软件设计能力。二、课程设计内容一)汇编语言程序设计及调试1 PC机实时时钟的设计利用PC机现有的硬件和软件资源设计程序,以实现在显示器上显示XX(时):XX(分):XX(秒)。(1)设计思路PC机系统板上使用一片8253,其地址为40H43H,其通道0以方式3工作,每55ms向中断控制器8259A IRQ0端发一次中断请求。本设计题要求借用原有电路,重新设置8253的计数器0每10ms产生一次中断,100次中断后加1秒,然后调整时、分、秒并显示在屏幕上。 (2) 实时时钟的功能按下任意键开始显示数据区中存放的时间值,并且每秒更新一次,运行中按下空格键则停止运行并返回DOS。程序中应保护原系统
3、的08H中断矢量以便退出时恢复原系统的设置。 (3) 题目的要求 PC机实时时钟的基本程序如附录一,请根据中断服务程序设计时钟时、分、秒调整的中断报务程序,然后调试实现时钟的基本功能 在原有程序基础上,增加键盘输入字符功能,可通过修改时、分、秒的数据,实现实时时钟可调整功能。 在原有程序基础上,设计美观的时钟显示方式及友好的操作方式。2 光条式菜单程序设计一个多功能的软件通常以菜单为程序界面,用户可以通过菜单直观地选择各项功能。(1)设计思路 用汇编语言设计的菜单程序应主要包括3项内容:设计界面要求美观清晰,操作简便,菜单项简洁可用一行表示。 菜单项选择利用“色带”选择菜单项。色带是颜色鲜明的
4、条形光带,可以覆盖一个菜单项,用户利用“”、“”、“”、“”键移动色带位置,然后按下回车键,被色带覆盖的菜单项就被选中。 菜单项程序的组织和调用菜单项较多时,可为每一个菜单项设计一个独立的菜单项程序,采用JMP、CALL指令调用程序段;菜单项较少时,不必为第一个菜单项设计一个独立的程序,此时界面显示、菜单项选择和菜单项程序可包含在一个程序中。(2)关键技术定位显示彩色字符串利用BIOS中的INT 10H的13H号功能可以设计一个定位显示彩色字符串的程序段调用:AH=13H,AL=写方式 :0 属性在BL中,字符串中仅含字符码,写后光标位置不被修改 1 属性在BL中,字符串中仅含字符码,写后修改
5、光标位置; BH=页; BL=待显字符串的属性,07H表示正常显示,0FH表示黑底白字,51H 表示品红色背景蓝色字符串 CX=待显字符串的长度; DH=待显字符串首字符的行值 DL=待显字符中首字符的列值 BP=待显字符串首字符在附加段的偏移地址行值 色带的生成和移动 在调用上一个字符显示程序时,将待显字符串的属性设为51H,色带就生成;设为0FH时,色带就消失。使当前色带消失,然后在下一个位置上生成色带,就达到色带的移动。 设置一个NN单元 存放色带的位置,NN单元的内容跟踪色带位置的变化。利用NN单元的值可以计算出色带位置的行号和色带覆盖菜单项字符的偏移地址。 (3)题目要求 单级菜单程
6、序见附录二,调试程序并分析程序以理解程序的功能。 在原有程序的基础上,设计程序实现二级菜单功能。3 波形显示程序设计 试利用PC机显示器软件中断(INT 10H)功能(VGA模式640*480),设计一个波形显示程序。显示器水平方向为时间轴,垂直方向为信号幅度。测试信号为正弦波信号和三角波信号。要求:基本要求: 能显示正弦波波形和三角波形(50Hz)。扩展:在基本要求基础上,能通过键盘实现时间刻度可变,信号增益可变,界面友好、操作方便。 4 四则混合运算器设计要求:设计一个可以进行2位数四则运算的计算器。1)、用按键输入数和运算符号(表达式最多两个运算符,如3*2+4);2)、在显示器上运算结
7、果(十进制数);3)、具有清零和复位功能;4)、具有连续运算功能。要求有美观的显示界面和友好的操作方式。5 图形切换要求以菜单方式进行选择,有四种情况。按下1显示一个圆;按下2显示一个三角形;按下3显示一个矩形;按下q,退出。要求能输入各种图形的几何尺寸、显示位置;图形显示美观、操作界面友好。6 键盘练习程序随机出现一个不少于30个字符ASCII字符串,按空格键开始输入,如果输入的字符及原字符不相符,则用不同颜色标记,并统计出相同和不相同字符的个数及百分比(整数)。要求显示美观,操作界面友好。7 打铃程序设计利用系统时钟,按本校作息时间设计打铃程序。每天有8节课:第1,2节课8:15-9:45
8、第3,4节课10:05-11:35第5,6节课13:00-14:30第7,8节课 14:50-16:20铃声用PC机蜂鸣器代替,并在显示器上显示相关信息;可以用键盘调节作息时间。要求显示美观,操作界面友好。8 图形移动和旋转图形的移动旋转可以分几步进行:(1)先在屏幕上显示某个图形(自定义图形);(2)延时适当时间;(3)清除这个图形;(4)改变图形显示的行列坐标及倾角(5)返回第(1)步,重复上述过程。按下回车结束。 可自定义上、下、左、右移动键及顺时针、逆时针旋转键,还可以直接给出移动坐标、旋转角度等。要求显示美观,操作界面友好。9. 加、减、乘、除练习器随机生成一个加、减、乘、除算式(一
9、个算式只含一个算符),由键盘输入结果。显示运算正确或错误的信息,显示正确或错误统计信息。要求显示美观,操作界面友好。 (本题及第4题相仿。)10. 代码转换 完成一个字母或数制之间的转化程序,主程序分别具有5种可选择的子功能,按相应的字符可分别进入相应的子功能并在屏幕上显示结果,按“q”键退出。5种可选择的子功能分别为: 1)实现小写字母向大写字母的转换 2)实现大写字母向小写字母的转换3)实现二进制数向十六进制数的转换 4)实现十六进制数向二进制数的转换5)实现十六进制数向十进制数的转换要求显示美观,操作界面友好。二) 微机系统硬件实验(另附指导书)三、课程设计要求要求每位同学独立完成课完成
10、一个汇编语言程序的设计和调试,完成硬件实验。汇编语言程序必须实现基本功能,在基本功能基础上要有所发挥,力求创新。 (按学号选择1-10题, 学号末位数为1,选第1题; .; 末位数9, 选第9题;末位数0, 选第10题。)四、参考资料 1 杨素行编 微型计算机系统原理及应用,清华大学出版社2 吴宁主编 80X86/Pentium微型计算机原理及应用,电子工业出版社 3 孙德文主编 微型计算机技术,高等教育出版社 4 沈美明编 IBM-PC汇编语言程序设计,清华大学出版社五、考核 1 集中上机调试时间执行严格的考勤制度2 上机实考3 设计报告4 程序运行验证(提交*.asm文档)。注:独立按时完
11、成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩按不及格计。如发现程序或者课程设计报告雷同,一律记不及格。 可以合理引用搜到的程序和文献(做好引用标记,给出参考文献出处),但必须要在此基础上有提高和创新。六、设计报告(须手写,打印无效)一般,设计报告应包括如下内容:1、所完成课程设计的题目、内容、功能2、设计思想、原理,模块的划分,程序的流程框图3、每个程序中,所使用的DOS/BIOS功能调用,宏库文件列表清单; 如涉及硬件编程,介绍相应的工作原理4、程序源代码及注释。5、调试过程,出现的问题及解决,运行结果,运行说明(必须附程序运行时的屏幕截图)。6、硬件工作原理分析,硬件电路接线
12、图,相应的工作程序。7、课程设计总结及展望。8、参考文献七、提交及报告相对应的源程序文件(XXX.asm文件)(通过邮箱发送,注明学号、题号、姓名)附录一STACK segment para stack stack db 256 dup (0)stack endsdata segment para public datacount db 100tenh db 1hour db 3,20htenm db 1minute db 0 db :tens db 5second db 0,0dh,$data endscode segment para public codestart proc far a
13、ssume cs:code push ds xor ax,ax push ax mov ah,01 int 21h cli cld mov ax,0000h mov ds,ax mov si,0020h lodsw mov bx,ax lodsw push ax;seg push bx;offset mov ax,data mov ds,ax assume ds:data mov ax,0000h mov es,ax mov di,0020h mov ax,offset timer stosw mov ax,cs stosw mov al,00110110b out 43h,al mov ax
14、,11932 out 40h,al mov al,ah out 40h,al in al,21h push ax mov al,0fch stiforever: mov dl,0ffh mov ah,06 int 21h jz disp cmp al,20h jz exitdisp:mov dx,offset tenh mov ah,9 int 21h mov al,secondwaitcha: cmp al,second jz waitcha jmp foreverexit: cli cld pop ax out 21h,ax mov al,36h out 43h,al mov al,0 o
15、ut 40h,al out 40h,al mov ax,0 mov es,ax mov di,4*8 pop ax stosw pop ax stosw sti retstart endptimer:push ax push cx sti mov al,count dec al mov count,al jnz int_ret mov count,100 mov al,second add al,1 aaa mov second,al jnc int_ret mov al,tens adc al,0 aaa and al,0fh mov tens,al cmp al,6 jnz int_ret
16、 mov al,0 mov tens,al mov al,minute add al,1 aaa mov minute,al jnc int_ret mov al,tenm adc al,0 aaa and al,0fh mov tenm,al cmp al,6 jnz int_ret mov al,0 mov tenm,al mov al,tenh mov cl,4 shl al,cl mov cl,al mov al,hour and al,0fh or al,cl add al,1 daa cmp al,24h jz reseth mov ch,al mov cl,4 shr al,cl
17、 or al,30h mov tenh,al mov al,ch and al,0fh or al,30h mov hour,al jmp int_retreseth: mov tenh,0 mov hour,0int_ret: mov al,second and al,0fh or al,30h mov second,al mov al,tens and al,0fh or al,30h mov tens,al mov al,tenm and al,0fh or al,30h mov tenm,al mov al,minute and al,0fh or al,30h mov minute,
18、al cli mov al,20h out 20h,al pop cx pop ax iretcode ends end start附录二stack segment para stack stack db 256 dup(0)stack endsdisp macro x,length,color mov ax,1301h mov bx,color mov cx,length mov dh,yy mov dl,x mov bp,addr int 10h endmdata segmentl0 db MENU l1 db =l2 db | EXAMPLE_1 l3 db | EXAMPLE_2 l4
19、 db | EXAMPLE_3 l5 db | RETURN l6 db =LL EQU $-l6XX equ (80-ll)/2yy db ?nn dw 1tab dw ?,l2,l3,l4,l5addr dw ?data endscode segment assume cs:code,ds:data,es:databeg: mov ax,data mov ds,ax mov es,ax mov ax,3 int 10h mov yy,8mov addr,offset l0last2: disp xx,ll,0fh add addr,ll inc yy cmp yy,15 jl last2
20、mov nn,1 call compute disp xx+3,ll-6,51hscan: mov ah,1 int 16h jz scan mov ah,0 int 16h cmp ah,80 je down cmp ah,72 je up cmp al,0dh je exit jmp scandown: cmp nn,4 je scan call compute disp xx+3,ll-6,0fh inc nn call compute disp xx+3,ll-6,51h jmp scanup: cmp nn,1 je scan call compute disp xx+3,ll-6,0fh dec nn call compute disp xx+3,ll-6,51h jmp scanexit: mov al,byte ptr nn mov ah,4ch int 21hcompute proc near mov di,nn add di,di mov ax,tabdi add ax,3 mov addr,ax mov al,byte ptr nn add al,9 mov yy,al retcompute endpcode ends end beg