课程设计报告.docx

上传人:b****5 文档编号:8639521 上传时间:2023-02-01 格式:DOCX 页数:14 大小:134.71KB
下载 相关 举报
课程设计报告.docx_第1页
第1页 / 共14页
课程设计报告.docx_第2页
第2页 / 共14页
课程设计报告.docx_第3页
第3页 / 共14页
课程设计报告.docx_第4页
第4页 / 共14页
课程设计报告.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

课程设计报告.docx

《课程设计报告.docx》由会员分享,可在线阅读,更多相关《课程设计报告.docx(14页珍藏版)》请在冰豆网上搜索。

课程设计报告.docx

课程设计报告

微机原理与接口技术

课程设计报告

 

设计题目:

系统时间显示

系别:

年级专业:

学号:

学生姓名:

指导教师:

 

引言

汇编语言(AssemblyLanguage)是面向机器的程序设计语。

在汇编语合中,用助记符(Mnemonic)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。

这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。

于是汇编语言亦称为符号语言。

使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。

汇编程序把汇编语言翻译成机器语言的过程称为汇编。

 

目录

摘要4

1微机原理课程设计任务及要求5

1.1主要内容及目标5

1.2具有的设计条件5

1.3计划学生数及任务5

1.4计划设计进程5

2总体方案设计6

2.1整体设计思想6

2.2任务分配6

2.3时间安排6

3详细设计6

3.1DOS功能调用6

3.2程序编程8

4程序流程图11

4.1程序流程11

4.2程序显示界面12

5程序调试12

6实验结果分析12

7设计过程与总结13

8附源程序14

9参考资料15

摘要

本文的主要内容是介绍用汇编语言(8086/DOS)实现一个显示系统时间的程序,屏幕中间显示系统时间,本文中的电子时钟还可以用键盘输入的方法修改当前的时间,以便在界面上显示正确的时间。

在设计过程中,首先是按照题目所给的具体要求,根据自己的设计思路,画出流程图,然后查阅相关资料,写出流程图中的各段子程序,把子程序放在心研集成环境中进行调试,找出程序中的错误,并进行修改和不断完善,以得到符合要求的程序。

有了这些子程序后,我们就可以根据要求写出源程序,但在写源程序的过程中遇到了很多困难,经过反复调试跟修改,最终得到了符合要求的源程序。

Abstract

Themaincontentofthisarticleistointroducetheuseofassemblylanguage(8086/DOS)timetoachieveadisplaysystemprogram,middleofthescreendisplaysthesystemtimeclockinthisarticlecanalsousetheelectronicmethodofkeyboardinputtomodifythecurrenttimetodisplayintheinterfacethecorrecttime.Inthedesignprocess,thefirsttitlegiveninaccordancewiththespecificrequirements,accordingtotheirowndesignideas,drawflowchart,andthenaccesstorelevantinformation,writethescriptsintheprocessflowdiagram,theroutineintegrationoftheenvironmentontheheartstudydebugging,tofindbugsintheprogramandmakechangesandcontinuetoimprove,togettomeettherequirementsoftheprogram.Withtheseroutines,wecanwritethesourcecodeonrequest,butintheprocessofwritingthesourceprogramencounteredmanydifficultieswiththechangesafterrepeatedtesting,andultimatelygettomeettherequirementsofthesource.

 

1微机原理课程设计任务及要求

1.1主要内容及目标

设计一个时间显示系统,运行时,在屏幕的右上角以“时:

分:

秒”的形式显示出来。

1.2具有的设计条件

PC机一台,EL教学实验箱一台及汇编程序。

1.3计划学生数及任务

(1):

明确课题对程序功能及硬件条件

(2):

把复杂问题分解为若干模块,确定各模块处理方法,画出流程图。

(3):

存储器资源分配

(4):

编制程序,根据流程图精心选择合适的指令和寻址方式来编制源程序

(5):

对程序进行汇编,调试和修改,直到程序运行结果正确为止。

1.4计划设计进程

第一周设计任务:

(1):

明确课题对程序功能,运算精度等方面的要求及硬件条件

(2):

把复杂问题分解为若干模块,确定各模块处理方法,画出流程图。

(3):

存储器资源分配

第二周设计任务:

(4):

