汇编语言 完全数 课程设计报告书.doc
文本预览下载声明
课程设计任务书
学生姓名 王 丽 专业班级 软件0302班
指导老师 陈天祥 工作单位 武汉理工大学
题 目:打印完全数
一个数,若约数(不含它本身)的和恰好等于它本身就称为完全数
初始条件:
理论:学完汇编课程,掌握汇编语言的使用。
实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以在其上进行设计。
要求完成的主要任务:
1. 本次课程设计着重于理论设计,同时培养动手能力。要求运用自己所学知识进行设计实现,体现自己的知识掌握水平。所作设计需进行论证,一方面是从理论上进行推理验证,另一方面是实验论证。
2. 阅读有关的参考资料,熟悉开发工具,运用软件工程设计方法,进行系统总体分析与设计, 规划出系统的总体机构,每个功能的分布情况,以形成系统的框架设计。
3. 程序用汇编语言开发完成, 严禁抄袭(发现后抄袭者和被抄袭者一律不及格)。
4.完成整个程序的设计及调试、测试工作后,应提供相应的课程设计报告书及程序总体分析与算法设计和源程序代码等。
5.课程设计报告书内容:(1) 设计题目 (2) 设计要求 (3) 设计思路程序清单 (5) 运行结果 (6) 心得体会
设计题目
打印完全数
设计要求
用汇编程序MASM,编写一个程序,打印10000以内的完全数。若一个数的约数(不含它本身)的和恰好等于它本身,则该数是完全数。用循环除法(除数从2到被检测数)循环判断2――10000的数是否是完全数。
根据题目,运用所学的汇编知识和程序设计知识,完善设计思路,尽量使程序完整,具有模块化,易懂;熟悉汇编程序环境,掌握汇编命令和汇编语言,增强动手能力;增强独立解决问题的能力。
设计思路
3.1原始条件及参数:
被除数以双字为单位,高16位保存在DX中,低16位保存在AX中,初始值为2;
检测范围用n 来限定
除数以字位单位,用count表示,保存在BX中,初始值为2
约数和保存在CX中,初始值为1
3.2算法设计及流程图:
3.2.1 主程序算法及流程图:
初始条件:设i为被除数,j为除数,t为余数,c为约数和
Int i=2 ; //被除数从2开始
循环体:While (i=10000) //求10000以内的完全数
{ int j=2 , c=1; //除数从2开始,约数和初始为1
While ( j=i ) //除数小于被除数
{ t = i mod j ; //求模
If ( t==0)
{ c=j+c;} //如果能够整除,保存约数和
j++ ;} //除数自增
if (c==i)
print i ; //打印完数
i++ ; } //被除数自增
退出:Exit
3.2.2 print子程序算法及流程图
初始条件:被除数保存在AX中,将除数设置为10
将BX,CX压入堆栈,保护现场
循 环 体:被除数除以10,
将余数压入堆栈,堆栈中数目加1
继续除以10,直到被除数不可以再除
弹出堆栈中的内容
退 出:Exit
程序清单
data segment
n dw 10000 ;求10000以内的完数
count dw ? ;作为除数
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov n,2 ;从2开始判断是否视完数
l1: mov count,2 ;cx保留约数和,初始值为1
mov cx,1 ;bx作为除数,从2开始
l2: mov ax,n
push ax ;保存现场,保留ax的值
mov dx,0 ;被除数的高16位置0
div bx
cmp dx,0
显示全部