atm取款机程序及键盘录入数据的转换与显示微机原理课程设计_第1页
atm取款机程序及键盘录入数据的转换与显示微机原理课程设计_第2页
atm取款机程序及键盘录入数据的转换与显示微机原理课程设计_第3页
atm取款机程序及键盘录入数据的转换与显示微机原理课程设计_第4页
atm取款机程序及键盘录入数据的转换与显示微机原理课程设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

键盘录入数据的转换与显示1设计任务及要求分析1.1设计任务从键盘读入二个五位十进制数(1位符号位+4位数值位),并将这二个十进制数,分别转换为二进制数,然后求其和,再将和以十进制形式进行显示。按Q退出程序。1.2要求分析从设计任务中可以看出此次课设要求是:从键盘中输入两个五位十进制数(格式如-8888、+9999等),显然通过键盘输入的此类十进制数实际上输入的是对应字符的ASCII码,若想求两个数的和必须先将这两个数对应的二进制数求出,然后再求其和,求和完成后将二进制数再转换成对应的十进制数用显示器输出,完成两个五位十进制数的求和然后以十进制的形式显示。

2方案比较及认证说明输入输出方式的比较。方案一:BIOS功能调用方式输入输出数据。此方案使用相对复杂一些,而其我们对BIOS功能调用不是很熟悉。方案二:MSDOS功能调用的方式输入输出数据。此方案简单实用、由于我们对MSDOS比较熟悉,所以用起来十分方便。综上,我们选用方案二的输入输出方式,输入数据和输出数据。

3系统原理阐述3.1统设计的软硬件环境我们设计键盘录入数据的转换与显示的硬件环境是X86计算机平台的IBM-PC兼容机,开发的软件环境是WindowsXP操作系统下的MFPCI98汇编编译环境。虽然我们不是在标准的8086IBM_PC平台下编程,也不是标准的DOS操作系统环境下编程;但是我们的硬件平台是兼容8086的X86计算机平台,软件平台是更高级并且兼容DOS的WindowsXP操作系统,所以我们程序运行的结果绝对跟标准8086IBM-PC平台上运行的结果完全一样。3.2统设计中用到的DOS调用DOS是美国Microsoft公司为IBM-PC研制的磁盘操作系统(DiskOperatingSystem),也称为IBM-DOS或MS-DOS。DOS不仅为用户提供了许多使用的指令,而其还有用户可以直接调用的上百个常用子程序。对这些子程序的调用,称为系统功能调用。这些子程序的功能主要是进行磁盘的读写、控制管理、内存管理、基本输入输出管理等。在使用时,用户不需要关心和了解各种IO接口硬件的详细情况就能直接完成对IO接口的控制和管理。为了使用方便,将所有子程序从1开始循序编号,这些编号称为DOS功能调用号。其调用过程为:DOS功能调用号送AH寄存器。如果需要,按要求给定输入参数(有的不需要输入参数)。写入中断指令“INT21H”。下面介绍一些在本程序中用到的一些DOS输入输出功能。1.单字符输入--1号功能:从键盘输入一个字符。输入参数:无。输出参数:AL=ASCII码。2.单字符输出--2号功能:在屏幕上显示1个字符(ASCII码)。输入参数:DL=ASCII码。输出参数:无。3.多字符输入——0AH功能:多个字符输入到缓冲区。输入参数:DS:DX=输入缓冲区首地址。输出参数:DS:DX=输入字符串所在缓冲区地址。设置缓冲区要注意以下几点:缓冲区第1个字节存放预定字符个数,最多255个。缓冲区第2个字节保留,用于调用返回时存放实际输入的字符个数。缓冲区第3个字节开始,存放输入的字符。缓冲区要考虑留一个字节作为回车符。4多字符输出——9号功能:多个字符输出到屏幕显示。输入参数:DS:DX=输出字符缓冲区首地址。输出参数:无。该功能对输出字符的个数没有要求,但是输出字符串要以‘$’结束。5过程终止——4CH号该调用的功能是结束当前程序,并且返回调用它的程序。如果在DEBUG状态下运行则返回DEBUG;如果在DOS下运行,则返回DOS。在汇编语言程序结束处加上“MOVAX,4C00H”和“INT21H”两条指令,以利于程序执行完毕,返回操作系统控制。

