求100以内的素数 微机原理与汇编技术课程设计.docx

上传人:b****6 文档编号:5671282 上传时间:2022-12-31 格式:DOCX 页数:16 大小:428.77KB
下载 相关 举报
求100以内的素数 微机原理与汇编技术课程设计.docx_第1页
第1页 / 共16页
求100以内的素数 微机原理与汇编技术课程设计.docx_第2页
第2页 / 共16页
求100以内的素数 微机原理与汇编技术课程设计.docx_第3页
第3页 / 共16页
求100以内的素数 微机原理与汇编技术课程设计.docx_第4页
第4页 / 共16页
求100以内的素数 微机原理与汇编技术课程设计.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

求100以内的素数 微机原理与汇编技术课程设计.docx

《求100以内的素数 微机原理与汇编技术课程设计.docx》由会员分享,可在线阅读,更多相关《求100以内的素数 微机原理与汇编技术课程设计.docx(16页珍藏版)》请在冰豆网上搜索。

求100以内的素数 微机原理与汇编技术课程设计.docx

求100以内的素数微机原理与汇编技术课程设计

微机原理与汇编技术

课程设计(论文)

求100以内素数

(2)

院(系)名称

专业班级

学号

学生姓名

指导教师

起止时间:

2015.12.21—2015.12.31

课程设计(论文)任务及评语

院(系):

电子与信息工程学院教研室:

计算机科学与技术

学号

学生姓名

专业班级

课程设计(论文)题目

求100以内的素数

(2)

课程设计(论文)任务

设计内容

编制程序,按要求求出100以内的素数和其它结果。

技术要求

1、求出这些素数。

2、在屏幕上显示出求素数的动态过程(在屏幕上先显示出100以内的所有数,再动态地删去不符合要求的数,删除的过程要明显)。

3、计算这些素数的平均值(取整,四舍五入),以十进制形式输出,并让改制以红色显示。

4、数据的输入和结果的输出都要有必要的提示,且提示独占一行。

5、要用到子程序。

指导教师评语及成绩

 

平时成绩:

答辩成绩:

论文成绩:

总成绩:

指导教师签字:

年月日

注:

平时成绩占20%,答辩成绩占40%,论文成绩占40%。

第1章前言

1.1背景

汇编语言(assemblylanguage)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。

在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。

在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。

普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

许多汇编程序为程序开发、汇编控制、辅助调试提供了额外的支持机制。

有的汇编语言编程工具经常会提供宏,它们也被称为宏汇编器。

汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计。

在今天的实际应用中,它通常被应用在底层,硬件操作和高要求的程序优化的场合。

驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。

汇编语言的另一个特点就是它所操作的对象不是具体的数据,而是寄存器或者存储器,也就是说它是直接和寄存器和存储器打交道,这也是为什么汇编语言的执行速度要比其它语言快,但同时这也使编程更加复杂,因为既然数据是存放在寄存器或存储器中,那么必然就存在着寻址方式,也就是用什么方法找到所需要的数据。

例如上面的例子,我们就不能像高级语言一样直接使用数据,而是先要从相应的寄存器AX、BX中把数据取出。

这也就增加了编程的复杂性,因为在高级语言中寻址这部分工作是由编译系统来完成的,而在汇编语言中是由程序员自己来完成的,这无异增加了编程的复杂程度和程序的可读性。

 

1.2基本功能要求

由于DOS的9号调用输出的是ASCⅡ码,因此我们在输出到屏幕的时候一定要将其先转换为ASCⅡ码再使用9号调用输出。

考虑到ASCⅡ码转化为数字较为麻烦,因此可以定义两个组数据buf、buf1,其中buf用于存放1~99,buf1用于存放1~99的ASCⅡ码。

这段程序运用的两次loop循环分别实现把0~99送到buf、将0~99的ASCⅡ码送到buf1。

在循环完毕后,采用dos的9号调用将buf1的数据输出到屏幕上,即1~99输出到屏幕上。