编制程序,根据流程图精心选择合适的指令和寻址方式来编制源序

(5):

对程序进行汇编,调试和修改,直到程序运行结果正确为止。

2总体方案设计

2.1整体设计思想

此程序要求结构化的显示系统时间。

程序要求能多次执行以上两种操作并有退出选项。

则我们可以设计两个选项以供用户选择:

system和q退出程序。

两个选项分别可以用两个过程实现其功能。

在DOS环境下完成,必须用到的DOS功能调用;取当前系统时间:

功能号为2CH,返回值送入CX,DX寄存器中;在转换为ASCII码显示出来。

2.2任务分配

小组成员共三位,任务分别为:

了解并利用DOS功能调用;模块程序的编写;程序流程图的设计。

最后汇总编写完整程序,并上机调试运行。

2.3时间安排

第一周设计任务:

每个人根据自己的任务参阅不同的资料,把自己的任务模块完成,最后将所有的汇总并讨论编写最终的设计程序。

第二周设计任务:

将最终的程序上机汇编调试,解决调试过程中遇到的问题;设计可以运行后,总结以前的内容写一份总的设计报告。

3详细设计

3.1DOS功能调用

应用INT21H系统功能调用的方法如下:

①入口参数送指定的寄存器或内存;②功能号送AH中;③执行INT21H软中断指令;

1.键盘输入并显示(1号功能调用)

格式:

MOVAH,01H

INT21H

功能:

按下任何键,将其对应字符的ASCII码送入AL中,并在屏幕上显示该字符。

如果按下的是Ctrl+Break组合键,则终止程序执行。

1号功能调用无须入口参数,出口参数在AL中。

2.键盘输入但不显示输入字符(8号功能调用)

格式:

MOVAH,08H

INT21H

功能:

同1号功能调用,但字符不在屏幕上显示。

3.屏幕显示一个字符(2号功能调用)

格式:

MOVDL,'字符'

MOVAH,02H

INT21H

功能:

将置入DL寄存器中的字符在屏幕上显示输出。

4.屏幕显示字符串(9号功能调用)

格式:

MOVDX,字符串的偏移地址

MOVAH,09H

INT21H

功能:

在屏幕上显示字符串。

在使用9号功能调用时,应当注意以下问题。

①待显示的字符串必须先放在内存一数据区(DS段)中,且以‘$’符号作为结束标志。

②应当将字符串首地址的段基址和偏移地址分别存入DS和DX寄存器中。

5.字符串输入功能调用(0AH号功能调用)

格式:

MOVDX,已定义缓冲区的偏移地址

MOVAH,0AH

INT21H

功能:

从键盘接收字符,并存放到内存缓冲区。

在使用0AH号功能调用时,应当注意以下问题。

①执行前先定义一个输入缓冲区,缓冲区内第一个字节定义为允许最多输入的字符个数,字符个数应包括回车符0DH在内,不能为“0”值。

第二个字节保留,在执行程序完毕后存入输入的实际字符个数。

从第三个字节开始存入从键盘上接收字符的ASCII码。

若实际输入的字符个数少于定义的最大字符个数,则缓冲区其他单元自动清0。

若实际输入的字符个数大于定义的字符个数,其后输入的字符丢弃不用,且响铃示警,一直到输入回车键为止。

整个缓冲区的长度等于最大字符个数再加2。

②应当将缓冲区首地址的段基址和偏移地址分别存入DS和DX寄存器中。

6.返回DOS操作系统(4CH号功能调用)

格式:

MOVAH,4CH

INT21H

功能:

终止当前程序的运行,并把控制权交给调用的程序,即返回DOS系统,屏幕出现DOS提示符,如“C:

\>”,等待DOS命令。

7.设置系统日期(2BH号功能调用)

格式:

MOVCX,年号

MOVDH,月号

MOVDL,日期

MOVAH,2BH

INT21H

功能:

设置有效的年、月、日。

当AL=0时,设置成功;当AL=0FFH时,设置失败。

8.设置系统时间(2DH号功能调用)

格式:

MOVCH,小时

MOVCL,分

MOVDH,秒

MOVAH,2DH

INT21H

功能:

设置有效的时间。

当AL=0时,设置成功;当AL=0FFH时,设置失败。

9.取系统当前时间2CH功能调用

格式:

