计算N的阶乘2(微型计算机原理与接口技术).doc
- 文档编号:3828811
- 上传时间:2023-05-06
- 格式:DOC
- 页数:15
- 大小:2.48MB
计算N的阶乘2(微型计算机原理与接口技术).doc
《计算N的阶乘2(微型计算机原理与接口技术).doc》由会员分享,可在线阅读,更多相关《计算N的阶乘2(微型计算机原理与接口技术).doc(15页珍藏版)》请在冰点文库上搜索。
北华航天工业学院
课程设计报告(论文)
设计课题:
计算N的阶乘
专业班级:
学生姓名:
指导教师:
设计时间:
北华航天工业学院电子工程系
微机原理课程设计任务书
姓名:
专业:
电子信息工程
班级:
指导教师:
职称:
讲师
课程设计题目:
计算N的阶乘
已知技术参数和设计要求:
1.N的范围为0-65535,即不超过一个16位寄存器的容量。
2.数值N由键盘输入,结果在屏幕上输出。
所需仪器设备:
计算机、masm软件
成果验收形式:
运行结果显示,答辩,设计报告
参考文献:
微机原理与接口技术
8086实验指导书
时间
安排
12月18日:
查找资料
12月19日:
编写程序
12月20日:
上机调试
12月21日:
验收答辩
指导教师:
刘金梅
2010年12月21日
内容摘要
本次设计以8086CPU为主板进行,主要计算机系统概述,计算机中数据的表示,运算方法与运算器,控制器,Intel80X86微处理器,存储系统,80X86的寻址方式与指令系统及中断系统。
说明说在内容组织上既注重全面性和实用性,又强调系统与新颖性。
由浅入深,全面系统地介绍了微型计算机的组成、工作原理、接口电路和典型应用等,使读者监理微型计算机系统的整体念,掌握微型计算机系统软硬件开发的初步方法,了解简单计算机应用系统的工作原理和设计方法。
本文是关于微型计算机原理写文件课程设计。
编写程序,将内存区域中用调试程序(DEBUG)设置好的一连串数据做为一个文件存入磁盘,文件名为N.ASM。
内存区域的段地址和偏移地址在程序中输入
随着计算机的高速发展,微型计算机已经应用到各个领域,微型计算机原理应用技术已经成为电子信息的核心产业。
微型计算机原理是计算机科学与技术、通讯工程、电气工程、机电工程的核心课程。
通过这次课程设计,是我们更好地理解了课程中所学的理论知识,并把实际问题转化为理论知识,学会如何把学到的知识用于解决实际问题,培养我们的动手能力。
索引关键词:
键盘输入、屏幕输出、不超过一个16位寄存器的容量
目录
一概述…………………………………………………………………5
二设计内容……………………………………………………………………5
三设计目的……………………………………………………………………5
四设计要求……………………………………………………………………5
五设计思路……………………………………………………………………5
1.编制阶乘程序的难点………………………………………………………5
2.算法…………………………………………………………………………5
六源程序………………………………………………………………………6
七运行过程……………………………………………………………………11
1.源文件的建立和汇编………………………………………………………11
2.目标文件的链接……………………………………………………………12
3.执行文件的调试……………………………………………………………12
八N的阶乘流程图……………………………………………………………12
九实验体会……………………………………………………………………14
十参考文献……………………………………………………………………14
一、概述
本文是关于微型计算机原理写文件课程设计。
编写程序,将内存区域中用调试程序(DEBUG)设置好的一连串数据做为一个文件存入磁盘,文件名为N.ASM。
内存区域的段地址和偏移地址在程序中输入
随着计算机的高速发展,微型计算机已经应用到各个领域,微型计算机原理应用技术已经成为电子信息的核心产业。
微型计算机原理是计算机科学与技术、通讯工程、电气工程、机电工程的核心课程。
通过这次课程设计,是我们更好地理解了课程中所学的理论知识,并把实际问题转化为理论知识,学会如何把学到的知识用于解决实际问题,培养我们的动手能力。
二、设计内容
编写计算N!
的程序。
数值N由键盘输入,结果在屏幕上输出。
三、设计目的
通过编制一个阶乘计算程序,了解怎样在汇编语言一级上实现高级语言中的数学函数。
四、设计要求
N的范围为0-65535,即不超过一个16位寄存器的容量。
五、设计思路
1.编制阶乘程序的难点
本课程设计的难点在于随着N的增大,其结果远非寄存器所能容纳。
这就必须把结果放在一个内存缓冲区中。
然而乘法运算只限于两个字相乘,因此要确定好算法,依次从缓冲区中取数,进行两字相乘,并将DX中的高16位积作为产生的进位。
2.算法
阶乘的定义为N!
=N×(N-l)×(N-2)×…×2×l,从左往右依次计算,结果保存在缓冲区BUF中。
缓冲区BUF按结果由低到高依次排列。
程序首先将BP初始化为N,N不等干0或1则将N送入BUF缓冲区最低字单元中。
然后使BP为N-l,以后BP依次减1,直至变化到1为止。
每次让BP与BUF中的字单元按由低到高的次序相乘。
低位结果AX仍保存在相应的BUF字单元中。
高位结果DX则送到进位字单元CY中,作为高字相乘时从低字来的进位,初始化CY为0。
计算结果的长度随着乘积运算而不断增长,由字单元LEN指示,LEN单元初始化为1。
当最高字单元与BP相乘时,若DX不为0,则结果长度要扩展。
六、源程序
内容:
计算N阶乘N!
CRLF MACRO ;回车,换行
MOVAH,02H
MOVDL,0DH
INT21H
MOVAH,02H
MOVDL,0AH
INT21H
ENDM
DATA SEGMENT
MESS1DB'INPUTTHENUMBERACCORDINGTOHEXNUM!
',0DH,0AH,'$'
MESS2 DB'THERESULTIS:
$'
ERRORDB'INPUTERROR!
INPUTONCEMORE!
',0DH,0AH,'$'
LEN DW1
CY DW?
BUF DW256DUP(0)
DATA ENDS
STACK SEGMENTSTACK'STACK'
DW32DUP(?
)
STACK ENDS
CODE SEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAH,09H
MOVDX,OFFSETMESS1
INT21H ;显示输入提示信息
CALLGETNUM ;读取键入的N值
MOVBP,DX ;N值送BP
CMPBP,0
JZEEE
CMPBP,1
JZEEE ;N=0或N=1则转EEE
MOVSI,OFFSETBUF ;缓冲区首址
MOV[SI],DX ;缓冲区初始化为值N
XXX:
DECBP ;N值减1
CMPBP,0001H
JZLLL ;若为1则转LLL
XORBX,BX ;偏移指针清0
MOVWORDPTRCY,0 ;进位单元清0
MOVCX,LEN ;当前结果长度送CX
TTT:
MOVAX,[SI+BX]
MULBP ;相乘
ADDAX,CY ;加低位进位
JNCJJJ ;结果无进位转JJJ
INCDX ;有进位将高位单元加1
JJJ:
MOV[SI+BX],AX ;结果送缓冲区中
MOVCY,DX ;高位单元送进位单元
INCBX
INCBX ;一个字长度
LOOPTTT ;循环
CMPDX,0000H
JZBBB ;最后1次的进位为0则转BBB
INCWORDPTRLEN ;长度加1
MOV[SI+BX],DX ;进位送缓冲区中
BBB:
JMPXXX
EEE:
MOVSI,OFFSETBUF
MOVWORDPTR[SI],1 ;结果为1
LLL:
MOVAH,09H
MOVDX,OFFSETMESS2
INT21H ;显示表头
MOVCX,LEN
MOVBX,CX ;长度
DECBX
SHLBX,1 ;1个字为两个字节
CCC:
MOVAX,[SI+BX]
CALLDISP
DECBX
DECBX ;显示结果
LOOPCCC
MOVAX,4C00H ;结束
INT21H
DISP1 PROCNEAR ;显示字符(AL)
MOVBL,AL
MOVDL,BL
MOVCL,04
ROLDL,CL
ANDDL,0FH
CALLDISPL ;显示高位
MOVDL,BL
ANDDL,0FH
CALLDISPL ;显示低位
RET
DISP1 ENDP
DISPL PROCNEAR ;显示一位(DL=0XH)
ADDDL,30H
CMPDL,3AH
JBDDD
ADDDL,27H
DDD:
MOVAH,02H
INT21H
RET
DISPL ENDP
DISP PROCNEAR ;显示4位数(HEX)
PUSHBX
PUSHCX
PUSHDX
PUSHAX
MOVAL,AH
CALLDISP1
POPAX
CALLDISP1
POPDX
POPCX
POPBX
RET
DISP ENDP
GETNUM PROCNEAR ;字符匹配程序
PUSHCX
REGET:
XORDX,DX
GGG:
MOVAH,01H
INT21H
CMPAL,0DH
JZPPP
CMPAL,20H
JZPPP
SUBAL,30H
JBKKK
CMPAL,0AH
JBGETS
CMPAL,11H
JBKKK
SUBAL,07H
CMPAL,0FH
JBEGETS
CMPAL,2AH
JBKKK
CMPAL,2FH
JAKKK
SUBAL,20H
GETS:
MOVCL,04H
SHLDX,CL
XORAH,AH
ADDDX,AX
JMPGGG
KKK:
CRLF
MOVAH,09H
MOVDX,OFFSETERROR
INT21H
JMPREGET
PPP:
PUSHDX
CRLF
POPDX
POPCX
RET
GETNUM ENDP
CODE ENDS
ENDSTART
七、运行过程
1.源文件的建立和汇编
2.目标文件的链接
3.执行文件的调试
八、N的阶乘流程图
九、实验体会
微机原理与接口技术是一门很有趣的课程,任何一个计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。
讨论某一部分原理时又要涉及到其它部分的工作原理。
这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。
所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。
学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程思维,具体地说,在了解了微处理器各种芯片的功能和外部特性以后,剩下额是如何将它们用于实际系统中,其创造性劳动在于如何用计算机的有关技术和厂家提供的各种芯片,设计实用的电路和系统,再配上相应的应用程序,完成各种实际应用项目。
这次实验并不是很难,主要的困难来自对程序的理解。
功夫不负有心人,经过个人的合作和努力,我们最后对实验的原理有了清晰的认识。
虽然实验台上的很多模块单元没有用到,但是就系统功能来说,我觉得我们做的还是不错的。
这次课设却让我们对实验台有了足够的了解,让我们知道了实验台上各个模块的用法;而且它还让我们对自己动手写程序来控制实验台的运作有了一定的基础。
虽然实验台只是一个小型的模拟平台,但是通过对它的学习和操作,我们对有关接口的知识将会有一个更广泛的认识,而且它对我们以后的学习也会有帮助的。
实验中个人的力量是不及群体的力量的,我们四个人分工合作,做事的效率高了很多。
虽然有时候会为了一些细节争论不休,但最后得出的总是最好的结论。
而且实验也教会我们在团队中要善于与人相处,与人共事,不要一个人解决所有问题。
总之,这次课程设计对于我们有很大的帮助,通过课程设计,我更加深入地理解了,微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动手能力。
感谢老师的悉心指导。
十、参考文献
《微机原理实验与课程设计指导书》,陆红伟编,中国电力出版社,2006年
《8086微型计算机组成、原理及接口》,顾滨,机械工业出版社,2001
《微型计算机原理及应用》,吕淑萍等,哈尔滨工程大学出版社,2004年
《微型计算机技术及应用》,戴梅萼,清华大学出版社,2005
电子工程系微机原理课程设计成绩评定表
专业:
电班级:
学号:
姓名:
课题名称
计算N的阶乘
设计任务与要求
设计任务:
编写计算N!
的程序。
数值N由键盘输入,结果在屏幕上输出。
设计要求:
N的范围为0-65535,即不超过一个16位寄存器的容量。
指导教师评语
建议成绩:
指导教师:
课程小组评定
评定成绩:
课程负责人:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算 阶乘 微型计算机 原理 接口 技术