首页 计算N的阶乘

计算N的阶乘

举报
开通vip

计算N的阶乘北 华 航 天 工 业 学 院 课程设计报告(论文) 设计课题: 计算N的阶乘    专业班级:                  学生姓名:                  指导教师:                设计时间: 2010年12月16日 北华航天工业学院电子工程系 微机原理与接口技术    课程设计任务书 姓 名:   专 业: 电子信息工程 班级:   指导教师:   职 称:   完成时间: 2010/12/16 课程设计题目:计算N的阶乘 ...

计算N的阶乘
北 华 航 天 工 业 学 院 课程设计 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 (论文) 设计课题: 计算N的阶乘    专业班级:                  学生姓名:                  指导教师:                设计时间: 2010年12月16日 北华航天工业学院电子工程系 微机原理与接口技术    课程设计任务书 姓 名:   专 业: 电子信息工程 班级:   指导教师:   职 称:   完成时间: 2010/12/16 课程设计题目:计算N的阶乘 已知技术参数和设计要求: 1.编写计算N!的程序。数值N由键盘输入,结果在屏幕上输出。 2..通过编制一个阶乘计算程序,了解怎样在汇编语言一级上实现高级语言中的数学函数。 3.N的范围为0-65535,即不超过一个16位寄存器的容量。 所需仪器设备:计算机 成果验收形式:计算机演示,设计报告 参考文献:微机原理与接口技术 8086实验指导书 时间 安排 12月13号编译程序 14号上机操作 15号验收               指导教师: 刘金梅                教研室主任:            2010年 12 月 18 日 内    容    摘      要 本次课程设计编写计算N!的程序。数值N由键盘输入,结果在屏幕上输出,通过编制一个阶乘计算程序,了解怎样在汇编语言一级上实现高级语言中的数学函数。其难点在于随着N的增大,其结果远非寄存器所能容纳。这就必须把结果放在一个内存缓冲区中。然而乘法运算只限于两个字相乘,因此要确定好算法,依次从缓冲区中取数,进行两字相乘,并将DX中的高 16位积作为产生的进位。 索引关键词: N的阶乘 汇编语言  内存缓冲区 目          录 序言————————————————————5        正文————————————————————5 一、程序算法————————————————-—-5 二、源程序—————————————————-—-6 三、程序运行与调试—————————————-—11 四、N的阶乘程序流动图——————————-—-—11 心得体会 决胜全面小康心得体会学党史心得下载党史学习心得下载军训心得免费下载党史学习心得下载 ——————————————————13 参考文献——————————————————13 序言 本文是关于微型计算机原理写文件课程设计。编写程序,将内存区域中用调试程序(DEBUG)设置好的一连串数据(以Ctrl+z为结束符)做为一个文件存入磁盘,文件名为DATA.ASM。内存区域的段地址和偏移地址在程序中输入。 随着计算机的高速发展,微型计算机已经应用到各个领域,微型计算机原理应用技术已经成为电子信息的核心产业。 微型计算机原理是计算机科学与技术、通讯工程、电气工程、机电工程的核心课程。 通过这次课程设计,是我们更好地理解了课程中所学的理论知识,并把实际问题转化为理论知识,学会如何把学到的知识用于解决实际问题,培养我们的动手能力。 正文 一、 程序算法 阶乘的定义为N!=N(N-1)(N-2)……2,从左至右依次计算,结果保存在缓冲区BUF中。缓冲区BUF按结果由高到低依次排列。程序首先将BP初始化为N,N不等于0或1则将N送入BUF缓冲区最低字节单元中。然后使BP为N-1,以后BP依次减1,直到变化为1为止。每次让BP与BUF中的字节单元按由低到高的次序相乘。低位结果AX仍保存在相应的BUF字节单元中,高位结果DX则送到进位字单元CY中,作为高字相乘时从低字来的进位,初始化CY为0.计算结果的长度随着乘积运算而不断增长。由字单元LEN指示。LEN单元初始化为1。当最高字单元与BP相乘时。若DX不为0,则结果长度要扩展。 二、源程序 内容:计算N阶乘  N! CRLF     MACRO                        ;回车,换行 MOV AH, 02H MOV DL, 0DH INT 21H MOV AH, 02H MOV DL, 0AH INT 21H ENDM DATA      SEGMENT MESS1  DB  'INPUT THE NUMBER ACCORDING TO HEXNUM!',0DH,0AH,'$' MESS2     DB  'THE RESULT IS: $' ERROR  DB  'INPUT ERROR! INPUT ONCE MORE!',0DH ,0AH,'$' LEN      DW 1 CY        DW ? BUF        DW 256 DUP(0) DATA      ENDS STACK     SEGMENT STACK 'STACK' DW 32 DUP(?) STACK    ENDS CODE     SEGMENT ASSUME  CS: CODE, DS:DATA, ES:DATA, SS:STACK START:    MOV AX, DATA MOV DS,AX MOV ES, AX MOV AH, 09H MOV DX,OFFSET MESS1 INT 21H                      ;显示输入提示信息 CALL GETNUM                ;读取键入的N值 MOV BP, DX                  ;N值送BP CMP BP, 0 JZ EEE CMP BP, 1 JZ EEE                      ;N=0或N=1则转EEE MOV SI, OFFSET BUF        ;缓冲区首址 MOV [SI],DX                  ;缓冲区初始化为值N XXX:      DEC BP                      ;N值减1 CMP BP,0001H JZ LLL                      ;若为1则转LLL XOR BX,BX                  ;偏移指针清0 MOV WORD PTR CY,0          ;进位单元清0 MOV CX,LEN                  ;当前结果长度送CX TTT:     MOV AX, [SI+BX] MUL BP                      ;相乘 ADD AX,CY                  ;加低位进位 JNC JJJ                    ;结果无进位转JJJ INC DX                      ;有进位将高位单元加1 JJJ:      MOV [SI+BX],AX              ;结果送缓冲区中 MOV CY,DX                  ;高位单元送进位单元 INC BX INC BX                        ;一个字长度 LOOP TTT                    ;循环 CMP DX, 0000H JZ BBB                      ;最后1次的进位为0则转BBB INC WORD PTR LEN        ;长度加1 MOV [SI+BX],DX              ;进位送缓冲区中 BBB:      JMP XXX EEE:      MOV SI,OFFSET BUF MOV WORD PTR [SI],1      ;结果为1 LLL:      MOV AH, 09H MOV DX,OFFSET MESS2 INT 21H                      ;显示表头 MOV CX,LEN MOV BX,CX                    ;长度 DEC BX SHL BX,1                    ;1个字为两个字节 CCC:      MOV AX, [SI+BX] CALL DISP DEC BX DEC BX                    ;显示结果 LOOP CCC MOV AX,4C00H                ;结束 INT 21H DISP1     PROC NEAR                  ;显示字符(AL) MOV BL, AL MOV DL, BL MOV CL, 04 ROL DL, CL AND DL, 0FH CALL DISPL                  ;显示高位 MOV DL, BL AND DL, 0FH CALL DISPL                  ;显示低位 RET DISP1     ENDP DISPL     PROC NEAR                    ;显示一位(DL=0XH) ADD DL, 30H CMP DL, 3AH JB DDD ADD DL, 27H DDD:     MOV AH, 02H INT 21H RET DISPL     ENDP DISP     PROC NEAR                    ;显示4位数(HEX) PUSH BX PUSH CX PUSH DX PUSH AX MOV AL, AH CALL DISP1 POP AX CALL DISP1 POP DX POP CX POP BX RET DISP      ENDP GETNUM    PROC NEAR                  ;字符匹配程序 PUSH CX REGET:    XOR DX, DX GGG:      MOV AH, 01H INT 21H CMP AL, 0DH
本文档为【计算N的阶乘】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_482581
暂无简介~
格式:doc
大小:36KB
软件:Word
页数:10
分类:理学
上传时间:2019-05-02
浏览量:172