汇编系统时钟显示中北大学文档格式.docx
《汇编系统时钟显示中北大学文档格式.docx》由会员分享,可在线阅读,更多相关《汇编系统时钟显示中北大学文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
下达任务书日期:
2011年6月24日
课程设计任务书
1.设计目的:
用汇编语言编程设计一个系统时间显示器,在屏幕上显示自己的班级和学号,以及系统时钟。
通过设计,掌握屏幕显示和中断定时器的工作原理,进一步提高综合运用知识的能力。
2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):
(1)在屏幕第一行显示自己的班级和学号,在第二行每隔5秒,显示一次系统时间,显示到秒级,显示的其它内容和界面自定。
(2)选择方案,画出流程图。
(3)编写汇编语言源程序,并调试。
(4)写出设计说明书。
3.设计工作任务及工作量的要求(包括课程设计计算说明书、图纸、实物样品等):
(1)查阅资料,确定设计方案
(2)画出程序流程图
(3)编写并调试汇编语言源程序
(4)撰写课程设计说明书
4.主要参考文献:
1汇编语言第二版清华大学出版社
2
5.设计成果形式及要求:
课程设计说明书1份
程序流程图1份
程序清单1份
6.工作计划及进度:
起迄日期
工作内容
11年6月20日~6月21日
6月21日~6月22日
6月22日~6月23日
6月23日~6月24日
6月24日
查阅资料,确定设计方案
画出流程图
编写并调试程序
撰写课程设计说明书
课程设计答辩
系主任审查意见:
签字:
年月日
汇编语言
课程设计说明书
学生姓名:
学院:
专业:
题目:
指导老师
张艳兵
职称
讲师
2011年6月24日
绪论
实时时钟的缩写是RTC(Real_TimeClock).RTC是集成电路,通常称为时钟芯片。
RTC通常为8PIN,有SOP8、MSOP8、TSSOP8等多种封装。
其中有6个I/O口的功能是一样的,分为:
晶体接口2PIN、MCU接口2PIN、主电源1PIN、地1PIN。
这样就剩下2个I/O的功能定义被区分开了。
所以会有许多的RTC型号。
例如荷电科技的H1208、H8563、H1302、H1307、H1381等等。
大家看到后会发现许多RTC在I/O口的定位上有明显的区别,所以PCB设计时需要多注意。
RTC通常情况下需要外接32.768kHz晶体,匹配电容、备份电源等元件。
RTC除了I/O口的定位不同,还有功能上的区别,比如与MCU的接口,现在常用的是I2C接口(距离短,可以与其他器件共用)还有RAM的数量、静态功耗大小、中断的数量,特别是精度的区别。
RTC的精度可以说与温度有很大的关系,而温度会影响晶体的频率。
所以就产生实时时钟的衍生产品:
时钟模块(内置晶体、电容、电池等等),其精度可保持在每天误差小于0.50秒。
但时钟模块相比时钟芯片而言会高出许多。
RTC最重要的功能是提供到2099年内的日历功能,对于时间来说,无论快慢都是误差,而匹配电容在RTC的外围器件上其他非常重要的作用,它可以适当修正晶体与RTC之间匹配问题。
特别是像H1208这样的RTC,把匹配电容内置,这样就可以保证RTC精度的一致性,不会出现有的RTC走得快,有些又走得慢
一、设计原理
在实验过程中要读取键盘缓冲区,其相对原理为:
BIOS提供了int16h终端历程供程序员调用。
Int16h中断例程中包含的一个最重要的功能是从键盘缓冲区中读取一个键盘输入,该功能的编号为0.下面的指令从键盘缓冲区中读取一个键盘输入,并且将其从缓冲区中删除:
Movah,0
Int16h
结果:
(ah)=扫描码,(al)=ASCII码
下面,我们看一下int16h如何读取键盘缓冲区。
(1)执行
后,缓冲区中的内容如下:
3062
2E63
2064
1265
1E41
1E61
Ah中的内容为1EH,al中的内容为61h
(2)执行
Movah,0
后缓冲区中的内容如下:
Ah中的内容为30H,al中的内容为62h
(3)执行
Ah中的内容为2EH,al中的内容为63h
(4)执行4次
后缓冲区空
(5)执行
Int16h中断例程监测键盘缓冲区,发现缓冲区空,则循环等待,知道缓冲区有数据。
(6)按下A键后,缓冲区中的内容如下:
(7)循环等待的int16h中断例程监测到键盘缓冲区中有数据,将其读出,缓冲区又为空。
Ah中的内容为1EH,al中的内容为61h
从上面我们看出,int’16h中断例程的0号功能进行如下的工作:
(1)检测键盘缓冲区是否有数据
(2)没有则继续做第一步
(3)读取缓冲区第一个字单元中的键盘输入
(4)将读取的扫描码送入ah,ASCII码送入al
(5)将已读取的键盘输入从缓冲区中删除
可见,BIOS的int9中断例程和int16h中断例程是一对相互配合的程序,int9中断例程向键盘缓冲区中写入,int16h中断例程从缓冲区中读出。
它们写入和读出的时机不同,int9中断例程是在有建按下的时候向键盘缓冲区中写入数据;
int16中断例程是在应用程序对其进行调用的时候,将数据从键盘缓冲区中读出。
我们在编写一般的处理键盘输入的程序的时候,可以调用int16h从键盘缓冲区中读取键盘的输入。
编辑链接原理:
用一个非常好用的汇编软件“轻松汇编”来进行程序的编辑、编译、连接、运行,DOS下进行汇编的整个过程法索而复杂,这款软件集成了这些功能,一键就能完成从编译到运行,非常方便,只要程序没错,就能直接出结果。
程序流程图:
二、设计程序
ASSUMECS:
CODE
DATASEGMENT
DB'
xuehuao:
0805054247xingming:
lengwenlong'
'
$'
DATAENDS
CODESEGMENT
START:
MOVAH,2;
显示学号班级
MOVBH,0
MOVDH,0
MOVDL,25
INT10H
MOVAX,DATA
MOVDS,AX
MOVDX,0
MOVAH,9
INT21H
DSP:
CALLDSPT;
循环延时5秒显示时钟
CALLDELAY
JMPDSP
DSPTPROCNEIR;
时间显示子程序
MOVAH,2
MOVDH,2
MOVDL,35
PUSHAX
PUSHCX
MOVAL,04H
MOVCX,3
GETT:
OUT70H,AL
INAL,71H
CALLDSPBCD
MOVAX,0E3AH
POPAX
SUBAL,2
LOOPGETT
POPCX
RET
DSPTENDP
DSPBCDPROC
MOVCL,4
MOVAH,0
RORAX,CL
SHRAH,CL
ORAX,3030H
MOVCH,AH
MOVAH,0EH
MOVAL,CH
DSPBCDENDP
DELAYPROCNEAR;
延时子程序
PUSHDX
MOVDX,50000
D11:
MOVCX,35000
D12:
LOOPD12
DECDX
JNZD11
POPDX
DELAYENDP
CODEENDS
ENDSTART
三、运行与调试结果
程序编辑如图:
显示结果如图:
四、心得体会
在大三接触汇编语言之前,我们在计算机组成原理课程中就已经有所了解了,但也只是略微明白一些如jmp,mov这样的指令,极度缺乏系统性的学习,在C语言中不到10个语句构成的程序,用汇编语言却要好几十行甚至上百行。
这不得不让我们对汇编产生一种恐惧感。
事实上,这是完全不必要的。
一旦对它的原理掌握后,编写程序就容易多了。
另外,学习汇编语言能让我们更加了解计算机内部的组织结构,对我们计算机专业的学生来说,学习汇编也是提升综合能力的关键环节学习这门语言时如果能联系上以前学过的其他高级语言的知识,则会起到良好的效果。
例如C语言程序的运行逻辑结构有顺序(按语句依次执行)、分支结构(IF...THEN...ELSE...),循环结构(FOR...NEXT)三种结构,也通过C语言了解并掌握了什么是子程序,什么是调用。
事实上,汇编语言中有关程序结构,子程序等等的知识都是跟C语言十分相似的,只是在编程时用到的语言不同:
汇编语言完全面向机器,需要指明数据在寄存器、内存中的流向。
在学习汇编语言时,指令的功能是学习和掌握的重点,要准确有效并合理的使用这些指令,必须了解一些使用的规则。
现对汇编语言编程时的规则进行总结,归纳起来有三点:
1、要求指令操作数的寻址方式;
2、指令对标志位的影响和标志位对指令的影响;
3、指令的执行时间,对可完成同样功能的指令,要选用执行时间短的指令。
在编程过程中再次熟悉了汇编环境以及编程的方法,在此感谢沈老师的细心指导。