版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计任务书学生姓名:蒋宏专业班级:自动化0708班指导教师:石云张蔚工作单位:自动化学院题目: 键盘录入数据的转换与显示初始条件:从键盘读入二个五位十进制数(1位符号位+4位数值位,并将这二个十进制数,分别转换为二进制数,然后求其和,再将和以十进制形式进行显示。按Q 退出程序。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求(1设计任务及要求分析(2方案比较及认证说明(3系统原理阐述(4硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6调试记录及结果分析(7总结(8参考资料(9附录:芯片资
2、料或程序清单,软件演示屏幕拷贝图或硬件实物图时间安排:1月18日1月20日:收集资料,方案选择1月21日1月23日:整体流程,程序细节1月25日1月27日;调试程序,报告撰写1月28:交设计报告,程序演示,答辩指导教师签名:年月日系主任(或责任教师签名:年月日摘要:本文所设计的程序是运行于硬件和DOS操作系统下的,本程序通过调用DOS下的基本输入输出中断,实现数据的输入和输出。程序中有两个子程序,输入的两个五位的十进制数通过调用一个叫ASC_TO_BIN的子程序可以将其转换成二进制数,然后求两个二进制数的和,求和完成后,再调用一个叫BIN_TO_ASCII的子程序将二进制和转换成相应的ASCI
3、I码,调用DOS输出中断显示在屏幕上,最后看用户是否输入的是Q或者q,若是则程序结束,若不是则程序循环。关键字:8086;DOS系统;ASCII码;中断目录1设计任务及要求分析 (11.1设计任务 (11.2要求分析 (12方案比较及认证说明 (23系统原理阐述 (33.1统设计的软硬件环境 (33.2统设计中用到的DOS调用 (34软件设计说明 (54.1 ASCII码转换成二进制算法实现 (54.2二进制转换成ASCII码算法实现 (54.3主程序结构分析 (54.4子程序结构分析 (64.5中断程序的结构分析 (85调试记录及结果分析 (95.1调试记录 (95.2调试结果分析 (9总结
4、和心得体会 (10参考文献 (11附录一源程序和程序注释 (12附录二程序运行结果截图 (16附录三本科生课程设计成绩评定表 (17附录四评定项目表 (19键盘录入数据的转换与显示1设计任务及要求分析从键盘读入二个五位十进制数(1位符号位+4位数值位,并将这二个十进制数,分别转换为二进制数,然后求其和,再将和以十进制形式进行显示。按Q退出程序。从设计任务中可以看出此次课设要求是:从键盘中输入两个五位十进制数(格式如-8888、+9999等,显然通过键盘输入的此类十进制数实际上输入的是对应字符的ASCII 码,若想求两个数的和必须先将这两个数对应的二进制数求出,然后再求其和,求和完成后将二进制数
5、再转换成对应的十进制数用显示器输出,完成两个五位十进制数的求和然后以十进制的形式显示。2方案比较及认证说明输入输出方式的比较。方案一:BIOS功能调用方式输入输出数据。此方案使用相对复杂一些,而其我们对BIOS 功能调用不是很熟悉。方案二:MSDOS功能调用的方式输入输出数据。此方案简单实用、由于我们对MSDOS 比较熟悉,所以用起来十分方便。综上,我们选用方案二的输入输出方式,输入数据和输出数据。3系统原理阐述DOS是美国Microsoft公司为IBM-PC研制的磁盘操作系统(Disk Operating System,也称为IBM-DOS或MS-DOS。DOS不仅为用户提供了许多使用的指令
6、,而其还有用户可以直接调用的上百个常用子程序。对这些子程序的调用,称为系统功能调用。这些子程序的功能主要是进行磁盘的读写、控制管理、内存管理、基本输入输出管理等。在使用时,用户不需要关心和了解各种IO接口硬件的详细情况就能直接完成对IO接口的控制和管理。为了使用方便,将所有子程序从1开始循序编号,这些编号称为DOS功能调用号。其调用过程为:DOS功能调用号送AH寄存器。如果需要,按要求给定输入参数(有的不需要输入参数。写入中断指令“INT 21H”。下面介绍一些在本程序中用到的一些DOS输入输出功能。功能:从键盘输入一个字符。输入参数:无。输出参数:AL=ASCII码。功能:在屏幕上显示1个字
7、符(ASCII码。输入参数:DL=ASCII码。输出参数:无。3.多字符输入0AH功能:多个字符输入到缓冲区。输入参数:DS:DX=输入缓冲区首地址。输出参数:DS: DX=输入字符串所在缓冲区地址。设置缓冲区要注意以下几点:缓冲区第1个字节存放预定字符个数,最多255个。缓冲区第2个字节保留,用于调用返回时存放实际输入的字符个数。缓冲区第3个字节开始,存放输入的字符。缓冲区要考虑留一个字节作为回车符。4多字符输出9号功能:多个字符输出到屏幕显示。输入参数:DS:DX=输出字符缓冲区首地址。输出参数:无。该功能对输出字符的个数没有要求,但是输出字符串要以$结束。5过程终止4CH号该调用的功能是
8、结束当前程序,并且返回调用它的程序。如果在DEBUG状态下运行则返回DEBUG;如果在DOS下运行,则返回DOS。在汇编语言程序结束处加上“MOV A X,4C00H”和“INT 21H”两条指令,以利于程序执行完毕,返回操作系统控制。4软件设计说明4.1 ASCII码转换成二进制算法实现首先将其转换成十进制数字,再用累加和乘10加X的方法变成二进制数,如将1358转换为二进制数,可先将累加和赋0,再计算(1*10+3*10+5*10+8,结果为二进制数,再由符号位决定是否需要求补。程序执行一次一共用了9次21H号中断。第1、3、5、6、7次调用前AH写入的是9,所以这几次调用INT21是在屏
9、幕上显示DX为首地址的字符串,也就是显示的是响应的提示信息和两个数之和的结果;第2、4次INT21H中断调用前AH写入了10,所以这两次调用的作用是输入两个五位十进制数,且在没个五位的十进制数输入后,立即调用ASCII_TO_BIN函数转换成相应的二进制数;第八次INT21H调用之前AH中写入了1,该次输入一个字符,在把输入的该字符和Q和q比较,看是否是其中的一个,若是则程序结束,此时在AH中写入4CH中,再调用INT21H,显然是把CPU交给操作系统;若不是则程序回到开始处,程序循环。主程序的流程图如图4-1所示。 图4-1 主程序流程图ASC_TO_BIN(ASCII码字符转化成二进制子函
10、数,该函数的功能是五位ASCII码十进制数转换成二进制数;在主程序中一共调用了两次该函数,分别是在输入完成两个五位十进制数后。算法实现已在前面分析,这里不再重述,ASC_TO_BIN子程序的流程图如图4-2图所示。 图4-2 ASC_TO_BIN子程序流程图BIN_TO_ASCII(将二进制数转换成相应ASCII码形式十进制数函数,该函数的功能是将一个二进制数转化成对应ASCII码形式的十进制数,以便屏幕输出。该子程序的算法实现已在前面说明,程序流程图如图4-3所示。 图4-3 BIN_TO_ASCII子程序流程图INT21H号中断是一个系统中断,中断程序根据中断前写入AH中的值决定中断的功能
11、,前面已说明中断程序的功能,中断程序执行的流程图如图4-4所示。 图4-4 中断程序流程图5调试记录及结果分析刚写完程序第一次调试时,程序老是出错,错误提示如图5-1所示。 图5-1 调试出错提示经过反复认真检查和修改,最后终于找到了程序出错的原因,原来是子程序调用出错了,后面修改了子程序和子程序的调用方式,程序就可以正常运行了。运行结果如图5-2所示。 图5-2 正确运行的结果从图5-2和附录二中可以看出,程序运行结果完全满足预期要求。程序能够完成两个五位十进制数的求和,并显示结果。并能实现按Q或q推出程序。总结和心得体会通过这次微机原理与接口技术课程设计,加强了我们动手、思考和解决问题的能
12、力。通过参加这次的课程设计,我学到了很多无法在课堂上学到的知识。在课堂上我们学习的都是理论知识,而课程设计是锻炼我们把那些理论运用到我们实际的生活中。现在,我对课设做以下几点总结:(1通过微机原理与接口技术的课程设计,使我认识到计算机技术广泛应用于现代众多的领域中,起着越来越重要的作用。随着电子技术和计算机技术的发展和应用,计算机应用越来越广泛,计算机应用分为数值计算和非数值应用两大领域。非数值应用又包括数据处理、知识处理,例如信息系统、工厂自动化、办公室自动化、家庭自动化、专家系统、模式识别、机器翻译等领域。我们学习的微机原理与接口技术是现在计算机技术的基础,现在学好微机原理与接口技术,好好
13、的理论联系实际,将来才能为我国的计算机技术发展做出贡献。(2通过微机原理与接口技术的课程设计,使我学以致用,理论联系实际,真正学到了实用的知识。上微机原理与接口技术的时候,我们学了8086CPU的内部结构、汇编语言、基本输入输出设备、定时器芯片、中断控制、串行并行通信、AD、DA等是一些理论知识,很难、很经典,虽然我们看上去懂了,也会做题了。通过课程设计时我们才知道,原来我们只是对理论略知一二,要是谈到实际应用我们真是无从下手。不过,还好我们有课程设计,使我们刚学完理论知识,马上又学以致用,使我们的知识掌握的更加的牢固,同时也激发了我们创新的思想,真是一举两得,收获不小啊。所以我们感谢课程设计
14、,感谢老师们认真耐心的辅导我们的课程设计,我希望以后我们可以多做一些类似的课程设计。(3通过微机原理与接口技术的课程设计,本人搞懂了一直来没有搞清楚的几个问题。我们在学习微机原理与接口技术以前,我们学过C、VB等高级语言,一直以来我们都用高级语言编程的,一直以来我不明白高级语言是如何在CPU中执行和计算的通过学习汇编语言我明白了指令时如何执行的。还有我很早就开始学习单片机,当然用的是高级语言C,一直以来我有都没有明白堆栈的概念,不明白堆栈具体有什么用,该怎么用?通过汇编语言的学习我也明白堆栈的作用和堆栈具体应该怎么用。总之,通过微机原理与接口技术的课计,我获益匪浅我,希望以后可以多做一些课设。
15、参考文献1 周佩玲彭虎傅忠谦.微机原理与接口技术.北京:电子工业出版社,20052 冯继超.微机原理实验指导书.武汉:武汉理工大学教材中心,20083 索梅.汇编语言程序设计.北京:清华大学出版社,19944 朱冰.软件工程.北京:北京大学出版社,20035 李昭原.数据库原理及应用.北京:科学技术出版社,20006 周佩玲彭虎傅忠谦. 微机原理与接口技术学习指导.北京:电子工业出版社,2008附录一源程序和程序注释DATA SEGMENT COMMONINPUT_MESSAGE DB0AH , 'PLEASE INPUT A NUMBER(LESS THAN 5 FIGURES:$&
16、#39;QUIT_MESSAGE DB0AH, 'ENTER Q OR q TO QUIT ANY OTHER TO CONTINUE:$'IN_ASC_BUF DB6;十进制数的输入缓冲区,共可接收6个字符DB ? ;保留,用于10号调用时DOS填入实际输入字符个数DB6DUP(? ;一个符号位,四位数字ASCII码,加上一个回车符,共计6字符BIN_BUF1 DW ? ;一个数转换为二进制后,放于此处OUTPUT_MESSAGE DB0AH , 'THE SUM IS:' , '$'OUT_ASC_SUM DB6DUP(? , '$&
17、#39; ;将二个数的和转换为ASCII码后,放于此处,;以供9号调用显示DATA ENDSCODE SEGMENTASSUME CS:CODE , DS:DATAsl PROC FARSTART:MOV AX , DATAMOV DS , AXMOV DX , OFFSET INPUT_MESSAGEMOV AH , 9INT21H;提示输入一个数MOV DX , OFFSET IN_ASC_BUFMOV AH , 10INT21H;读取第一个数CALL ASC_TO_BIN ;转换第一个数为二进制MOV BIN_BUF1 , AX;保存第一个数MOV DX , OFFSET INPUT_M
18、ESSAGEMOV AH , 9INT21H;提示输入一个数MOV DX , OFFSET IN_ASC_BUFMOV AH , 10INT21H;读取第二个数CALL ASC_TO_BIN ; 转换第二个数为二进制ADD AX , BIN_BUF1 ;计算这二个数之和CALL BIN_TO_ASCII ;将和转换为ASCII码,以供显示用MOV DX , OFFSET OUTPUT_MESSAGEMOV AH , 9INT21HMOV DX , OFFSET OUT_ASC_SUMMOV AH , 9INT21HMOV DX,OFFSET QUIT_MESSAGEMOV AH , 9INT2
19、1HMOV AH , 1INT21HCMP AL,'Q'JZ OVERCMP AL,'q'JZ OVERJMP STARTOVER: MOV AH , 4CHINT21Hsl ENDPASC_TO_BIN PROC;ASCII码转换为二进制数;入口:十进制数的ASCII码在IN_ASC_BUF内;出口:转换后的二进制数在AX内;算法:先将其转换成十进制数字,再用累加和乘10加X的方法变成二进制数,如将;358转换为二进制数,可先将累加和赋0,再计算(0*10+3*10+5*10+8,结果为二;进制数,再由符号位决定是否需要求补。MOV CL , IN_ASC_B
20、UF+1;取字符个数MOV CH , 0DEC CL;扣除符号位MOV BX , OFFSET IN_ASC_BUF+3;调整BX指向十进制数的最高位PUSH BXPUSH CXL1:MOV AL , BXAND AL , 0FHMOV BX , ALINC BXLOOP L1 ;将所有数字字符的高四位清0,使之变为数字值POP CXPOP BXMOV AX , 0;累加和赋初值MOV SI , 10L2:MUL SIADD AL , BXADC AH , 0INC BXLOOP L2 ;累加乘10CMP IN_ASC_BUF+2 , '+'JZ L3 ;符号是正号,转移NEG
21、 AX;符号是负号,求补L3:RETASC_TO_BIN ENDPBIN_TO_ASCII PROC;将二进制数转换为对应十进制数数字的ASCII码;入口:二进制数在AX内;出口:转换后的ASCII码在OUT_ASC_SUM变量内;算法:AX中的数范围在+32767到-32768之间,先检查AX中的符号位,以决定输出“+”;还是“-”,若是负数,应先求补,得到原码后即可与正数作统一处理。转换方法为将被转换的;二进制数先除以10000,商;即为万位数,再将余数除以1000,商为千位数,以此类推,求出;百、十位数,剩下的为个位数。最后,将各个数加上30H,即成为对应字符。MOV OUT_ASC_SUM , '+'CMP AX , 0JGE L4 ;不是负数,转移NEG AXMOV OUT_ASC_SUM , '-'L4:CWDMOV BX , 10000DIV BXADD AL , 30H;将万位转换为数字(商应在AX内,但因为商不大于3,;所以有效部分在AL内MOV OUT_ASC_SUM+1 , AL;保存万位数字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 采购合同的收款与支付方式操作指南3篇
- 采购成交协议书合同3篇
- 采购合同的类别区分3篇
- 采购合同样本的马来语3篇
- 2024年挖掘机械销售与设备租赁合同范本3篇
- 采购合同中的国际环境保护3篇
- 采购合同中的工程质量检验标准规定3篇
- 采购合同中英文版填写说明3篇
- 采购合同的违约案例分析与启示3篇
- 采购合同制定提高合同竞争力3篇
- 园区改造合同范本
- 情绪管理国内外研究现状
- 成人流行性感冒抗病毒治疗专家共识(2022年)解读
- 走进民航智慧树知到期末考试答案2024年
- 51天津市河北区2023-2024学年七年级上学期期末历史试题
- MOOC 电工技术与实训-深圳职业技术学院 中国大学慕课答案
- 福建省莆田市2023-2024学年八年级上学期期末质量监测数学试卷(含解析)
- 国家集采药品培训课件
- 鸟类的迁徙与繁殖方式教学教案
- 公司转让债权股东会决议
- 楼宇消防安全培训课件
评论
0/150
提交评论