武汉理工大学 汇编课设 1-5000之间的素数.doc

武汉理工大学 汇编课设 1-5000之间的素数.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
武汉理工大学 汇编课设 1-5000之间的素数

1. 设计题目 求1~5000之间的所有素数 问题描述 应用子程序结构设计友好用户界面,以进一步熟悉开发工具MASM并理解和掌握较复杂程序的设计方法,具体的设计任务及要求如下: (1) 熟悉汇编语言循环结构; (2)打印出1-5000之间的素数; (3)程序采用子程序结构,结构清晰; (4)友好清晰的用户界面,能识别输入错误并控制错误的修改。 3. 设计 3.1问题总体思路 题目要求输出1~5000之间的素数,解决问题时用一个main程序和两个子程序来完成不同的功能。在我写的这个程序里,不把数据固定为5000,而是对2到10000中的所有数据都可找出小于该数的所有素数,增加了灵活性。 在这个问题中需要完成的功能为输入一个符合要求的数据,找出小于其是否为素数,若是素数则输出。 因此需要完成的功能是输入数据,判断数据是否符合要求,判断数据是否为素数,输出符合条件的素数以及错误提示等。 在这里用main程序和inputnumber子程序和printf子程序来完成以上功能。 3. 2主要算法设计 主程序main的算法设计思路 在界面上显示选单0和1,让用户选择是开始查询素数还是退出程序。若用户输入1,则调用输入函数(此处还加了一小段代码,为用户输入不是0和1时的交互程序,若输入既不是0,又不是1,则继续选择0或1),若输入数据符合条件,则调用printf函数,找出并显示小于该数的素数。 其自然语言算法如下: Start: 1 显示选单(0,退出程序;1,开始查询) 2 If(choice=0) 3 Exit 4 Else if (choice!=1choice!=0) 重新选择 5 Else if (choice=1) 调用inputnumber函数,输入数据 6 If 数据不符合题意,exit 7 Else 调用printf函数 子程序inputnumber的设计思路 该子程序主要功能为数据的输入。 在界面上显示 input a number between 1~~10000:,用户输入数字字符输入数据存入缓存区,(其中需要牢记掌握键盘输入数据到缓存区的时候DS:DX为缓冲区首地址(ds:dx+1)存储的是实际输入的字符数bx中数据为0,初始quan为1,权的增量quanrise为10 Start: 1 显示 input a number between 1~~10000:键盘输入数据到缓冲区 3 si=buf[1] ; buf[1]存储的是实际输入的字符数 Just=0;(exit) 6 Else 7 For(buf[i=5];si0;i--) { 9 Quan=quan*quanrise; 10 and Buf[i],000fh; Ax= Buf[i]*quan; 12 Bx=bx+ax; 13 } (3)子程序printf的设计思路 改程序的主要功能为找出所有小于输入数据的素数并输出。 采用的方法为试除法,即从2开始检查,从小到大依次让查找范围内的所有数,然后除以比它小而大于等于2的所有数,如果全部都不能除尽不能除尽的话则是素数,在屏幕上打印。 其自然语言算法如下 1 把quan初始化为输入数值的最高位权值 2 CX=bx(输入的数值),SI=1for(i=2;i=cx;i++) 4 if(cx%i==0) break; 5 Else 6 if(ik) 该数为素数,对其输出 4 程序清单 datasg segment buf db 10 db ? db 10 dup(?) ;定义12个数的数组,存储数据 just db 1

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档