求出500以内回文数微机原理课程设计说明书

上传人:s9****2 文档编号:497978530 上传时间:2024-02-25 格式:DOCX 页数:16 大小:76.96KB
返回 下载 相关 举报
求出500以内回文数微机原理课程设计说明书_第1页
第1页 / 共16页
求出500以内回文数微机原理课程设计说明书_第2页
第2页 / 共16页
求出500以内回文数微机原理课程设计说明书_第3页
第3页 / 共16页
求出500以内回文数微机原理课程设计说明书_第4页
第4页 / 共16页
求出500以内回文数微机原理课程设计说明书_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《求出500以内回文数微机原理课程设计说明书》由会员分享,可在线阅读,更多相关《求出500以内回文数微机原理课程设计说明书(16页珍藏版)》请在金锄头文库上搜索。

1、目录摘要 11. 设计目的和要求21.1 设计目的22. 程序设计说明22.1 程序设计流程图 32.2 程序段落说明 42.2.1 程序定义段 42.2.3 回文数判定程序设计 52.2.4 程序结束程序段73. 程序调试及结果7小结及体会8参考文献9附录 10摘要日常生活中,计算机能处理的信息是多种多样的,如各种数据的查询与计算, 不同的文字符号,各种图像信息。利用计算机的逻辑性与它的告诉计算,我们可 以解决许多趣味性的数学问题,用汇编语言程序能实现数的查找计算及显示,能 在 MF2KI 中演示,编写一定功能的程序。此次课程设计基于我们这学期所学的微机原理与接口技术,要求我们运 用书上知识

2、解决汇编语言编程问题,程序要求能将实现大小写字母转换,并且输 入查找字符时,能显示该字符在字符串中的位置,若原字符串中没有该字符,则 在屏幕上显示相应的提示语句。程序能实现人机交互功能,有一定的提示语句。汇编语言设计时先绘制流程图,分配存储空间,编写程序,对于我们熟悉汇 编语言程序的编写,程序思路的设计有很大的帮助,应严肃认真对待。关键词:汇编语言 编程 回文数的寻找求出 500 以内的回文数1.设计目的和要求1.1 设计目的(1)进一步建立微机系统的概念,加深对系统的理解和认识,培养学生应 用微型计算机解决实际问题的能力;(2)进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模 程

3、序的编写,提高编写汇编语言程序的水平和学习程序调试方法。(3)进一步熟悉微机最小系统的构成及常用接口芯片的使用,提高系统设 计能力。a) 设计要求1设计汇编语言程序,实现求出500 以内的回文数的功能,具体功能要求如下: 如果一个数从左边和从右边读都是相同的数,就称它为回文数,例如383,求出 500 以内的回文数并输出显示。要求:提示数据范围为0-500;换行显示结果。2根据功能要求绘制程序流程图、编写完整的汇编语言程序并上机调试2.程序设计说明汇编语言要求设计一个程序来找出0到500以内的回文数,如果一个数从 左边和从右边读都是相同的数,就称它为回文数,故设计此程序思维很简单, 根据回文数

4、的特性,1至9都为回文数,而在10到500间的回文数需另外求出, 因此本程序设计采用分支结构与循环结构相结合。首先,设计一循环程序,在1到500间对每个数进行判断,因此要循环500次,在执行程序前,应先定义一个变量,为简化程序,由上述已知1至9都为回文数,故先比较此数与10的大小。从1开始,如果小于10,可以直接输出;如果大于10,将此数与100比较,如小于100,将十位与个位相比较,相同则为回文数,执行输出指令,不同则执行加一指令继续循环;如此数大于100,将个位与百位相比较,相同则为回文数,执行输出指令,不同则执行加一指令继续循环,直到1到500的数都检查了一遍,至此,1到500内的回文数

5、都可 求出。2.1 程序设计流程图图一 程序流程图程序开始时,先定义数据段、堆栈段和代码段,在判断程序程序继续进行后, 初始化,定义循环次数及给变量赋值,程序步骤主要分三步:a) 比较变量与 10 的大小,当变量小于10 时,判定此数为回文数,将变量的个 位、十位、百位存储在内存单元 num、num+1、num+2 中,当然小于 10 时个 位与十位赋值为0,将变量加上0030H,转换为ASCII码,然后即可调用DOS功能将计数值输出在屏幕上b)当变量大于 10 时,比较变量与 100 的大小,若变量小于 100,则除以 10,由汇编语言的运算法则知,余数存储在AH中,商存储在AL中,要将余数

6、商 都转换成ASCII码,将AX加上3030H,比较余数和商的大小,若相等则判定 为回文数,将余数值存储在num,商存储在num+1,调用DOS功能将计数值 输出在屏幕上;不相等则将变量加一,回到(a)循环c)当变量大于100时,除以10,余数存储在AH中,加上0030H后存储在num 中,;再将商除以10 (注意AH需清零),余数和商都加上0030H,分别存储 在 num+1 和 num+2 中,比较 num 与 num+2 大小,相等则判定为回文数,调用 DOS功能将计数值输出在屏幕上;不相等则回到(a)继续循环,直到变量等 于 500 为止。2.2 程序段落说明2.2.1 程序定义段 程