MOVAH,2CH

INT21H

执行结果CX:

DX中得到当前时间的二进制数

3.2程序编程

STACK1SEGMENTSTACK

DW200DUP(?

STACK1ENDS;堆栈段定义

HEX_DECmacro;宏定义十六进制转换为十进制

pushdx

pushcx

movbl,10d

moval,ch

xorah,ah

divbl

addal,30h

addah,30h

movds:

[si],al

movds:

[si+1],ah

addsi,3

popcx

popdx

endm

datasegment

disdb'-------',13,10,'$'

systimedb'*',?

,?

,':

',?

,?

,':

',?

,?

,'*','$'

dataends;数据段定义

codesegment

assumecs:

code,ds:

data;代码段定义

start:

movax,data;数据段地址的装入,ax初始化

movds,ax

LEADX,dis

MOVAH,9;9号调用

INT21H

res:

LEAsi,systime;取得systime数组的首地址

ADDsi,3

MOVAH,2CH;功能键调用,调用系统时间

INT21H

HEX_DEC;宏调用

movch,cl

HEX_DEC

movch,dh

HEX_DEC

LEADX,systime;显示系统时间

MOVAH,9;9号调用

INT21H

MOVAH,2

MOVDL,0DH;2号调用

INT21H

MOVAH,1;键盘输入'q',则退出

INT16H

CMPAL,'q'

JEexit

jmpres

exit:

MOVAH,4CH;返回操作系统

INT21H

codeends

endstart

4程序流程图

4.1程序流程

图4-1主程序流程图

4.2程序显示界面

5程序调试

(1)源代码输入后,无法顺利汇编成OBJ文件,首先检查程序,看是否存在字符输入错误或语法错误,并借助星研,这是一个仿真软件,在里面程序不同寄存器,数值用不同颜色显示,编译时也会提示哪行有错误,调试便简单许多。

自己堆栈的设置不清楚,就把程序头堆栈的说明删减了不影响程序运行。

对延时把握不准,就把显示时间结果和身边的闹钟比较,发现程序显示60秒时实际时间已经是2分钟左右了,于是有把延时初值减半,逐步细化最终减小误差。

经过反复调试终于顺利汇编、连接成功。

(2)程序开始运行后,我将汇编好的源程序在DOS模式下运行无误后,使其在emu8086显示出来。

(3)我们从网络上查了一些资料,网络帮助我们快速解决问题,大大减少调试困难。

比如开始时没将显示置于屏幕中间,后来利用10H功能置位光标,但是无论如何都不能显示在右上角,但是可以显示于行中间,经历调试,排除问题,用小程序模拟,最终发现,在BCD码转换成ASCII时,将回车压入缓冲器了,所以不再装载回车解决了问题。

6实验结果分析

通过以上的结果显示可以看出结果成功完成本次课程设计的目的和任务,本次课程设计严格按照课程设计任务的要求:

运行可执行程序systime.exe,显示系统当前时间。

但还有缺陷的是光标不停刷新影响视觉效果,由于这点在课程设计任务中没有相关要求,因此这次课程设计可以认为是成功的。

7设计过程与总结

微机原理课程设计的目的主要有以下几个方面1)理解和掌握该课程中的有关基本概念,程序设计思想和方法。

2)掌握从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题

的新途径的悟性,初步培养工程意识和创新能力。

3)对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。

4)汇编语言程序设计课程设计是在教学实践基础上进行的一次大型实验,也是对该课程所学理论知识的深化和提高。

因此,要求学生能中和应用所学知识,设计与制造出具有较复杂功能的应用系统,并且在实验的基本技能方面上进行一次全面的训练。

5)培养学生综合运用所学知识独立完成汇编程序课题的能力。

使学生能够较全面地巩固和应用课堂中所学的基本理论和程序设计方法,能够较熟练地完成汇编语言程序的设计和调试。

我们小组成员三人完成这次报告两个星期的课程设计中,遇到了诸多的问题。

首先,资源有限。

当我们花了将近一周的时间将整个设计思路用图纸和程序描绘出后。

我们展开了讨论,很快设计方案又出来了。

在后续的具体实施过程中,我们遇到不清楚的地方,我们便去询问老师,寻求帮助。

这次花了约两周的时间把详细的设计报告做出来了。

