




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理课程设计微机原理课程设计报告书设计项目:键盘录入数据的转换与显示程序设计班 级: 10级通信 姓 名: 张 欣 学 号: 20100306117 指导教师: 袁 静 目 录一、设计任务- 1 -二、设计内容- 1 -三、设计原理- 2 -四、程序流程图- 3 -五、程序代码- 5 -六、程序运行结果- 8 -七、程序调试中的问题及解决方法- 9 -八、心得收获- 10 -九、参考书目- 10 -一、设计任务键盘录入数据的转换与显示程序设计。二、设计内容1.设计内容编写一个程序,能从键盘读入两个5位十进制数(1个符号位和4位数值位),并将这两个十进制数分别转换为二进制数,然后求其和,再将和以十进制形式在屏幕上显示。该程序主要是十进制与二进制数之间的相互转换。由于用户输入的数一般是十进制表示的,而这些数在计算机内存储、运算时一般都用二进制,这就涉及到了十进制数向二进制数的转换问题;当计算结果需要显示时,又要将二进制数转换为十进制,这又涉及到了二进制数如何转换为十进制数的问题。由于在计算机内这种转换经常进行,所以二进制数与十进制数之间的转换算法是应掌握的基本算法之一。从键盘接收的十进制数以ASCII码形式存放在内存单元中,先将其转换为十进制数字,再用累加和乘10加X的方法变成二进制数,如将358转换为二进制数,可先将累加和赋0,再计算(0*10+3)*10+5)*10+8),结果为二进制数,再由符号位决定是否需要求补。在显示结果前,首先要把二进制表示的和转换成十进制数字,转换时,先检查和的符号位,以决定输出“+”还是“-”。若是负数,应先求补,得到原码后即可与正数作统一处理。转换方法为将和的二进制数除以10000,商即为万位数,再将余数除以1000,商即为千位数,以此类推,求出百、十位数,剩下的为个位数。最后,将各个数加上30H,即成为对应字符。利用DOS中断的21号功能进行字符的接收和显示。2.设计思路程序分为主程序和子程序,主程序主要是接收从键盘输入的数、两个数的求和以及和的显示;子程序分别实现将十进制数转换为二进制和将二进制数转换为十进制数。用户输入的数据限制在4位(不含符号位)以内。这样,数值在-9999+9999范围以内,转换为二进制后在16位补码的表示范围内,而其相加后的和也在16位补码的表示范围内,同时,在将二进制数转换为十进制数显示时,也只考虑万位以下数字的转换即可。三、设计原理1. 程序分为主程序和子程序,主程序主要是接收从键盘输入的数,两个数的求和,以及和的显示;子程序分别实现十进制数转换为二进制和将二进制数转换为十进制数。2. 先输入主程序。 输入两个数时,键盘接收的十进制数以ASCII码形式存放在内存单元中,将其转换为十进制数字。数值在-9999至+9999范围内。 3. 主程序中,两个二进制数数求和,结果也在16位补码的表示范围内。4. 主程序中,和显示前,首先把二进制转换为十进制数,检查和的符号位,若为 负数则求补。5子程序中,实现十进制数转换为二进制方法是先将累加和赋0,再用累加和乘10加X得出结果。转换后在16位补码的表示范围内,如果为负数,则需求补。 6子程序中,实现二进制数转换为十进制前先检查符号位,若为负数则求补,转换方法为将二进制数除以1000,再将余数除以1000,依次类推,求出百,十位数,剩下的为个位数,最后将各个数加上30H,即成为对应字符。四、程序流程图 主程序流程图ASC_TO_BIN子程序流程图BIN_TO_ASCII子程序流程图INT21H号中断是一个系统中断,中断程序根据中断前写入AH中的值决定中断的功能,中断程序执行的流程图如图中断程序流程图五、程序代码DATA SEGMENT COMMONINPUT_MESSAGEDB 0AH , PLEASE INPUT A NUMBER(LESS THAN 5 FIGURES):$QUIT_MESSAGE DB 0AH, ENTER Q OR q TO QUIT ANY OTHER TO CONTINUE:$ IN_ASC_BUF DB 6 ;十进制数的输入缓冲区,共可接收6个字符 DB ? ;保留,用于10号调用时DOS填入实际输入字符个数 DB 6 DUP(?) ;一个符号位,四位数字ASCII码,加上一个回车符,共计6字符BIN_BUF1 DW ? ;一个数转换为二进制后,放于此处OUTPUT_MESSAGE DB 0AH , THE SUM IS: , $OUT_ASC_SUM DB 6 DUP(?) , $ ;将二个数的和转换为ASCII码后,放于此处, ;以供9号调用显示DATA ENDSCODE SEGMENT ASSUME CS:CODE , DS:DATAsl PROC FARSTART: MOV AX , DATA MOV DS , AX MOV DX , OFFSET INPUT_MESSAGE MOV AH , 9 INT 21H ;提示输入一个数 MOV DX , OFFSET IN_ASC_BUF MOV AH , 10 INT 21H ;读取第一个数 CALL ASC_TO_BIN ;转换第一个数为二进制 MOV BIN_BUF1 , AX ;保存第一个数 MOV DX , OFFSET INPUT_MESSAGE MOV AH , 9 INT 21H ;提示输入一个数 MOV DX , OFFSET IN_ASC_BUF MOV AH , 10 INT 21H ;读取第二个数 CALL ASC_TO_BIN ; 转换第二个数为二进制 ADD AX , BIN_BUF1 ;计算这二个数之和 CALL BIN_TO_ASCII ;将和转换为ASCII码,以供显示用 MOV DX , OFFSET OUTPUT_MESSAGE MOV AH , 9 INT 21H MOV DX , OFFSET OUT_ASC_SUM MOV AH , 9 INT 21HMOV DX,OFFSET QUIT_MESSAGE MOV AH , 9 INT 21HMOV AH , 1 INT 21H CMP AL,Q JZ OVERCMP AL,q JZ OVERJMP STARTOVER: MOV AH , 4CH INT 21Hsl 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_BUF+1 ;取字符个数 MOV CH , 0 DEC CL ;扣除符号位 MOV BX , OFFSET IN_ASC_BUF+3 ;调整BX指向十进制数的最高位 PUSH BX PUSH CXL1: MOV AL , BX AND AL , 0FH MOV BX , AL INC BX LOOP L1 ;将所有数字字符的高四位清0,使之变为数字值 POP CX POP BX MOV AX , 0 ;累加和赋初值 MOV SI , 10L2: MUL SI ADD AL , BX ADC AH , 0 INC BX LOOP L2 ;累加乘10 CMP IN_ASC_BUF+2 , + JZ L3 ;符号是正号,转移 NEG 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 , 0 JGE L4 ;不是负数,转移 NEG AX MOV OUT_ASC_SUM , -L4: CWD MOV BX , 10000 DIV BX ADD AL , 30H ;将万位转换为数字(商应在AX内,但因为商不大于3, ;所以有效部分在AL内) MOV OUT_ASC_SUM+1 , AL ;保存万位数字 MOV AX , DX ;将余数置入AX内,以便当作被除数 CWD MOV BX , 1000 DIV BX ADD AL , 30H MOV OUT_ASC_SUM+2 , AL ;保存千位数字 MOV AX , DX ;将余数置入AX内,以便当作被除数 MOV BL , 100 DIV BL ADD AL , 30H MOV OUT_ASC_SUM+3 , AL ;保存百位数字 MOV AL , AH CBW MOV BL , 10 DIV BL ADD AL , 30H MOV OUT_ASC_SUM+4 , AL ;保存十位数字 ADD AH , 30H MOV OUT_ASC_SUM+5 , AH ;保存个位数字 RETBIN_TO_ASCII ENDPCODE ENDS END START六、程序运行结果 图4 运行结果图七、程序调试中的问题及解决方法刚写完程序第一次调试时,程序老是出错,错误提示如图 所示。调试出错提示经过反复认真检查和修改,最后终于找到了程序出错的原因,原来是子程序调用出错了,后面修改了子程序和子程序的调用方式,程序就可以正常运行了。运行结果如图 所示。八、心得收获 通过微机原理与接口技术的课程设计,使我学以致用,理论联系实际,真正学到了实用的知识。上微机原理与接口技术的时候,我们学了8086CPU的内部结构、汇编语言、基本输入输出设备、定时器芯片、中断控制、串行并行通信、AD、DA等是一些理论知识,很难、很经典,虽然我们看上去懂了,也会做题了。通过课程设计时我们才知道,原来我们只是对理论略知一二,要是谈到实际应用我们真是无从下手。不过,还好我们有课程设计,使我们刚学完理论知识,马上又学以致用,使我们的知识掌握的更加的牢固,同时也激发了我们创新的思想。 通过微机原理与接口技术的课程设计,使我认识到计算机技术广泛应用于现代众多的领域中,起着越来越重要的作用。随着电子技术和计算机技术的发展和应用,计算机应用越来越广泛,计算机应用分为数值计算和非数值应用两大领域。非数值应用又包括数据处理、知识处理 ,例如信息系统、工厂自
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智慧校园校园安全管理创新技术应用深度报告
- 2025年电商平台售后服务质量提升策略与实施路径报告
- 2025年新能源汽车废旧电池回收利用产业链上下游对接与合作报告
- 2025年职业教育产教融合项目资金申请中的职业教育国际化与本土化结合报告
- 2025年城市公共停车场建设社会稳定风险评估与历史文化保护报告
- 2025年文化产业园区的产业集聚与服务体系建设趋势分析报告
- 解析卷冀教版8年级下册期末试题及参考答案详解【B卷】
- 推拿治疗学考试题库附参考答案详解【夺分金卷】
- 2025年度输送泵租赁及现场技术服务合同
- 2025版大型设施设备定期检修劳务合同范本
- 金融工程.郑振龙(全套课件560P)
- 读书分享交流会《全球通史》课件
- 古典诗歌的生命情怀
- 2017版小学科学课程标准思维导图
- 诚信展业与法律法规月演示
- 第十一章-异常分娩-1产力异常
- P公司采购管理程序
- 《发展汉语(第二版)中级综合(Ⅰ)》第7课+课件
- 跆拳道竞赛规则
- 人美版小学美术三年级上册教学计划
- 数据结构与算法课程设计 教学大纲
评论
0/150
提交评论