4软件设计说明4.1ASCII码转换成二进制算法实现首先将其转换成十进制数字,再用累加和乘10加X的方法变成二进制数,如将1358转换为二进制数,可先将累加和赋0,再计算(((1*10+3)*10+5)*10+8),结果为二进制数,再由符号位决定是否需要求补。4.2二进制转换成ASCII码算法实现AX中的数范围在+32767到-32768之间,先检查AX中的符号位,以决定输出“+”还是“-”,若是负数,应先求补,得到原码后即可与正数作统一处理。转换方法为将被转换的二进制数先除以10000,商;即为万位数,再将余数除以1000,商为千位数,以此类推,求出百、十位数,剩下的为个位数。最后,将各个数加上30H,即成为对应字符。4.3主程序结构分析程序执行一次一共用了9次21H号中断。第1、3、5、6、7次调用前AH写入的是9,所以这几次调用INT21是在屏幕上显示DX为首地址的字符串,也就是显示的是响应的提示信息和两个数之和的结果;第2、4次INT21H中断调用前AH写入了10,所以这两次调用的作用是输入两个五位十进制数,且在没个五位的十进制数输入后,立即调用ASCII_TO_BIN函数转换成相应的二进制数;第八次INT21H调用之前AH中写入了1,该次输入一个字符,在把输入的该字符和Q和q比较,看是否是其中的一个,若是则程序结束,此时在AH中写入4CH中,再调用INT21H,显然是把CPU交给操作系统;若不是则程序回到开始处,程序循环。主程序的流程图如图4-1所示。图4-1主程序流程图4.4子程序结构分析ASC_TO_BIN(ASCII码字符转化成二进制子函数),该函数的功能是五位ASCII码十进制数转换成二进制数;在主程序中一共调用了两次该函数,分别是在输入完成两个五位十进制数后。算法实现已在前面分析,这里不再重述,ASC_TO_BIN子程序的流程图如图4-2图所示。图4-2ASC_TO_BIN子程序流程图BIN_TO_ASCII(将二进制数转换成相应ASCII码形式十进制数函数),该函数的功能是将一个二进制数转化成对应ASCII码形式的十进制数,以便屏幕输出。该子程序的算法实现已在前面说明,程序流程图如图4-3所示。图4-3BIN_TO_ASCII子程序流程图4.5中断程序的结构分析INT21H号中断是一个系统中断,中断程序根据中断前写入AH中的值决定中断的功能,前面已说明中断程序的功能,中断程序执行的流程图如图4-4所示。图4-4中断程序流程图

5调试记录及结果分析5.1调试记录刚写完程序第一次调试时,程序老是出错,错误提示如图5-1所示。图5-1调试出错提示经过反复认真检查和修改,最后终于找到了程序出错的原因,原来是子程序调用出错了,后面修改了子程序和子程序的调用方式,程序就可以正常运行了。运行结果如图5-2所示。图5-2正确运行的结果5.2调试结果分析从图5-2和附录二中可以看出,程序运行结果完全满足预期要求。程序能够完成两个五位十进制数的求和,并显示结果。并能实现按Q或q推出程序。总结和心得体会通过这次微机原理与接口技术课程设计,加强了我们动手、思考和解决问题的能力。通过参加这次的课程设计,我学到了很多无法在课堂上学到的知识。在课堂上我们学习的都是理论知识,而课程设计是锻炼我们把那些理论运用到我们实际的生活中。现在,我对课设做以下几点总结:(1)通过微机原理与接口技术的课程设计,使我认识到计算机技术广泛应用于现代众多的领域中,起着越来越重要的作用。随着电子技术和计算机技术的发展和应用,计算机应用越来越广泛,计算机应用分为数值计算和非数值应用两大领域。非数值应用又包括数据处理、知识处理,例如信息系统、工厂自动化、办公室自动化、家庭自动化、专家系统、模式识别、机器翻译等领域。我们学习的微机原理与接口技术是现在计算机技术的基础,现在学好微机原理与接口技术,好好的理论联系实际,将来才能为我国的计算机技术发展做出贡献。(2)通过微机原理与接口技术的课程设计,使我学以致用,理论联系实际,真正学到了实用的知识。上微机原理与接口技术的时候,我们学了8086CPU的内部结构、汇编语言、基本输入输出设备、定时器芯片、中断控制、串行并行通信、AD、DA等是一些理论知识,很难、很经典,虽然我们看上去懂了,也会做题了。通过课程设计时我们才知道,原来我们只是对理论略知一二,要是谈到实际应用我们真是无从下手。不过,还好我们有课程设计,使我们刚学完理论知识,马上又学以致用,使我们的知识掌握的更加的牢固,同时也激发了我们创新的思想,真是一举两得,收获不小啊。所以我们感谢课程设计,感谢老师们认真耐心的辅导我们的课程设计,我希望以后我们可以多做一些类似的课程设计。(3)通过微机原理与接口技术的课程设计,本人搞懂了一直来没有搞清楚的几个问题。我们在学习微机原理与接口技术以前,我们学过C、VB等高级语言,一直以来我们都用高级语言编程的,一直以来我不明白高级语言是如何在CPU中执行和计算的通过学习汇编语言我明白了指令时如何执行的。还有我很早就开始学习单片机,当然用的是高级语言C,一直以来我有都没有明白堆栈的概念,不明白堆栈具体有什么用,该怎么用?通过汇编语言的学习我也明白堆栈的作用和堆栈具体应该怎么用。总之,通过微机原理与接口技术的课计,我获益匪浅我,希望以后可以多做一些课设。参考文献[1]周佩玲彭虎傅忠谦.微机原理与接口技术.北京:电子工业出版社,2005[2]冯继超.微机原理实验指导书.武汉:武汉理工大学教材中心,2008[3]索梅.汇编语言程序设计.北京:清华大学出版社,1994[4]朱冰.软件工程.北京:北京大学出版社,2003[5]李昭原.数据库原理及应用.北京:科学技术出版社,2000[6]周佩玲彭虎傅忠谦.微机原理与接口技术学习指导.北京:电子工业出版社,2008