这次我们都是充满信心这是我们第一次设计,但这一次我们可是一步一个脚印的。

结果,一开始没有得出想要的结果,这次我们反应很快,共同检查实验的每一个部分,最后确定程序有问题。

写程序可是一个细心的活,除了要会写,更多的还是耐性与细心。

但并没有因此而放弃,其他的队友也全没有责难之意,我们都知道,只有相互理解,合作才会更成功。

设计的最后期限到了无论成败与否,我们无所怨言,很幸运,结果就像喜剧片一样--曲折的过程和圆满的结尾。

通过本次课设计我们不仅学到了关于微机原理的许多专业知识,同时也让我们感觉到团队合作的重要性,意识到团队的力量,同时感谢丁老师的辛勤指导。

其实如何有效和快速的找到资料也是课程设计给我们的启发,利用好图书馆和网络,是资源的到最好的利用。

如果我们一味的屋子里苦思冥想那么再给2周的时间或许也不会实现这个课题,所以我们觉得与他人交流思想是取得成功的关键,在交流中,不仅强化了自己原有的知识体系也可以扩展自己的思维。

通过思考、发问、自己解惑并动手、改进的过程,才能真正的完成课题。

经过这次课程设计的过程,我们相信在以后的课程设计中我们会吸取经验教训,做出更好的设计来。

我的心得体会

我们所设计的程序原理是:

程序先调用系统时间,然后将返回的二进制数转化成ASCII码,再通过dos显示功能显示出来,并通过循环不断刷新显示的时间.我从这次程序设计过程中学会,理解了几点我以前不熟悉的知识:

首先在二进制转化成ASCII码的过程中,我进一步地了解到,在转化过程中,二进制数首先转化为双四位的BCD码,再将高四位低四位分别相加30H,从而转化为ASCII码,此时要对照书本的附录1了解电脑cup如何将ASCII码的信息转换成显示字符。

其次,了解了如何对其他经典程序的灵活应用。

我们的程序是不断对显示屏进行刷新的,所以我们调用了bctd程序,这是一个精确的计时程序,计数时间约为1秒,然后我们用了Jmpdisplay指令,刷新显示屏,从而达到时间的每秒显示。

通过了这次程序设计,使我更深刻地理解了微机的原理与应用技术,特别是在对中断技术的理解与应用方面,更好地理解了微机的工作情况与运行方式。

可以这样说,如果没有此课程设计,我对微机的原理与应用技术,仍旧停留于表面了解、一知半解甚至不知其解的状态,这样就谈不上学知识、长见闻、提高自身学术素质与理论水平的方方面面。

但也让作者感到自身的知识和理论水平要作更高层次的课程设计,远远不足,还需要不懈地学习与提高,更需要指导老师与在此方面的高手不吝赐教!

8附源程序

STACK1SEGMENTSTACK

DW200DUP(?

STACK1ENDS

HEX_DECmacro;宏定义十六进制转换为十进制

pushdx

pushcx

movbl,10d

moval,ch

xorah,ah

divbl

addal,30h

addah,30h

movds:

[si],al

movds:

[si+1],ah

addsi,3

popcx

popdx

endm

datasegment

disdb13H,10H,'$'

systimedb'*',?

,?

,':

',?

,?

,':

',?

,?

,'*','$'

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data;

movds,ax

LEADX,dis

MOVAH,9

INT21H

res:

LEAsi,systime;

ADDsi,3

MOVAH,2CH;

INT21H

HEX_DEC;宏调用

movch,cl

HEX_DEC

movch,dh

HEX_DEC

LEADX,systime;显示系统时间

MOVAH,9

INT21H

MOVAH,2

MOVDL,0DH

INT21H

MOVAH,1;键盘输入'q',则退出

INT16H

CMPAL,'q'

JEexit

jmpres

exit:

MOVAH,4CH

INT21H

codeends

endstart

9参考资料

《微型计算机原理及接口技术》中国科技大学出版社,2004.12周荷琴编著

《16-32位微型计算机技术及应用》清华大学出版社戴梅萼史嘉权编著

《汇编语言程序设计》清华大学出版社杨记文编著

《汇编语言程序设计教程》清华大学出版社杨记文编著

《微型计算机原理及接口技术》实验指导书

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1