计算N的阶乘2(微型计算机原理与接口技术)文档格式.doc
- 文档编号:14427575
- 上传时间:2022-10-22
- 格式:DOC
- 页数:15
- 大小:2.48MB
计算N的阶乘2(微型计算机原理与接口技术)文档格式.doc
《计算N的阶乘2(微型计算机原理与接口技术)文档格式.doc》由会员分享,可在线阅读,更多相关《计算N的阶乘2(微型计算机原理与接口技术)文档格式.doc(15页珍藏版)》请在冰豆网上搜索。
所需仪器设备:
计算机、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
一、概述
二、设计内容
编写计算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 ;
显示结果
LOOPCCC
MOVAX,4C00H ;
结束
INT21H
DISP1 PROCNEAR ;
显示字符(AL)
MOVBL,AL
MOVDL,BL
MOVCL,04
ROLDL,CL
ANDDL,0FH
CALLDISPL ;
显示高位
MOVDL,BL
显示低位
RET
DISP1 ENDP
DISPL PROCNEAR ;
显示一位(DL=0XH)
AD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算 阶乘 微型计算机 原理 接口 技术