1、微机原理与接口课程设计引言21世纪是信息技术高度发展且得到广泛应用的时代,信息技术从多方面改变着人类的生活、工作和思维方式。我们每一个人都应当学习信息技术、应用信息技术。微型计算机原理与接口技术是我们计算机科学与技术专业重要的一门基础专业课之一,要求我们有较强的自学能力和分析解决问题的能力以及实际动手能力,其作用是为了培养学生善于用计算机作为工具。通过课程设计掌握汇编语言的编程、调试,通过对芯片的学习,初步了解微机应用系统的开发过程及设计过程。长期以来,注重课本知识,轻视实际动手能力是我们学习中普遍从在的现象。进行课程设计的目的就是要改变我们的这种学习方法,使我们即具备了理论知识,也能够解决实
2、际学习,生活工作方面遇到的问题。让我门把理论用到了实际中去,将知识变成实际的生产力,把理论与实际有效的结合起来,让我们对知识有了更深一步的学习。也促进了我们的学习积极心。也做到了手与脑的有效结合。通过课程设计,也可以让我们对所学的知识有了更一步的了解,并能掌握学习理论时没有注意的细节。也会意识到程序的编写要注意没一个细节,每一个空格等,并能通过调试寻找错误,改正错误,解决问题。计算机课程有两种不同的方法:一是从理论入手;二是从实际入手。中国有上下五千年的历史,都是应用时间来记载的,时间就是金钱,所以就从我们的生活和实际出发,我们的每件事,每个计划或是事件的安排都会受到时间的限制,而这次的课程设
3、计也就是我们日常生活中处处注意的,一个有关时间的问题。目录引言 11. 概述 31.1 课程设计的目的 31.2 课程设计的任务 31.3 设计的题目 31.4 设计要求 32.总体方案设计 42.1 主程序设计思想 42.2 设计原理说明 42.3 设计应用的环境 43. 系统分析 44. 软件设计 54.1 程序流程图 54.2程序源代码 65. 系统调试 165.1 显示系统时间 165.2 按B键修改年月日 165.3 按C键修改具体时间 176. 设计总结 177. 参考文献 171. 概述1.1 课程设计的目的对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、
4、书面及口头表达能力进行考核。汇编语言程序设计课程设计是在教学实践基础上进行的一次大型实验,也是对该课程所学理论知识的深化和提高。因此,要求学生能综合应用所学知识,设计与制造出具有较复杂功能的应用系统,并且在实验的基本技能方面上进行一次全面的训练。培养学生综合运用所学知识独立完成汇编程序课题的能力。使学生能够较全面地巩固和应用课堂中所学的基本理论和程序设计方法,能够较熟练地完成汇编语言程序的设计和调试。提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。培养
5、学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。1.2 课程设计的任务通过微型计算机原理与接口技术的课程设计可以让我们学生更深一步的了解课本知识,掌握编译器的编译环境,从而能对自己所写的编程进行不断的改进,最终达到我们想要的结果。课程设计不但培养了我们的动手能力,还激发了我门对课外知识的兴趣,我们可以从图书馆,找到相关的书籍进行学习,也可以上网查阅到我们想要的东西。学到我们在书本上学不到的东西,从而开阔我们的视野。1.3 设计的题目用汇编语言编写一个时钟程序,再微机屏幕上显示当前时间的年、月、日、时、分、秒。在程序起动后可键入当前时间,回
6、车键按下后,开始计时,微机屏幕上显示当前时间XXXX年XX月XX日XX时XX分XX秒。并且可以进行对时间的修改等操作。1.4 设计要求(1)了解并掌握汇编语言设计的一般方法,具备初步的独立分析的设计能力; (2)初步掌握软件开发过程的问题分析、系统分析、程序编码、测试运行等基本方法和能力;(3)提高综合运用所学的理论知识和方法独立分析和解决问题的能力。(4)最后掌握用汇编语言编写程序,画出程序流程图,对程序进行调试。2.总体方案设计2.1 主程序设计思想此设计程序要求结构化的显示系统的时间和日期。程序要求能对时间的年月日和时分秒进行修改并有退出选项的功能。我们可以设计三个选项以供用户选择:B对
7、年月日进行修改, C对时分秒进行修改和Esc退出程序。三个选项分别可以用三个过程实现其功能。2.2 设计原理说明(1)日期时间显示先在数据端开一段显示缓冲区,用来存储系统时间。调用DOS中断,得到系统当前时间,并将其二进制转换成ASCII码。再分别将小时数、分钟数、秒数存入显示缓冲区。(2)日期时间修改在修改时间的时候调用键盘输入输出程序实现日期时钟的修改功能,然后存入结束字符$。调用DOS字符串显示功能将日期时间显示在显示器上,调用屏幕的I/O中断,定位光标的开始位置,将时间显示在预先定义好的位置。(3)延时程序把程序设计成用刷新的方式来不断获取系统的时间,这样就有了会一秒一秒走动的电子时钟
8、。在此过程需要用到延时程序,所以我们把延时程序单独做成一个子程序,然后在需要的时候调用它,使得时间的显示程序更加精炼。2.3 设计应用的环境硬件环境:PC机。软件环境:Masm2009。3. 系统分析看时间已经是我们每天都在干的事情,而且我们身边的电子表,时钟表,手表等都用了不同的方式在显示着时间,这次的课程设计正是我们身边这些时间显示的结合,我们既可以看着它走动,也可以对它进行修改,并且它显示的时间与我们的电脑是同步的,当然你改动它的值,电脑上的时间也会改动。所以这个设计对我来说是意义很大的。它既用到了我们微机原理所学的知识,也用到了编译器中涉及到的知识,既可以让我们看见它的实质,也可以从中
9、学到很多编译方面的知识,为我们以后的学习打下了基础。有了一个小小的设计,我们就会迈进一大步,了解更深的知识。此次设计也用到了DOS系统方面的知识,让我门对知识有了多角度的认识。4. 软件设计4.1 程序流程图4.2程序源代码DATA SEGMENTTN DB PLEASE INPUT THE NEW TIME (HH:MM:SS): ,0DH,0AH,$ ;提示输入时间的格式TB DB PLEASE INPUT THE NEW DATE (YYYY:MM:DD): ,0DH,0AH,$ ; 提示输入日期的格式MESS DB TIME IS: ,0AH,0DH,$T_BUFF DB 40 ;在数
10、据段开一段时间显示缓冲区 T_BUFF为名字 DB ? DB 40 DUP (?)YEAR DW ? ;年MON DB ? ;月DAY DB ? ;日HOR DB ? ;小时MIN DB ? ;分钟SEC DB ? ;秒DATA ENDSSTACK SEGMENT STACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE , SS:STACK , DS:DATA ; 确定各个逻辑段的类型START:DISPLAY: ;时间显示部分 MOV AX, SEG DATA MOV DS , AX MOV AX,STACK MOV SS,AX MO
11、V BX , OFFSET T_BUFF ; 送T_BUFF的偏移地址到BXMOV AH , 2AH ; 调用DOS时间调用功能,功能号:2AH,年,月,日分别保存在CX,DH,DL中 INT 21H MOV AX,CX ; 年设定 CALL BCTD ; 调用进制转换子程序 PUSH AX AND AH,0F0H ; 选取AH高四位 MOV CL,4 ; 设置右循环的次数 ROL AH,CL ; 右循环 OR AH,30H ; 加30H得到ACSII码 MOV BX,AH ; 将得到的结果送到T_BUFF缓冲区 INC BX ; BX自加1,指针指向下一个缓冲区的下一个地址 POP AX A
12、ND AH,0FH ; 选取低四位 OR AH,30H MOV BX,AH ; 将转换后的低四位值送入缓冲区的第二个地址 INC BX PUSH AX AND AL,0F0H ; 选取AL高四位 MOV CL,4 ; 设置右循环的次数 ROL AL,CL ; 右循环 OR AL,30H ; 加30H得到ACSII码 MOV BX,AL ; 将得到的结果送到T_BUFF缓冲区 INC BX ; BX自加1,指针指向下一个缓冲区的下一个地址 POP AX AND AL,0FH ; 选取低四位 OR AL,30H MOV BX,AL ; 将转换后的低四位值送入缓冲区的第二个地址 INC BX ;-
13、MOV AL , : ;显示分隔符号 MOV BX , AL INC BX;- MOV AH , 2AH INT 21H MOV AL,DH ;月设定 MOV AH,0 CALL BCTD PUSH AX AND AL,0F0H MOV CL,4 ROL AL,CL OR AL,30H MOV BX,AL INC BX POP AX AND AL,0FH OR AL,30H MOV BX,AL INC BX;- MOV AL , : ;显示分隔符号 MOV BX , AL INC BX;- MOV AH,2AH ;日设定 INT 21H MOV AL,DL MOV AH,0 CALL BCTD
14、 PUSH AX AND AL,0F0H MOV CL,4 ROL AL,CL OR AL,30H MOV BX,AL INC BX POP AX AND AL,0FH OR AL,30H MOV BX,AL INC BX;- MOV AL , / ;显示分隔符号 MOV BX , AL INC BX ;- MOV AH , 2CH ; 调用DOS时间调用功能,功能号:2CH,小时,分钟,秒数分别保存在CH,CL,DH中 INT 21H MOV AL,CH ; 小时数设定 MOV AH,0 CALL BCTD ; 调用进制转换子程序 PUSH AX AND AL,0F0H ; 选取AL高四位
15、MOV CL,4 ; 设置右循环的次数 ROL AL,CL ; 右循环 OR AL,30H ; 加30H得到ACSII码 MOV BX,AL ; 将得到的结果送到T_BUFF缓冲区 INC BX ; BX自加1,指针指向下一个缓冲区的下一个地址 POP AX AND AL,0FH ; 选取低四位 OR AL,30H MOV BX,AL ; 将转换后的低四位值送入缓冲区的第二个地址 INC BX;- MOV AL , : ;显示分隔符号 MOV BX , AL INC BX ;- MOV AH , 2CH INT 21H MOV AL,CL ;分钟数设定 MOV AH,0 CALL BCTD P
16、USH AX AND AL,0F0H MOV CL,4 ROL AL,CL OR AL,30H MOV BX,AL INC BX POP AX AND AL,0FH OR AL,30H MOV BX,AL INC BX;- MOV AL , : ;显示分隔符号 MOV BX , AL INC BX;- MOV AH,2CH ;秒设定 INT 21H MOV AL,DH MOV AH,0 CALL BCTD PUSH AX AND AL,0F0H MOV CL,4 ROL AL,CL OR AL,30H MOV BX,AL INC BX POP AX AND AL,0FH OR AL,30H M
17、OV BX,AL INC BX ;- MOV AL , $ ;将字符串的结束位送至显示缓冲区的最后一位 MOV BX , AL ;- PUSH BX ;置光标位置 ,AH=2,BH=0 DH跟DL分别为行号与列号,并入栈保护BX MOV AH,2 MOV BH,0 MOV DH,10 MOV DL,31 INT 10H POP BX LEA DX,T_BUFF ; 送T_BUFF偏移地址到DX,并调用DOS显示功能,功能号为9 MOV AH , 9 INT 21H PUSH BX ;置光标位置 MOV AH,2 MOV BH,0 MOV DH,10 MOV DL,21 INT 10H POP
18、BX LEA DX,MESS MOV AH,9 INT 21H ;- CALL DELAY1 ;调用精确延时子程序 MOV AH,1 ;调用键盘I/O中断功能号1,获取键值到AL INT 16H CMP AL, B ; 是B键,转到日期修改程序 JE BORRECT CMP AL, B ; 是B键,转到日期修改程序 JE BORRECT CMP AL,C ;是C键,转到时间修改程序 JE CORRECT CMP AL,C ;是C键,转到时间修改程序 JE CORRECT CMP AL,1BH JZ QUIT ;是ESC键,退出程序 JMP DISPLAY QUIT: MOV AH,4CH ;程
19、序终止功能号 INT 21H RET ;-二进制转BCD码子程序-BCTD PROC NEAR ;AX输入参数 ;AX输出参数,存放调整过的BCD码 MOV DX,AX MOV AX,0 MOV CX,16 ;设循环次数BCTD1: CLC ;清进位标志C RCL DX,1 ;通过进位的循环右移 ADC AL,AL ;带进位加法 DAA ;加法的十进制调整 XCHG AL,AH ;交换高、低八位 ADC AL,AL DAA XCHG AL,AH LOOP BCTD1 ;循环次数保存在CX里 RETBCTD ENDP;-精确延迟时间子程序-DELAY1 PROC MOV DX,04FFH ;循环
20、次数UP: XOR CX,CXA: NOP LOOP A DEC DX JNZ UP RETDELAY1 ENDP;-时间修改子程序- CORRECT PROC CALL INPUT ;调用键盘输入子程序输入数据 MOV CH,HOR MOV CL,MIN MOV DH,SEC AND DL,0H MOV AH,2DH INT 21H JMP START RET CORRECT ENDP;-键盘输入子程序- INPUT PROC PUSH AX ;入栈保护数据 PUSH BX PUSH CX PUSH DX PUSHFMOV DX,OFFSET TN ;显示修改时间的格式提示MOV AH,09
21、HINT 21HMOV DX , OFFSET T_BUFF ;数据缓冲区的数据输入MOV AH,0AHINT 21HAND DX,0HLEA BX,T_BUFFINC BXINC BXMOV DH,BXSUB DH,30HINC BXMOV DL,BXSUB DL,30HMOV CL,10MOV AL,DHMUL CLADD AL,DLMOV CH,ALMOV HOR,ALINC BXINC BXMOV DH,BXSUB DH,30HINC BXMOV DL,BXSUB DL,30HMOV CL,10MOV AL,DHMUL CLADD AL,DLMOV CL,ALMOV MIN,ALINC
22、 BXINC BXMOV DH,BXSUB DH,30HINC BXMOV DL,BXSUB DL,30HMOV CL,10MOV AL,DHMUL CLADD AL,DLMOV DH,ALMOV SEC,ALPOPF ;出栈恢复数据POP DX POP CXPOP BXPOP AXRETINPUT ENDP;-日期修改子程序- BORRECT PROC CALL INPUT2 ;调用键盘输入子程序输入数据 MOV CX,YEAR MOV DH,MON MOV DL,DAY MOV AH,2BH INT 21H JMP START RET BORRECT ENDP;-键盘输入子程序- INPU
23、T2 PROC PUSH AX ;入栈保护数据 PUSH BX PUSH CX PUSH DX PUSHFMOV DX,OFFSET TB ;显示修改日期的格式提示MOV AH,09HINT 21HMOV DX , OFFSET T_BUFF ;数据缓冲区的数据输入MOV AH,0AHINT 21HAND DX,0HLEA BX,T_BUFFINC BXINC BXMOV DH,BXSUB DH,30HINC BXMOV DL,BXSUB DL,30HMOV CL,10MOV AL,DHMUL CLADD AL,DLMOV AH,00HMOV CX,100MUL CXMOV YEAR,AXMO
24、V AX,00HINC BXMOV DH,BXSUB DH,30HINC BXMOV DL,BXSUB DL,30HMOV CL,10MOV AL,DHMUL CLADD AL,DLADD YEAR,AXINC BXINC BXMOV DH,BXSUB DH,30HINC BXMOV DL,BXSUB DL,30HMOV CL,10MOV AL,DHMUL CLADD AL,DLMOV MON,ALINC BXINC BXMOV DH,BXSUB DH,30HINC BXMOV DL,BXSUB DL,30HMOV CL,10MOV AL,DHMUL CLADD AL,DLMOV DAY,AL
25、POPF ;出栈恢复数据POP DX POP CXPOP BXPOP AXRETINPUT2 ENDP;-CODE ENDS END START5. 系统调试5.1 显示系统时间5.2 按B键修改年月日说明:修改日期时,必须将B消除掉,才能按正确的格式修改日期。然后按下Enter键,系统会保存已修改好的值。输入的格式为xxxx xx xx,要有空格。5.3 按C键修改具体时间说明:修改时间时,也要消除C然后输入正确的格式对时间进行修改。按下enter键自动保存时间。输入的格式同上。6. 设计总结 为期一周的微机原理课程设计结束了,回想起这一周的课程设计,颇有一些感慨。此次课程设计的题目对我来说
26、并不简单,由于汇编知识的匮乏,在前面几天的时间基本上是把微机原理与接口技术上的例题看懂,同时查找一些关于汇编知识的书籍,逐渐才摸索出编写时钟程序设计的思路以及程序模块的具体编写。尽管这一周的课程设计时间短暂并且困难重重,但是在解决困难的同时我也学到了许多课堂上学不到的东西。在整个设计过程中,我不但查阅了一些相关的资料,还得到了老师和同学们的帮助,无论在理论和实践能力都得到了很大锻炼,不但使我学到了很多知识,还促使我能深入独立思考一些问题,这对我以后的学习和工作有很大的益处。当然由于时间仓促,加上我的编写水平有限,这次课程设计也有很多有待改进及完善的地方,还请老师指正,在以后的时间里我会进一步进行学习和完善。7. 参考文献(1)谭浩强主编的微型计算机原理与接口技术(第三版)中国铁道出版社;(2)雷印胜、贾萍、胡晓鹏等主编的汇编语言程序设计教程科学出版社;(3)詹仁华主编的汇编语言程序设计习题解答及课程实验、设计辅导中国电力出版社;(4)郑初华主编的汇编语言、微机原理及接口技术(第二版)电子工业出版社;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1