计算N的阶乘微机课设.docx

上传人:b****8 文档编号:9910573 上传时间:2023-02-07 格式:DOCX 页数:15 大小:151.11KB
下载 相关 举报
计算N的阶乘微机课设.docx_第1页
第1页 / 共15页
计算N的阶乘微机课设.docx_第2页
第2页 / 共15页
计算N的阶乘微机课设.docx_第3页
第3页 / 共15页
计算N的阶乘微机课设.docx_第4页
第4页 / 共15页
计算N的阶乘微机课设.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

计算N的阶乘微机课设.docx

《计算N的阶乘微机课设.docx》由会员分享,可在线阅读,更多相关《计算N的阶乘微机课设.docx(15页珍藏版)》请在冰豆网上搜索。

计算N的阶乘微机课设.docx

计算N的阶乘微机课设

北华航天工业学院

课程设计报告(论文)

 

设计课题:

计算N的阶乘

专业班级:

学生姓名:

指导教师:

设计时间:

2010.12.17

 

北华航天工业学院电子工程系

微机原理课程设计任务书

姓名:

专业:

电子信息工程

班级:

指导教师:

职称:

讲师

课程设计题目:

计算N的阶乘

已知技术参数和设计要求:

1.N的范围为0-65535,即不超过一个16位寄存器的容量。

2.数值N由键盘输入,结果在屏幕上输出。

所需仪器设备:

计算机、masm软件

成果验收形式:

运行结果显示,答辩,设计报告

 

参考文献:

微机原理与接口技术

8086实验指导书

 

时间

安排

12月14日:

查找资料

12月15日:

编写程序

12月16日:

上机调试

12月17日:

验收答辩

指导教师:

教研室主任:

2010年12月17日

注:

本表下发学生一份,指导教师一份,栏目不够时请另附页。

课程设计任务书装订于设计计算说明书(或论文)封面之后,目录页之前。

内容摘要

本次设计以8086CPU为主板进行,主要计算机系统概述,计算机中数据的表示,运算方法与运算器,控制器,Intel80X86微处理器,存储系统,80X86的寻址方式与指令系统及中断系统。

说明说在内容组织上既注重全面性和实用性,又强调系统与新颖性。

由浅入深,全面系统地介绍了微型计算机的组成、工作原理、接口电路和典型应用等,使读者监理微型计算机系统的整体念,掌握微型计算机系统软硬件开发的初步方法,了解简单计算机应用系统的工作原理和设计方法。

本文是关于微型计算机原理写文件课程设计。

编写程序,将内存区域中用调试程序(DEBUG)设置好的一连串数据做为一个文件存入磁盘,文件名为N.ASM。

内存区域的段地址和偏移地址在程序中输入

随着计算机的高速发展,微型计算机已经应用到各个领域,微型计算机原理应用技术已经成为电子信息的核心产业。

微型计算机原理是计算机科学与技术、通讯工程、电气工程、机电工程的核心课程。

通过这次课程设计,是我们更好地理解了课程中所学的理论知识,并把实际问题转化为理论知识,学会如何把学到的知识用于解决实际问题,培养我们的动手能力。

 

索引关键词:

键盘输入、屏幕输出、不超过一个16位寄存器的容量

 

一概述…………………………………………………………………4

二设计内容……………………………………………………………………4

三设计目的……………………………………………………………………4

四设计要求……………………………………………………………………4

五设计思路……………………………………………………………………4

1.编制阶乘程序的难点………………………………………………………4

2.算法…………………………………………………………………………4

六源程序………………………………………………………………………5

七运行过程……………………………………………………………………10

1.源文件的建立和汇编………………………………………………………10

2.目标文件的链接……………………………………………………………11

3.执行文件的调试……………………………………………………………11

八N的阶乘流程图……………………………………………………………12

九实验体会……………………………………………………………………13

十参考文献……………………………………………………………………13

 

一、概述

本文是关于微型计算机原理写文件课程设计。

编写程序,将内存区域中用调试程序(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!

CRLFMACRO;回车,换行

MOVAH,02H

MOVDL,0DH

INT21H

MOVAH,02H

MOVDL,0AH

INT21H

ENDM

DATASEGMENT

MESS1DB'INPUTTHENUMBERACCORDINGTOHEXNUM!

',0DH,0AH,'$'

MESS2DB'THERESULTIS:

$'

ERRORDB'INPUTERROR!

INPUTONCEMORE!

',0DH,0AH,'$'

LENDW1

CYDW?

BUFDW256DUP(0)

DATAENDS

STACKSEGMENTSTACK'STACK'

DW32DUP(?

STACKENDS

CODESEGMENT

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

DISP1PROCNEAR;显示字符(AL)

MOVBL,AL

MOVDL,BL

MOVCL,04

ROLDL,CL

ANDDL,0FH

CALLDISPL;显示高位

MOVDL,BL

ANDDL,0FH

CALLDISPL;显示低位

RET

DISP1ENDP

DISPLPROCNEAR;显示一位(DL=0XH)

ADDDL,30H

CMPDL,3AH

JBDDD

ADDDL,27H

DDD:

MOVAH,02H

INT21H

RET

DISPLENDP

DISPPROCNEAR;显示4位数(HEX)

PUSHBX

PUSHCX

PUSHDX

PUSHAX

MOVAL,AH

CALLDISP1

POPAX

CALLDISP1

POPDX

POPCX

POPBX

RET

DISPENDP

GETNUMPROCNEAR;字符匹配程序

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

GETNUMENDP

CODEENDS

ENDSTART

七、运行过程

1.源文件的建立和汇编

2.目标文件的链接

3.执行文件的调试

八、N的阶乘流程图

九、实验体会

任何一个计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。

讨论某一部分原理时又要涉及到其它部分的工作原理。

这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。

所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。

这次实验并不是很难,主要的困难来自对程序的理解。

功夫不负有心人,经过个人的不懈努力,我最后对实验的原理有了清晰的认识。

作为一门计算机语言的汇编语言,以前一直都很难理解,平时也喜欢得过且过,所以对程序理解不是很透彻,在最开始的时候也遇到不少问题,的确书看得比较少啊!

后来通过查阅资料和书本,总算写出了一点东西,不过通过这次课设让我对程序的的编写和阅读都有了更深的理解。

经过这次课程设计,让我对前面的路有了更多的信心,因为在这个过程中,我学到了不少实用的东西,对于一些专业基础课有了更深层次的掌握,并且提高了动手能力和独立解决问题的能力。

这是一次理论联系实际的课程设计,既让我掌握了理论知识,又锻炼了动手能力。

十、参考文献

《微型计算机原理与接口技术》,张荣标编,机械工业出版社,2005年

《8086微型计算机组成、原理及接口》,顾滨,机械工业出版社,2001

《微型计算机原理及应用》,吕淑萍等,哈尔滨工程大学出版社,2004年

电子工程系微机原理课程设计成绩评定表

专业:

电子信息工程班级:

学号:

姓名:

课题名称

计算N的阶乘

 

设计任务与要求

设计任务:

编写计算N!

的程序。

数值N由键盘输入,结果在屏幕上输出。

设计要求:

N的范围为0-65535,即不超过一个16位寄存器的容量。

 

指导教师评语

 

建议成绩:

指导教师:

 

课程小组评定

 

评定成绩:

课程负责人:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1