




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微机原理课程设计报告电子表程序设计(一)设计任务:用汇编语言设计一电子表程序,要求:(1)实现秒、分、时的计时,并显示于屏幕中央(2)能够校时(3)能够半点、整点报时(二)设计原理该程序主要由三部分构成:时间设置、延时程序和时钟显示。(1) 时间设置输入初始时间先调用DOS操作系统模块2,在显示屏上显示:,再调用DOS操作系统模块10,提示输入初始时间。由键盘输入的时间以字符串形式存放在已定义的存储器缓冲区内,继而调用TRAN1转换子程序和MUL10乘10子程序,将存放在存储器缓冲区内的ASCII字符转换为压缩BCD码,并将时、分、秒的值放置在寄存器CH、DH、DL中。暂停计时按Pause B
2、reak键即可暂停计时,再按下任意键恢复计时重新输入时间在程序运行时,可按下Esc键重新输入初始时间,此时程序检测到Esc(ASCII码为1BH)被按下,返回步提示重新输入时间。以上两步可实现校时的功能。半点、整点报时程序运行时,分钟值每次改变都需要与30、60比较,若相等,则调用DOS操作系统模块7使计算机响铃并在时间后显示 -。同时若分、秒值为60则需进位,时为24时进位,保证时钟程序的正确性。(2)延时程序计算机在执行指令时,各种操作都按指令执行,但在像程序控制器那样由计算机发出指令控制外部设备是,由于外部设备所具有的机械惯性或其他原因,需要在计算机发出指令后有规律地延迟或等待一段时间。
3、这类延时,可以用硬件延时来完成,单用软件来实现也是一种方便和常用的方法。计算机执行每一条指令,虽然很快,但还是需要一段时间的。因此从理论上讲,可在程序中加一些与程序无关的指令去完成,要计算指令执行的时间,又不能过多的为了延时而增加编制程序的工作量。因此,编制延时程序,应尽量采用较少的指令,节约存储器,并且不能对主程序造成影响。每条指令执行时间的长短,是以计算机的时钟周期为基本单位的。当CPU采用的时钟频率一定时,时钟周期也为定值。因此可根据时钟周期的多少来计算执行指令所需的时间。完成本设计任务使用的计算机采用Intel Pentium 4处理器,主频为1.70GHz,时钟周期约为0.59ns。
4、通过时间约1s的长延时累加,并以时、分、秒的形式显示出来,就可以编写出一个时钟程序。(3)时钟显示设置光标位置子程序IOSET一般的显示屏可显示25行、80列字符,屏幕左上角字符位置为0行0列,右下角字符位置为24行79列,对应于十六进制为:左上角为(0,0),右下角为(18,4F)。设置光标,可调用BIOS系统,用汇编语句调用中断INT 10H,其入口信息为(AH)=2 要设置光标;(BH)=0 页号;(DH,DL)=( 0CD,24) 置光标于行、列数,本程序要求置光标于屏幕中央,即为12行36列(十进制)。清除屏幕子程序IOCLR当开始执行程序时,总希望有一个洁净的屏幕,此时可使显示屏幕
5、作上滚动作,使屏幕留下一片空白,也可以清楚屏幕的一部分,是这部分空白留作它用。要使屏幕上滚,可用汇编语句调用中断INT 10H,其入口信息为(AH)=6 是屏幕上滚;(AL)=00 上滚行数,若(AL)=0,则整屏为空白;(CH,CL)= 滚动区域的左上角行列号,本程序中(CX)=0;(DH,DL)= 滚动区域的右下角行列号,本程序中(DX)=184FH;(BG)= 空白行属性,当(BH)=7时,为正规属性(黑白)。屏幕显示程序DISPY显示屏幕作为常用的输出设备,可用来显示运算的中间结果或最终数据,也可用来显示表示正确完成或检验出的错误信息。为了显示表示正确或显示错误的信息,必须在数据段中以
6、字符串形式将提示信息加以定义,然后由显示器在屏幕上加以显示。DOS系统中的显示功能模块号为2,每次调用仅能显示DL中的一个字符。为显示字符串,可调用DOS系统另一功能,用汇编语句调用中断INT 21H,其入口信息为(AH)=9 显示字符串的功能模块号;(DS:DX) 指向字符串的首地址,要求字符串以字符$结尾。(三)框图NY检测校时信号输入调用时间延迟子程序开始调用清除屏幕子程序调用设置光标居中子程序从键盘输入字符串到缓冲区BXBUFFER缓冲区第二单元的偏移地址调用TRAN1子程序将输入的ASCII码转换为BCD码BXBUFFER缓冲区第二单元的偏移地址调用MUL10子程序将BCD码转换为压
7、缩BCD码实现秒加1秒是否大于60实现分加1分是否大于60实现时加1YYA输入字符串结束码$DOS功能调用,显示字符串分是否为30分是否为60BXBUFFER缓冲区第二单元的偏移地址A时是否小于24YN小时值归零调用TRAN2子程序将输入的BCD码转换为ASCII码调用清除屏幕子程序调用设置光标位置居中子程序Y输入-和响铃ASCII码NYNNN(四)程序清单DAT SEGMENTRING DB -$FLAG DB 0BUFFER DB 10 DB ? DB 10 DUP (?)DAT ENDSSTA SEGMENT PARA STACK STACKSTAPN DB 100 DUP (?)TOP
8、 EQU LENGTH STAPNSTA ENDSCOD SEGMENTSTART PROC FAR ASSUME CS:COD,DS:DAT,SS:STA MOV AX,DAT MOV DS,AX MOV AX,STA MOV SS,AX MOV AX,OFFSET TOP MOV SP,AXMAIN: ;主程序 PUSH BX PUSH CX PUSH DX CALL IOCLR ;清除屏幕 CALL IOSET ;设置光标位置 POP DX POP CX POP BX MOV DL,: MOV AH,2 ;显示字符:,提示输入时间 INT 21H MOV DX,OFFSET BUFFER
9、 MOV AH,10 INT 21H MOV BX,OFFSET BUFFER+2 CALL TRAN1 INC BX INC BX CALL TRAN1 INC BX INC BX CALL TRAN1 MOV BX,OFFSET BUFFER+2 MOV AL,BX CALL MUL10 MOV CH,AL INC BX INC BX MOV AL,BX CALL MUL10 MOV DH,AL INC BX INC BX MOV AL,BX CALL MUL10 MOV DL,ALAGAIN: MOV AL,0 MOV FLAG,AL MOV AH,01H ;判断是否键盘有无输入,若有则
10、重新置初值 INT 16H CMP AL,1BH JZ MAIN CALL TIME MOV AL,DL ADD AL,1 DAA MOV DL,AL CMP AL,60H JNE DISPY MOV DL,0 MOV AL,DH ADD AL,1 DAA MOV DH,AL CMP AL,30H ;与30比较 JNE NEXT MOV AL,1 MOV FLAG,AL JMP DISPYNEXT: CMP AL,60H ;与60比较 JNE DISPY MOV AL,1 MOV FLAG,AL MOV DH,0 MOV AL,CH ADD AL,1 DAA MOV CH,AL CMP AL,
11、24H JNE DISPY MOV CH,0DISPY: MOV BX,OFFSET BUFFER MOV AL,CH CALL TRAN2 INC BX MOV AL,: MOV BX,AL INC BX MOV AL,DH CALL TRAN2 INC BX MOV AL,: MOV BX,AL INC BX MOV AL,DL CALL TRAN2 INC BX MOV AL,$ MOV BX,AL PUSH BX PUSH CX PUSH DX CALL IOCLR CALL IOSET MOV DX,OFFSET BUFFER MOV AH,9 INT 21H MOV AL,FLAG
12、 ;若标志位为1,则报时,并显示 - CMP AL,1 JNE NEXT1 MOV DX,OFFSET RING MOV AH,9 INT 21H MOV AH,02 MOV DL ,07H INT 21HNEXT1: POP DX POP CX POP BX JMP AGAIN RETSTART ENDPTRAN1 PROC ;ASCII码转BCD码 MOV AL,BX AND AL,0FH MOV BX,AL INC BX MOV AL,BX AND AL,0FH MOV BX,AL RETTRAN1 ENDPMUL10 PROC ;BCD码转压缩BCD码 ADD AL,AL DAA MO
13、V CL,AL ADD AL,AL DAA ADD AL,AL DAA ADD AL,CL DAA MOV CL,AL INC BX MOV AL,BX ADD AL,CL RETMUL10 ENDP TRAN2 PROC ;压缩BCD码转ASCII码 MOV CL,AL SHR AL,1 SHR AL,1 SHR AL,1 SHR AL,1 OR AL,30H MOV BX,AL INC BX MOV AL,CL AND AL,0FH OR AL,30H MOV BX,AL RETTRAN2 ENDPTIME PROC ;延时子程序 PUSH CX PUSH AX MOV AX,04FFFH
14、GOON2: MOV CX,0FFFFHGOON: DEC CX JNZ GOONGOON1: DEC AX CMP AX,0 JNE GOON2 POP AX POP CX RETTIME ENDPIOCLR PROC ;清除屏幕子程序 MOV AX,0600H MOV CX,0000H MOV DX,184FH MOV BH,07 INT 10H RETIOCLR ENDPIOSET PROC ;设置光标位置 MOV DX,0C24H MOV BH,00 MOV AH,02 INT 10H RETIOSET ENDPCOD ENDS END START(五)程序调试(1) 源代码输入后,无
15、法顺利汇编成OBJ文件,首先检查程序,看是否存在字符输入错误或语法错误,并借助EMU8086 软件(4.0版)检查,经过反复调试终于顺利汇编、连接成功。(2)程序开始运行后,无法实现清屏幕,正确调用IOCLR清楚屏幕子程序后问题得以解决。(3)走时不准确,由于本程序是利用计算机软件延时来实现计时的,时间快慢与计算机主频有关,计算机主频为1.70GHz,设置了两重循环,根据主频及延时程序大致计算延时的数值,并根据调试结果相应的更改数值大小。(4)校时程序,自己编不出能校时的程序,引用网上查找到的一个中断代码,加入到程序中,可以实现时间调校。(5)报时程序:一开始无从下手,通过分析产生报时的条件及
16、时间,设置了一个FLAG标志字,很好地解决了报时问题。(六)运行结果(截图)(1)一般状态(2)半点报时(3)整点报时(七)体会首先,由于程序较长,寄存器运用时要注意不能重复,调用或中断程序时要注意使用PUSH和POP命令保存当前地址,运用堆栈来完成。在调试过程中,我充分感受到了断点保护的重要性,有时不能想当然,犯经验主义的错误,要切实分析中断程序中是否使用了当前的寄存器,如果有一定要加以保护,否则很可能会出现程序的错误甚至导致系统崩溃。在调试中就曾经出现过乱码现象,刚开始没有意识到是保护问题出现了差错,经过使用DEBUG程序才找到了问题的所在;还多次出现死机现象,大大影响了工作的效率。同时通
17、过这次调试程序,我切实感觉到了注释的重要性,如果一味的写程序,很容易出现混乱,导致事后自己都不知到自己编的代码是什么意思,最好一边写代码一边加注释,这样在调试及查错时效率会比较高。程序一定要有备份,在汇编以前最好备份,以免在汇编是出现死机或其他以外状况,造成源代码的丢失。在调试程序时,应先把最基本的计时功能程序调试成功,然后在此基础上再慢慢加入各种功能,每一次更改程序都存档,每次都在调试成功后在去添加新的功能,否则会出现错误的交叉不便于调试找出错误。这次调试程序,我还认识到我们应该充分利用课本以外的知识,课本上的知识以教学任务为主,但是在实际工程中会遇到其他很多课本上与不到的问题,比如调用键盘中断校时使用的INT 16H以及清屏和设置光标程序就是我们在课内没有学到的,我们通过查阅微型计算机上机程序以及通过网络寻找到了一些有用的代码很好的解决了这些问题。在课程设计验收的时候,老师的提问让我发现了该程序的一些缺点。例如在输入非法数据如24:60:65时,程序应该做出相应的判断去屏蔽这些错误,由于时间仓促这些问题没有很好地避免。此外,如果能在程序开始时先提示输入计算机的主频并自动选择合适的延时程序,电子表在不同主频的计算机上计时快慢不一样的问题将能够得到解决。这些是我在今后的编程中应该探索和考虑的问题。通过这次编写以及上机调试,我充分感受到了上机调试的重要性。平时学习中只是用手写
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年喀什地区法院系统招聘真题
- 2024年湖州市吴兴区中医院招聘卫生专业技术人才真题
- 2025届中国兵器装备春季校园招聘考前自测高频考点模拟试题及答案详解1套
- 2025吉林大学白求恩第一医院中医科医生招聘1人模拟试卷及一套参考答案详解
- 2025贵州兴仁市马马崖镇村级卫生室医生岗位招聘考前自测高频考点模拟试题及完整答案详解一套
- 2025-2026学年度安徽省亳州市蒙城县实验永兴中学高二上学期9月月考历史试题(含答案)
- 2025河北衡水市冀州区招聘第二批社区工作者考前自测高频考点模拟试题附答案详解(考试直接用)
- 2025年伊春金林区公益性岗位招聘16人模拟试卷及答案详解(历年真题)
- 2025湖南岳阳市郡华高级中学教师招聘35人模拟试卷及一套完整答案详解
- 2025江苏连云港市灌云万邦人力资源有限公司招聘人员考前自测高频考点模拟试题及答案详解一套
- 人教版五年级数学上册第二单元位置达标测试卷(含答案)
- 国企安全环保培训会课件
- 2025年江苏省南京市中考英语真题卷含答案解析
- 物联网水表采购方案投标文件(技术方案)
- 炎症与心脑血管疾病
- 2025九省联考试题生物及答案
- UV转印技术简介
- 子宫内膜异位症
- 2025年从亚洲到阿拉伯海湾地区战略投资路径解析报告-易达资本
- 如何上好一节体育课讲座
- 2025年测试题及答案情侣
评论
0/150
提交评论