汇编语言求公约数和平方差Word文件下载.docx
- 文档编号:22823705
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:19
- 大小:41.77KB
汇编语言求公约数和平方差Word文件下载.docx
《汇编语言求公约数和平方差Word文件下载.docx》由会员分享,可在线阅读,更多相关《汇编语言求公约数和平方差Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。
针对题目的具体要求,根据前期的设计方案,实时编码,同时编写相应文档。
完成编码后,根据题目要求测试程序是否合格,同时优化程序,归纳文档资料,按要求书写课程设计报告。
2、认真独立完成所规定的设计内容(4000字左右),严禁相互抄袭;
3、撰写、打印设计说明书一份。
指导教师评语及成绩
平时成绩:
论文质量:
答辩:
总成绩:
指导教师签字:
年月日
第1章前言
1.1背景
汇编语言是很多相关课程(如数据结构、操作系统、微机原理等)的重要基础。
其实仅从课程关系的角度讨论汇编语言的重要性未免片面,概括地说,如果你想从事计算机科学方面的工作的话,汇编语言的基础是必不可缺的。
原因很简单,我们的工作平台、研究对象都是机器,汇编语言是人和计算机沟通的最直接的方式,它描述了机器最终所要执行的指令序列。
想深入研究英国文化,不会英语行吗?
汇编语言是和具体的微处理器相联系的,每一种微处理器的汇编语言都不一样,只能通过一种常用的、结构简洁的微处理器的汇编语言来进行学习,从而达到学习汇编的两个最根本的目的:
充分获得底层编程的体验,深刻理解机器运行程序的机理。
这两个目的达到了,其他目的也就自然而然地达到了。
举例来说,你在学习操作系统等课程时,对许多问题就会有很通透的理解。
汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
因而,对程序的空间和时间的要求很高的场合,汇编语言的应用是必不可少的。
至于很多需要直接控制硬件的应用场合,则更是非用汇编语言不可了。
随着科学技术迅速发展,理工科大学生不仅需要掌握计算机方面的基本理论知识,而且还需要掌握基本的实验技能及一定的科学研究能力。
通过课程设计,使学生巩固和加深微型计算机原理理论知识,通过实践进一步加强学生独立分析问题和解决问题的能力、综合设计及创新能力的培养,同时注意培养学生实事求是、严肃认真的科学作风和良好的实验习惯,为今后工作打下良好的基础。
鉴于汇编语言的广泛用途及其在当代计算机界的重要作用,本人利用学的知识,在同学门的帮助下,花费大量时间,完成了求公约数和平方差的设计。
1.2基本功能要求
本程序是利用汇编语言,实现求两个数的公约数和平方差,先输入两个数字到寄存器BX,CX,然后调用子程序求出最大公约数,求出最大公约数的所有约数,求出两个数的平方差,最后输出结果
其系统组成框图如图1.1所示。
图1.2系统总体框图
第2章程序设计
2.1题目的基本内容
设计题目:
求两个数的公约数
具体要求:
(4)计算两个数各占和的百分比,并且按照“
%”的格式输出(小数点后保留两位)。
(5)数据的输入和结果的输出都要有必要的提示,且提示独占一行。
(6)要使用到子程序。
2.2系统流程图
图2.2系统流程图
2.3课程设计的具体内容说明
算法描述:
①输入m和n;
②求m除以n的余数r;
③若r等于0,则n为最大公约数,算法结束;
否则执行第④步;
④将n的值放在m中,将r的值放在n中;
⑤重新执行第②步。
连续整数检测算法描述
各个算法时间复杂度和运算速度:
程序设计思想:
先用辗转法求出两个数的最大公约数,再求出最大公约数的所有约数
用辗转相除法求最大公约数算法:
先用小的一个数除大的一个数,得第一个余数;
l再用第一个余数除小的一个数,得第二个余数;
又用第二个余数除第一个余数,得第三个余数;
l这样逐次用后一个数去除前一个余数,直到余数是0为止。
那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。
2.4课程设计中关键内容的分析设计说明
DATASEGMENT
BUFFDB0DH,0AH,'
$'
IN_MSG1DB'
PLEASEENTERANUMBER:
'
0DH,0AH,'
;
定义输出提示
IN_MSG2DB'
PLEASEENTERANOTHERNUMBER:
OUT_MSGDB'
THECOMMONNUMBER(S)IS(ARE):
PFDB'
PINGFANGCHA:
LOADDB'
PRESSANYKEYTOCONTINUE$'
XDW0
YDW0
ZDW0
CDB0H
SDB6DUP(0H),'
CTRLDB0DH,0AH,'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,OFFSETIN_MSG1;
提示输入第一个数据
CALLDISPMSG
CALLREADSID;
输入第一个数据
MOVBX,AX;
第一个数据存到BX
MOVX,BX;
第一个数据存到X
MOVAX,OFFSETIN_MSG2;
提示输入第二个数据
输入第二个数据
MOVCX,AX;
保存到CX
MOVY,CX;
保存到Y
CALLAGAIN;
调用子程序
MOVAX,OFFSETOUT_MSG
MOVAX,CX
CALLDISPSID
AGAINPROC;
声明子程序,求最大公约数
CMPBX,CX
JNLFRONT
XCHGBX,CX
FRONT:
XORDX,DX
MOVAX,BX
DIVCX
CMPDX,0
JZEQUAL
MOVBX,CX
MOVCX,DX
JMPFRONT
EQUAL:
RET
AGAINENDP
DISPMSGPROC;
声明子程序,求约数
MOVDX,AX
MOVAH,9
INT21H
RET
DISPMSGENDP
READSIDPROC
MOVAH,1
MOVDH,AL
SUBDH,30H
CMPAL,0DH;
将AL与ODH(回车键的ASCII码)作比较
JZDONE1;
相等的时候跳转到DONE1
SUBAL,30H;
做减法运算
SHLDH,1
MOVDL,DH;
将DH中的内容送到DL
SHLDH,1;
逻辑左移动指令
ADDDH,DL;
加法指令,DH=DH+DL
ADDDH,AL;
加法指令,DH=DH+AL
DONE1:
MOVCL,DH
MOVDX,OFFSETBUFF
MOVAL,CL
XORAH,AH
READSIDENDP
DISPSID:
MOVBL,AL;
BL=AL
MOVBH,1;
BH=1
L1:
MOVAL,BL
XORAH,AH;
将AH清零
DIVBH
CMPAH,0
JNZNEXT
MOVAL,BH;
AL=BH
AAM
MOVCX,AX
ADDCH,30H;
CH=CH+30H
MOVDL,CH;
DL=CH
MOVAH,2;
AH=2
ADDCL,30H;
CL=CL+30H
MOVDL,CL;
DL=CL
MOVAH,2;
输出DL中的内容
MOVDX,OFFSETBUFF;
将BUFF的首地址给DX
NEXT:
INCBH;
BH+1
CMPBL,BH;
BL与BH做比较
JLDONE;
跳转到JL
JMPL1;
跳转到L1
DONE:
MOVAX,OFFSETPF;
;
将PF的首地址给AX
CALLPFC
PFCPROC;
声明子程序,求平方差
WORK:
MOVAL,BYTEPTRX
MULAL
MOVZ,AX
MOVAL,BYTEPTRY
CMPZ,AX
JBINT1
SUBZ,AX
JMPINT2
INT1:
SUBAX,Z
MOVC,'
-'
INT2:
MOVCX,5H
MOVDI,4H
MOVBX,0AH
MOVAX,Z
WORK2:
MOVDX,0
DIVBX
ADDDL,30H
MOVS[DI],DL
DECDI
CMPAX,0H
JZW2EXIT
LOOPWORK2
W2EXIT:
MOVAL,C
MOVS[DI],AL
MOVDX,OFFSETCTRL
MOVAH,09H
INT21H
MOVDI,0
WORK3:
INCDI
CMPS[DI],0H
JZWORK3
LEADX,S[DI]
MOVAH,4CH;
返回DOS
PFCENDP
MOVAH,4CH;
CODEENDS;
代码段结束标志
ENDSTART;
程序结束标志
运行结果:
图2.4运行结果图
第3章课程设计总结
首先要对这个问题进行分析,选择你所想用的算法,使这个程序能键盘输入自己想求的两个数,回车结束,即可看到该算法求出的公约数。
对这次试验,我只能用一些简单的代码进行编程,由于我的编程水平有限,我所用的代码也很简单,在算法中,存在一个问题有待改进,那就是输入的两个数之后,第一次只能求出公约数,再输入一次才能求出平方差,而且,平方差输出前面没有提示。
先用辗转法求出两个数的最大公约数,再求出最大公约数的所有约数并显示,先用小的一个数除大的一个数,得第一个余数;
然后所求出的最大公约数的约数都是这两个数的公约数。
实验中充分熟悉了辗转相除法。
从这次实验中,我复习了汇编语言代码,同时也通过辗转算法解决了求解出最大公约数这个问题。
之前也尝试过其他算法,从这个试验的结果我了解到了算法的优与劣的差别,虽然得到的是同样的结果,但是需要的时间和资源却相差很大,这提示我们在以后写算法的时候要找出最优算法。
可见汇编语言编程的人来说是多么的重要,在以后写程序过程中要时刻提醒自己找最优算法,当然得先学会分析。
在以后的学习中我要学会多实践、多分析,在不停的改正错误中提高自己。
参考文献
[1]方立友.微机原理与汇编语言实用教程,北京:
清华大学出版社,2007
[2]朱定华.微机原理、汇编与接口技术(第2版),北京:
清华大学出版社,2010
[3]周杰英.微机原理、汇编语言与接口技术,北京:
人民邮电出版社,2011
[4]钱晓捷.16/32位微机原理、汇编语言及接口技术(第3版),北京:
机械工业出版社,2011
[5]姜蓉.微机原理汇编语言及接口技术.西安:
西安交通大学出版社,2006
源文件代码:
xdw0
ydw0
zdw0
cdb0h
sdb6dup(0h),'
ctrldb0dh,0ah,'
MOVBX,AX
MOVx,BX
MOVy,CX
CALLAGAIN
AGAINPROC
DISPMSGPROC
CMPAL,0DH
JZDONE1
SUBAL,30H
MOVDL,DH
ADDDH,DL
ADDDH,AL
MOVBL,AL
MOVBH,1
DIVBH
MOVAL,BH
ADDCH,30H
MOVDL,CH
MOVAH,2
ADDCL,30H
MOVDL,CL
INCBH
CMPBL,BH
JLDONE
JMPL1
callpfc
pfcproc
work:
moval,byteptrx
mulal
movz,ax
moval,byteptry
cmpz,ax
jbint1
subz,ax
jmpint2
int1:
subax,z
movc,'
int2:
movcx,5h
movdi,4h
movbx,0ah
movax,z
work2:
movdx,0
divbx
adddl,30h
movs[di],dl
decdi
cmpax,0h
jzw2exit
loopwork2
w2exit:
moval,c
movs[di],al
movdx,offsetctrl
movah,09h
int21h
movdi,0
work3:
incdi
cmps[di],0h
jzwork3
leadx,s[di]
movah,4ch
ret
pfcendp
MOVAH,4CH
CODEENDS
ENDSTART
前面提到的代码不完整,因为格式原因运行会出错,调试的时候请用本页的代码。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 公约数 和平 方差