完成这段程序后,跳到下一个模块,即删除合数保留素数并显示模块。

然后跳转到下一模块。

求和,最后到求平均数模块。

 

第2章程序设计

2.1题目的基本内容

设计题目:

求100以内的素数

具体要求:

(1)求出这些素数。

(2)在屏幕上显示出求素数的动态过程(在屏幕上先显示出100以内的所有数,再动态地删去不符合要求的数,删除的过程要明显)。

(3)计算这些素数的平均值(取整,四舍五入),以十进制形式输出,并让改制以红色显示。

(4)数据的输入和结果的输出都要有必要的提示,且提示独占一行。

(5)要使用子程序

 

2.2程序流程图

图2.1显示素数程序流程图

 

图2.2删除合数保留素数程序流程图

 

图2.3求和程序流程图

 

图2.4求平均数程序流程图

 

2.3课程设计的具体内容说明

把0~99送到buf、将0~99的ASCⅡ码送到buf1。

在循环完毕后,采用dos的9号调用将buf1的数据输出到屏幕上,即1~99输出到屏幕上。

算法描述:

(1)开始,输出素数。

(2)判断是否q退出,不退出则到(3)。

(3)按任意键继续程序。

(4)输出0-100全部数据。

(5)按任意键,每按一次删除一个非素数。

(6)删除完毕,输出平均数。

(7)结束,退出程序。

2.4课程设计中关键内容的分析设计说明

程序:

datasegment

input1db0ah,0dh,'ifyouwanttoquit,pleasepressQ/q!

'

db0ah,0dh,'ifyouwanttoprint0~99,pleasepressanyotherkey!

',0ah,0dh,'$'

input2db0ah,0dh,'ifyouwanttoquit,pleasepressQ/q!

'

db0ah,0dh,'ifyouwanttofindtheprimenumber,pleasepressanyotherkey!

',0ah,0dh,0ah,0dh,'$'

input3db0ah,0dh,'ifyouwanttoquit,pleasepressQ/q!

'

db0ah,0dh,'ifyouwanttogettheavreageoftheprimenumbers,pleasepressanyotherkey!

',0ah,0dh,0ah,0dh,'$'

input4db0ah,0dh,'theavreageoftheprimenumbersis:

','$'

input5db0ah,0dh,'pressanykeytoquit!

','$'

 

bufdb99dup(?

),0;用于存0~99

buf1db99dup(?

?

','),0dh,0ah,'pressanykeytocontinue!

',0dh,0ah,'$';用于放1~99的asc码

buf2db?

?

0dh,0ah,'$'

dataends

codesegment

assumeds:

data,cs:

code

start:

movax,data

movds,ax

leadx,input1

movah,9

int21h

movah,08h

int21h

cmpal,'Q'

jEexit

cmpal,'q'

jeexit

 

leabx,buf

movax,0

moval,1

movcx,99

loop1:

mov[bx],al

incal

incbx

looploop1

 

movcx,99

leasi,buf1

leabx,buf

loop2:

movax,0

moval,[bx]

movdl,10

divdl

addal,30h;十位asc码

addah,30h;个位asc码

 

mov[si],al

mov[si+1],ah

addsi,3

addbx,1

looploop2

 

leadx,buf1

movah,9

int21h

movah,08h

int21h;显示0~100

jmpbb

 

exit:

movax,4c00h

int21h;退出

bb:

leadx,input2

movah,9

int21h

movah,08h

int21h

cmpal,'Q'

jEexit

cmpal,'q'

jeexit

movcx,0

leabx,buf

leasi,buf1

a1:

movdl,1

a2:

andax,0

moval,[bx+3]

decal

incdl

cmpal,dl

jza3

incal

divdl

cmpah,0

jnza2

mov[si+9],ah

mov[si+10],ah

jmpa4

a3:

inccx

a4:

leadx,buf1

movah,9

int21h

movah,08h

int21h