附录一源程序和程序注释DATASEGMENT COMMONINPUT_MESSAGE DB0AH,'PLEASEINPUTANUMBER(LESSTHAN5FIGURES):$'QUIT_MESSAGE DB0AH,'ENTERQORqTOQUITANYOTHERTOCONTINUE:$'IN_ASC_BUF DB6 ;十进制数的输入缓冲区,共可接收6个字符 DB? ;保留,用于10号调用时DOS填入实际输入字符个数 DB6DUP(?) ;一个符号位,四位数字ASCII码,加上一个回车符,共计6字符BIN_BUF1 DW? ;一个数转换为二进制后,放于此处OUTPUT_MESSAGE DB 0AH,'THESUMIS:','$'OUT_ASC_SUM DB 6DUP(?),'$' ;将二个数的和转换为ASCII码后,放于此处, ;以供9号调用显示DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAslPROCFARSTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETINPUT_MESSAGEMOVAH,9INT21H;提示输入一个数MOVDX,OFFSETIN_ASC_BUFMOVAH,10INT21H;读取第一个数CALLASC_TO_BIN ;转换第一个数为二进制MOVBIN_BUF1,AX ;保存第一个数MOVDX,OFFSETINPUT_MESSAGEMOVAH,9INT21H;提示输入一个数MOVDX,OFFSETIN_ASC_BUFMOVAH,10INT21H;读取第二个数CALLASC_TO_BIN ;转换第二个数为二进制ADDAX,BIN_BUF1 ;计算这二个数之和CALLBIN_TO_ASCII ;将和转换为ASCII码,以供显示用MOVDX,OFFSETOUTPUT_MESSAGEMOVAH,9INT21HMOVDX,OFFSETOUT_ASC_SUMMOVAH,9INT21H MOVDX,OFFSETQUIT_MESSAGE MOVAH,9INT21H MOVAH,1INT21H CMPAL,'Q' JZOVER CMPAL,'q' JZOVER JMPSTARTOVER: MOVAH,4CH INT21HslENDPASC_TO_BINPROC;ASCII码转换为二进制数;入口:十进制数的ASCII码在IN_ASC_BUF内;出口:转换后的二进制数在AX内;算法:先将其转换成十进制数字,再用累加和乘10加X的方法变成二进制数,如将;358转换为二进制数,可先将累加和赋0,再计算(((0*10+3)*10+5)*10+8),结果为二;进制数,再由符号位决定是否需要求补。MOVCL,IN_ASC_BUF+1 ;取字符个数MOVCH,0DECCL;扣除符号位MOVBX,OFFSETIN_ASC_BUF+3 ;调整BX指向十进制数的最高位PUSHBXPUSHCXL1:MOVAL,[BX]ANDAL,0FHMOV[BX],ALINCBXLOOPL1;将所有数字字符的高四位清0,使之变为数字值POPCXPOPBXMOVAX,0;累加和赋初值MOVSI,10L2:MULSIADDAL,[BX]ADCAH,0INCBXLOOPL2;累加乘10CMPIN_ASC_BUF+2,'+'JZL3;符号是正号,转移NEGAX;符号是负号,求补L3:RETASC_TO_BINENDPBIN_TO_ASCIIPROC;将二进制数转换为对应十进制数数字的ASCII码;入口:二进制数在AX内;出口:转换后的ASCII码在OUT_ASC_SUM变量内;算法:AX中的数范围在+32767到-32768之间,先检查AX中的符号位,以决定输出“+”;还是“-”,若是负数,应先求补,得到原码后即可与正数作统一处理。转换方法为将被转换的;二进制数先除以10000,商;即为万位数,再将余数除以1000,商为千位数,以此类推,求出;百、十位数,剩下的为个位数。最后,将各个数加上30H,即成为对应字符。MOVOUT_ASC_SUM,'+'CMPAX,0JGEL4;不是负数,转移NEGAXMOVOUT_ASC_SUM,'-'L4:CWDMOVBX,10000DIVBXADDAL,30H;将万位转换为数字(商应在AX内,但因为商不大于3,;所以有效部分在AL内)MOVOUT_ASC_SUM+1,AL ;保存万位数字MOVAX,DX;将余数置入AX内,以便当作被除数CWDMOVBX,1000DIVBXADDAL,30H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论