7、序定义段要定义数据段、堆栈段、代码段。定义数据段堆栈段、数据段、 代码段并不复杂,参照课本上定义方法即可。不同的是在数据段的的定义中,需 要多次定义提示输入输出的语句,在下续编程过程中直接引用,同时,定义数据 区,定义堆栈段和代码段的程序直接参考课本即可。定义段具体程序见附录2.2.3 字符输入输出程序设计字符输入输出要运用DOS功能调用,DOS调用过程如下:(1)将DOS调用功能号送入AH;(2)如有需要,按要求给定输入参数;(3)写入中断指令“ INT 21H”。输出多字符提示语句,可用MOV AH,9INT 21H本程序设计每行输出7个回文数,摘取具体程序段如下:MOV DX,OFFSE

8、T numMOV AH,9INT 21HINC shuMOV DX,0007HAND DX,shuCMP DX,0007HJNE LOPMOV DX,OFFSET numMOV AH,9INT 21HLOP: INC BX定义变量 shu加1当 shu 累计到 7 时换行2.2.3 回文数判定程序设计先定义循环次数及给变量赋予初始值MOV CX,500MOV BX,0执行步骤(a)的程序段NEXT: CMP BX,10JAE CONT1MOV AX,BXADD AX,0030HMOV RESU,0MOV RESU+1,0MOV RESU+2,ALJMP DISP步骤(b)的程序段CONT1:

9、CMP BX,100JAE CONT2;于 10 事转移到 CONT1;换为 ASCII 码;位赋值;位赋值;位赋值;于 100 时转移到 CONT2MOV AX,BXMOV DL,10DIV DLADD AX,3030HCMP AH,ALJNE LOPMOV RESU,0MOV RESU+1,ALMOV RESU+2,AHJMP DISP步骤(c)的程序段CONT2: MOV AX,BXMOV DL,10DIV DLADD AH,30HMOV RESU+2,AHMOV AH,0DIV DLADD AH,30HMOV RESU+1,AHADD AL,30HMOV RESU,ALCMP AL,R

10、ESU+2JNE LOP循环段程序段LOP: INC BXLOOP NEXT;十位与个位转换成 ascii 码;相等转移到 LOP;个位赋值;将 AH 高四位清零;变量加 1;执行循环上述程序段执行后,计算机能找到0到500以内的回文数并且将字符所在位置的值转换为ASCI I值,输出在屏幕上。2.2.4 程序结束程序段调用DOS功能,程序段如下:MOV AH,4CHINT 21H;退出程序3 程序调试及结果程序调试在MF2KI集成环境中进行,输入要调试程序,点击“汇编”若程序 无错误,点击“连接”、“运行”,看结果是否正确;若点击“汇编”后出现错误 说明程序语句写错或者语句用错,修改直至正确。

11、程序运行时往往不是一次就能 得出正确的结果,需要多次修改,反复调试,才能得出正确结果.7612334642086123341871233475219712334981234486420812344191234419753191234442112042086421123453112343牯27354364122344208641223451223453197512234图二 程序结果显示小结及体会此次课程历时一个班星期,但由于之前准备考试,并没有花太多时间在它上 面,在加上自己对汇编语言程序设计并不是很熟悉,以至于在后来时间比较紧, 设计时也遇到了不少的困难。总的来说,这个程序的设计思路并不是很

12、复杂,其中的字符转换和查找部分 的算法都不是很难,属于基础的程序设计。设计程序时,我参考的课本上的程序 将字符转换部分设计出来了,相当于程序完成了一半,本以为可以很快的把那个 程序设计出来,在判定三位数的数字是否为回文数时,没有将第一次除以 10 后 存储余数的 AH 清零,导致程序得不得正确的结果,后来虽然知道问题在哪里, 但是还是花了很多时间才顺利解决问题。程序的退出处也遇到了困难,退出程序 段的位置放置出现错误,以至于没有完成要求就退出程序,最终用JMP指令解决 问题。程序设计整个课程设计中的大部分时间,接下来的工作就比较简单了,通 过此次课程设计,让我对汇编语言程序编写有了更深的认识,

13、对绘制程序流程图, 算法的实现有了更深的感悟,这些收获不止可以运用到汇编语言设计中,对于其 他语言的程序设计也有很大的帮助。汇编语言与我们的日常思维习惯有很大差 别,刚开始接触时难免会遇到很多困难,这就需要我们静下心来慢慢分析,多次 修改、调试后,最终都会出现正确的答案。在修改的过程会使我们对指令越来越 熟悉,也培养了我们独立思考、解决问题的能力。参考文献1 彭虎等编著微机原理与接口技术(第二版)北京:电子工业出版社,20082 沈美明,温东禅.IBM-PC汇编语句程序设计(第2版).北京:清华大学出版 社, 20013 任向明,卢惠林汇编语言程序设计实用教程北京:清华大学出版社, 20094

14、 马力妮.80x86汇编语言程序设计北京:机械工业出版社,20045 曹加恒,苏光奎,许先斌新一代汇编语言程序设计北京:高等教育出版社, 2003附录DATASEGMENTNUMDW 0RESUDB 0,0,0,0,0,$RETUDB 0AH,0DH,$DATAENDS; 数据段定义STACK1SEGMENT PARA STACKDW20H DUP(?)STACK1ENDS; 堆栈段定义CODESEGMENT; 代码段定义ASSUME DS:DATA,SS:STACK1,CS:CODESTART: MOV AX,DATAMOV DS,AX; 初始化MOV CX,500; 定义循环次数为 500 次MOV BX,0; 赋初始值为 0NEXT: CMP BX,10JAE CONT1; 大于 10 则跳转MOV AX,BXADD

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号