首页 [小学]计算N的阶乘

[小学]计算N的阶乘

举报
开通vip

[小学]计算N的阶乘[小学]计算N的阶乘 ******************* 实践教学 ******************* *********** ******************* 2010年春季学期 微型计算机原理 课程设计 题 目:计算N的阶乘 专业班级: 姓 名: 学 号: 指导教师: 日 期: 成 绩: 目录 摘要————————————————————1 序言————————————————————2 正文————————————————————3 一、程序算法——————————...

[小学]计算N的阶乘
[小学]计算N的阶乘 ******************* 实践教学 ******************* *********** ******************* 2010年春季学期 微型计算机原理 课程 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 题 目:计算N的阶乘 专业班级: 姓 名: 学 号: 指导教师: 日 期: 成 绩: 目录 摘要————————————————————1 序言————————————————————2 正文————————————————————3 一、程序算法————————————————-—-3 -3二、源程序—————————————————-— 三、运行——————————————————-—-7 四、N的阶乘程序流动图——————————-—-—-7 设计总结——————————————————9 参考文献——————————————————11 致谢————————————————————12 摘要 本次设计以8086CPU为主板进行,主要计算机系统概述,计算机中数据的表示,运算方法与运算器,控制器,Intel80X86微处理器,存储系统,80X86的寻址方式与指令系统,输入输出系统及接口,中断系统及DMA系统,串、并行通信及接口电路 说明书在内容组织上既注重全面性和实用性,又强调系统性与新颖性。由浅入深、全面系统地介绍了微型计算机的组成、工作原理、接口电路和典型应用等,使读者建立微型计算机系统的整体概念,掌握微型计算机系统软硬件开发的初步方法,了解简单计算机应用系统的工作原理和设计方法。 序言 本文是关于微型计算机原理写文件课程设计。编写程序,将内存区域中用调试程序(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 JZ PPP CMP AL, 20H JZ PPP SUB AL, 30H JB KKK CMP AL, 0AH JB GETS CMP AL,11H JB KKK SUB AL, 07H CMP AL, 0FH JBE GETS CMP AL, 2AH JB KKK CMP AL, 2FH JA KKK SUB AL, 20H GETS: MOV CL, 04H SHL DX,CL XOR AH, AH ADD DX ,AX JMP GGG KKK: CRLF MOV AH, 09H MOV DX,OFFSET ERROR INT 21H JMP REGET PPP: PUSH DX CRLF POP DX POP CX RET GETNUM ENDP CODE ENDS END START 三、运行过程 要求输入n的值,然后再回车~如图(1)所示 图(1)运行过程 要求输入,时,就回车,得到结果 四、N的阶乘程序流图如图(2)所示 图(1) 设计总结 微机原理与接口技术是一门很有趣的课程,任何一个计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。讨论某一部分原理时又要涉及到其它部分的工作原理。这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。 学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程思维,具体地说,在了解了微处理器各种芯片的功能和外部特性以后,剩下额是如何将它们用于实际系统中,其创造性劳动在于如何用计算机的有关技术和厂家提供的各种芯片,设计实用的电路和系统,再配上相应的应用程序,完成各种实际应用项目。 这次实验并不是很难,主要的困难来自对程序的理解。功夫不负有心人,经过个人的合作和努力,我们最后对实验的原理有了清晰的认识。虽然实验台上的很多模块单元没有用到,但是就系统功能来说,我觉得我们做的还是不错的。 这次课设却让我们对实验台有了足够的了解,让我们知道了实验台上各个模块的用法;而且它还让我们对自己动手写程序来控制实验台的运作有了一定的基础。虽然实验台只是一个小型的模拟平台,但是通过对它的学习和操作,我们对有关接口的知识将会有一个更广泛的认识,而且它对我们以后的学习也会有帮助的。 实验中个人的力量是不及群体的力量的,我们四个人分工合作,做事的效率高了很多。虽然有时候会为了一些细节争论不休,但最后得出的总是最好的结论。而 且实验也教会我们在团队中要善于与人相处,与人共事,不要一个人解决所有问题。 总之,这次课程设计对于我们有很大的帮助,通过课程设计,我更加深入地理解了,微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动手能力。感谢老师的悉心指导。 参考文献 《微机原理实验与课程设计指导书》,陆红伟编,中国电力出版社,2006年 《8086微型计算机组成、原理及接口》,顾滨,机械工业出版社,2001 《微型计算机原理及应用》,吕淑萍等,哈尔滨工程大学出版社,2004年 《微型计算机技术及应用》,戴梅萼,清华大学出版社,2005 致谢
本文档为【[小学]计算N的阶乘】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_353097
暂无简介~
格式:doc
大小:71KB
软件:Word
页数:12
分类:生产制造
上传时间:2017-09-20
浏览量:53