求出500以内回文数微机原理课程设计说明书_第1页
求出500以内回文数微机原理课程设计说明书_第2页
求出500以内回文数微机原理课程设计说明书_第3页
求出500以内回文数微机原理课程设计说明书_第4页
求出500以内回文数微机原理课程设计说明书_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

目录摘要11.设计目的和要求21.1设计目的22.程序设计说明22.1程序设计流程图32.2程序段落说明4程序定义段4回文数判定程序设计52.2.4程序结束程序段73.程序调试及结果7小结及体会8参考文献9附录10摘要日常生活中,计算机能处理的信息是多种多样的,如各种数据的查询与计算,不同的文字符号,各种图像信息。利用计算机的逻辑性与它的告诉计算,我们可以解决许多趣味性的数学问题,用汇编语言程序能实现数的查找计算及显示,能在MF2KI中演示,编写一定功能的程序。此次课程设计基于我们这学期所学的《微机原理与接口技术》,要求我们运用书上知识解决汇编语言编程问题,程序要求能将实现大小写字母转换,并且输入查找字符时,能显示该字符在字符串中的位置,假设原字符串中没有该字符,那么在屏幕上显示相应的提示语句。程序能实现人机交互功能,有一定的提示语句。汇编语言设计时先绘制流程图,分配存储空间,编写程序,对于我们熟悉汇编语言程序的编写,程序思路的设计有很大的帮助,应严肃认真对待。关键词:汇编语言编程回文数的寻找求出500以内的回文数设计目的和要求1.1设计目的〔1〕进一步建立微机系统的概念,加深对系统的理解和认识,培养学生应用微型计算机解决实际问题的能力;〔2〕进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模程序的编写,提高编写汇编语言程序的水平和学习程序调试方法。〔3〕进一步熟悉微机最小系统的构成及常用接口芯片的使用,提高系统设计能力。设计要求1.设计汇编语言程序,实现求出500以内的回文数的功能,具体功能要求如下:如果一个数从左边和从右边读都是相同的数,就称它为回文数,例如383,求出500以内的回文数并输出显示。要求:提示数据范围为0-500;换行显示结果。2.根据功能要求绘制程序流程图、编写完整的汇编语言程序并上机调试程序设计说明汇编语言要求设计一个程序来找出0到500以内的回文数,如果一个数从左边和从右边读都是相同的数,就称它为回文数,故设计此程序思维很简单,根据回文数的特性,1至9都为回文数,而在10到500间的回文数需另外求出,因此本程序设计采用分支结构与循环结构相结合。首先,设计一循环程序,在1到500间对每个数进行判断,因此要循环500次,在执行程序前,应先定义一个变量,为简化程序,由上述1至9都为回文数,故先比拟此数与10的大小。从1开始,如果小于10,可以直接输出;如果大于10,将此数与100比拟,如小于100,将十位与个位相比拟,相同那么为回文数,执行输出指令,不同那么执行加一指令继续循环;如此数大于100,将个位与百位相比拟,相同那么为回文数,执行输出指令,不同那么执行加一指令继续循环,直到1到500的数都检查了一遍,至此,1到500内的回文数都可求出。2.1程序设计流程图图一程序流程图程序开始时,先定义数据段、堆栈段和代码段,在判断程序程序继续进行后,初始化,定义循环次数及给变量赋值,程序步骤主要分三步:比拟变量与10的大小,当变量小于10时,判定此数为回文数,将变量的个位、十位、百位存储在内存单元num、num+1、num+2中,当然小于10时个位与十位赋值为0,将变量加上0030H,转换为ASCII码,然后即可调用DOS功能将计数值输出在屏幕上当变量大于10时,比拟变量与100的大小,假设变量小于100,那么除以10,由汇编语言的运算法那么知,余数存储在AH中,商存储在AL中,要将余数商都转换成ASCII码,将AX加上3030H,比拟余数和商的大小,假设相等那么判定为回文数,将余数值存储在num,商存储在num+1,调用DOS功能将计数值输出在屏幕上;不相等那么将变量加一,回到〔a〕循环当变量大于100时,除以10,余数存储在AH中,加上0030H后存储在num中,;再将商除以10〔注意AH需清零〕,余数和商都加上0030H,分别存储在num+1和num+2中,比拟num与num+2大小,相等那么判定为回文数,调用DOS功能将计数值输出在屏幕上;不相等那么回到〔a〕继续循环,直到变量等于500为止。2.2程序段落说明程序定义段程序定义段要定义数据段、堆栈段、代码段。定义数据段堆栈段、数据段、代码段并不复杂,参照课本上定义方法即可。不同的是在数据段的的定义中,需要屡次定义提示输入输出的语句,在下续编程过程中直接引用,同时,定义数据区,定义堆栈段和代码段的程序直接参考课本即可。定义段具体程序见附录字符输入输出程序设计字符输入输出要运用DOS功能调用,DOS调用过程如下:〔1〕将DOS调用功能号送入AH;(2〕如有需要,按要求给定输入参数;写入中断指令“INT21H”。输出多字符提示语句,可用MOVAH,9INT21H本程序设计每行输出7个回文数,摘取具体程序段如下:······MOVDX,OFFSETnum MOVAH,9

INT21H

INCshu;定义变量‘shu’加1

MOVDX,0007H

ANDDX,shu

CMPDX,0007H

JNELOP;当shu累计到7时换行

MOVDX,OFFSETnum MOVAH,9

INT21H

LOP: INCBX······回文数判定程序设计先定义循环次数及给变量赋予初始值MOVCX,500MOVBX,0执行步骤〔a〕的程序段NEXT: CMPBX,10

JAECONT1;于10事转移到CONT1MOVAX,BX

ADDAX,0030H;换为ASCII码MOVRESU,0;位赋值MOVRESU+1,0;位赋值MOVRESU+2,AL;位赋值JMPDISP

步骤〔b〕的程序段CONT1:CMPBX,100

JAECONT2;于100时转移到CONT2

MOVAX,BX

MOVDL,10

DIVDL

ADDAX,3030H;十位与个位转换成ascii码

CMPAH,AL

JNELOP;相等转移到LOP

MOVRESU,0

MOVRESU+1,AL

MOVRESU+2,AH

JMPDISP

步骤〔c〕的程序段CONT2:MOVAX,BXMOVDL,10

DIVDL

ADDAH,30HMOVRESU+2,AH;个位赋值MOVAH,0;将AH高四位清零DIVDL

ADDAH,30H

MOVRESU+1,AH

ADDAL,30H

MOVRESU,AL

CMPAL,RESU+2

JNELOP循环段程序段LOP: INCBX;变量加1LOOPNEXT;执行循环上述程序段执行后,计算机能找到0到500以内的回文数并且将字符所在位置的值转换为ASCII值,输出在屏幕上。程序结束程序段调用DOS功能,程序段如下:MOVAH,4CHINT21H;退出程序3程序调试及结果程序调试在MF2KI集成环境中进行,输入要调试程序,点击“汇编”,假设程序无错误,点击“连接”、“运行”,看结果是否正确;假设点击“汇编”后出现错误,说明程序语句写错或者语句用错,修改直至正确。程序运行时往往不是一次就能得出正确的结果,需要屡次修改,反复调试,才能得出正确结果.图二程序结果显示小结及体会此次课程历时一个班星期,但由于之前准备考试,并没有花太多时间在它上面,在加上自己对汇编语言程序设计并不是很熟悉,以至于在后来时间比拟紧,设计时也遇到了不少的困难。总的来说,这个程序的设计思路并不是很复杂,其中的字符转换和查找局部的算法都不是很难,属于根底的程序设计。设计程序时,我参考的课本上的程序将字符转换局部设计出来了,相当于程序完成了一半,本以为可以很快的把那个程序设计出来,在判定三位数的数字是否为回文数时,没有将第一次除以10后存储余数的AH清零,导致程序得不得正确的结果,后来虽然知道问题在哪里,但是还是花了很多时间才顺利解决问题。程序的退出处也遇到了困难,退出程序段的位置放置出现错误,以至于没有完成要求就退出程序,最终用JMP指令解决问题。程序设计整个课程设计中的大局部时间,接下来的工作就比拟简单了,通过此次课程设计,让我对汇编语言程序编写有了更深的认识,对绘制程序流程图,算法的实现有了更深的感悟,这些收获不止可以运用到汇编语言设计中,对于其他语言的程序设计也有很大的帮助。汇编语言与我们的日常思维习惯有很大差异,刚开始接触时难免会遇到很多困难,这就需要我们静下心来慢慢分析,屡次修改、调试后,最终都会出现正确的答案。在修改的过程会使我们对指令越来越熟悉,也培养了我们独立思考、解决问题的能力。参考文献[1]彭虎等编著.微机原理与接口技术〔第二版〕.北京:电子工业出版社,2008[2]沈美明,温东禅.IBM-PC汇编语句程序设计〔第2版〕.北京:清华大学出版社,2001[3]任向明,卢惠林.汇编语言程序设计实用教程.北京:清华大学出版社,2009[4]马力妮.80x86汇编语言程序设计.北京:机械工业出版社,2004[5]曹加恒,苏光奎,许先斌.新一代汇编语言程序设计.北京:高等教育出版社,2003附录DATA SEGMENT NUMDW0RESU DB0,0,0,0,0,'$'RETUDB0AH,0DH,'$'DATA ENDS;数据段定义STACK1 SEGMENTPARASTACK DW20HDUP(?)STACK1 ENDS;堆栈段定义CODE SEGMENT;代码段定义 ASSUMEDS:DATA,SS:STACK1,CS:CODESTART: MOVAX,DATA MOVDS,AX ;初始化 MOVCX,500;定义循环次数为500次MOVBX,0;赋初始值为0NEXT: CMPBX,10 JAECONT1;大于10那么跳转MOVAX,BX ADDAX,0030H;转换为ASCII码 MOVRESU,0;百位赋值 MOVRESU+1,0;十位赋值 MOVRESU+2,AL;个位赋值 JMPDISP;输出该数CONT1: CMPBX,100 JAECONT2;大于等于100那么跳转 MOVAX,BX MOVDL,10;变量除以10 DIVDL ADDAX,3030H;十位与个位都转换为ASCII码CMPAH,AL JNELOP;不相等那么转到LOPMOVRESU,0 MOVRESU+1,AL MOVRESU+2,AH JMPDISP;输出该数CONT2:MOVAX,BX MOVDL,10 DIVDL;变量除以10 ADDAH,30H;余数转为ASCII码 MOVRESU+2,AH MOVAH,0;将AH清零 DIVDL;商除以10 ADDAH,30H MOVRESU+1,AH;十位赋值ADDAL,30H MOVRESU,AL;个位赋值CMPAL,RESU+2 JNELOP;不相等那么转到LOPDISP: MOVDX,OFFSETRESU;取该数的内存地址 MOVAH,9 INT21H IN

温馨提示

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

评论

0/150

提交评论