addsi,3

incbx

movdl,[bx+3]

cmpdl,0;跳出循环

jnza1

 

leadx,input3

movah,9

int21h

movah,08h

int21h;输入提示

cmpal,'Q'

jEexit

cmpal,'q'

jeexit

movdi,cx

adddi,3;计数送到di

 

movcx,99

andsi,0

leabx,buf1

loop3:

moval,[bx];十位

andax,00ffh

movdh,[bx+1];个位

cmpal,0

jzc1

 

subdh,30h

subal,30h

movdl,10

muldl

addal,dh

addsi,ax

c1:

addbx,3

looploop3

leadx,input4

movah,9

int21h

movah,08h

int21h

movax,si;和送到ax

movbx,di;个数送到bx

andbx,00ffh

divbl

incal

andax,00ffh

movbx,10

andbx,00ffh

divbl

addal,30h

addah,30h;将平均值转化为asc码,al为十位,ah为个位

leabx,buf2

mov[bx],al

mov[bx+1],ah

movah,09·

moval,0

movbh,00

movcx,2

movbl,4

int10h

leadx,buf2

movah,9

int21h

movah,08h

int21h

 

leadx,input5

movah,9

int21h

movah,08h

int21h

exit1:

movax,4c00h

int21h

codeends

endstart

 

2.5运行结果

图2.5初始界面

图2.6显示1~99

图2.7选择是否继续求素数

图2.8动态删除合数保留素数

图2.9选择是否求平均值

图2.10将素数平均值以红色字输出到屏幕

第3章课程设计总结

这次的微机原理课程设计,求100以内的素数,在数学的学习中,我们会经常接触到素数这个概念。

素数又称质数。

指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数(不包括0)整除的数。

因为合数是由若干个质数相乘而得来的,所以,没有质数就没有合数,由此可见素数在数论中有着很重要的地位。

比1大但不是素数的数称为合数。

1和0既非素数也非合数。

这个学期我们刚好学了《微机原理与接口技术》这门课,并且初步的了解了汇编语言知识,并且可以编写简单的代码。

因此,我们可以运用汇编语言来编写程序,求取100以内的素数,动态的删除合数,并且以红色的字输出素数的平均值。

起初以为这个课题比较简单,通过查书和资料可以很快做出来,结果开始做却发现不是那么回事,发现了很多的问题。

首先,课本上的知识还远远不够,需要我借鉴别人的程序来提升自己对汇编语言的认识以及了解,并且很多复杂难懂的程序还无法读懂。

其次,在编写的过程中,总会有各种各样的问题出现,即使一个小小的标点符号错误也无法将程序运行出来,这就需要我们的耐心仔细去慢慢的调试并且发现错误在哪里。

第三,我们对于汇编语言的认识还远远不够,一学期的简单学习,应用于编程还很吃力,dos调用、bios调用我们接触的非常非常少。

总之,费了九牛二虎之力,总算是解决这次的课程设计。

这次课程设计给我带来的收获很多。

第一,它让我更进一步的了解了汇编语言,并用其来做一些实践性的东西。

第二,我在编写和调试程序的时候,也锻炼了我的耐心和细心。

第三,这次课程设计也锻炼了我查阅资料的能力。

 

参考文献

[1]彭虎,周佩玲,傅忠谦.《微机原理与接口技术(第2版)》.北京:

电子工业出版社,2010年

[2]李敬兆.《8086/8088和arm核汇编语言程序设计》.合肥:

中国科技大学出版社.2000年

[3]沈美明,温冬婵.《IBM—PC汇编语言程序设计(第二版)》.北京:

清华大学出版社出版.2003年

[4]沈美明,温冬婵,张赤红.《IBM—PC汇编语言程序设计实验教程》.北京:

清华大学出版社出版.2003年

[5]杨立.《微机原理与接口技术》.天津:

天津大学出版社,2010年

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

当前位置:首页 > 高等教育 > 哲学

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

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