电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

《计算机原理实验报告》 计算学生平均成绩实验VIP免费

《计算机原理实验报告》 计算学生平均成绩实验_第1页
1/7
《计算机原理实验报告》 计算学生平均成绩实验_第2页
2/7
《计算机原理实验报告》 计算学生平均成绩实验_第3页
3/7
《计算机原理实验报告》-----接口部分实验(三)名称:计算学生平均成绩实验一、实验目的:1.熟悉汇编语言程序的使用2.熟悉十进制的运算、设计显示程序运行结果的格式3.熟悉掌握DOS功能调用二、实验要求:编写程序,求30个分数的平均值,并以十进制表示将结果显示在屏幕上,显示的格式要求如下:第一行显示:Thethirtyscoresare:以分号分隔的30个分数;第二行显示:averagescoresis=求得的平均分数。三、编程算法与说明:本实验从键盘输入N个分数数据,调用DOS10号功能,便可实现从键盘输入一个字符串,然后将输入的字符串转为N个分数,累加,求平均值,然后将平均值除以N取余数,余数入栈,然后出栈输出到屏幕即可。DOS10号功能调用说明:MOVAH,0AH是从键盘输入字符到缓冲区。调用参数:DS:DX=缓冲区首地址[DS:DX]=缓冲区最大字符数。返回参数:[DS:DX+1]=实际输入的字符数DS:DX+2=字符串首地址四、程序流程图:开始五、程序清单:datasegmentinfor1db'201081516linyun',0dh,0ah,'$'infor2db'pleaseinputthescoressplitby;',0dh,0ah,'$'firstdb0dh,0ah,'Thescoresare:','$'seconddb'Theaveragescoreis=','$'limitdb200;最大能从键盘输入200个字符MOVAH,0AH从键盘输入数据,数据之间用逗号隔开,数据自动保存到MSG为首地址数据段中。循环统计逗号的个数,即为输入的分数的个数比如输入’8;12;60;’,统计得字符串有3个逗号,即输入了3个数据,数据的个数记为COUNTLEABX,MSG若分数是0-9则直接累加,若10-99,则前一位乘以10在加上后一位,再累加。循环COUNT次总分数除以COUNT得到平均值平均数除以10取余数,余数进栈,一直循环到余数为0依次将每位余数出栈,并显示在屏幕上结束numbdb?;实际输入的字符msgdb200dup(0);从键盘输入的字符首地址countdw?;统计输入的分数个数dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axleadx,infor1movah,9int21hleadx,infor2movah,9int21hmovdx,offsetlimit;DOS10号功能调用movah,0ahint21hmovbl,numb;numb为实际输入的值movbh,0movbyteptrmsg[bx],'$';将最后一个字符为$,表示字符串的结尾leadx,firstmovah,9int21hleadx,msgmovah,9int21hmovdl,0dh;回车换行movah,2int21hmovdl,0ahmovah,2int21hleadx,secondmovah,9int21hleabx,msgmovdl,0;用dl统计分数的个数movcx,0ffffhcircle:;统计分数的个数,由于分数之间是用逗号隔开的,所以统计逗moval,[bx];号的个数就是分数的个数cmpal,'$';碰到字符串结尾跳出循环jemaincmpal,';'jnenextincdlnext:incbxloopcirclemain:leabx,msgmovsi,0movdh,0movcount,dx;将统计到的分数个数赋给count变量,再赋给CXmovcx,count;cx为累加的次数,也就是循环的次数loop1:movah,00hmoval,[bx]subal,30hincbxmovdl,[bx]incbxcmpdl,';';第二个字符为逗号则说明分数为0-9之间的数,直接跳转到累加程序jesumsubdl,30h;如果是10-99之间的数,十位乘以10加上各位movah,10mulahmovdh,00haddax,dxincbxsum:addsi,ax;累加的值在si寄存器中looploop1movax,simovcx,countdivcl;总分数除以个数就是平均值,存与AL中movah,0;平均值存在AX中;;;;;;;;;;;;;;;;;;;;;;;;;;接下来的程序是将AX里的值转为ascii码输出到屏幕movbp,sp;先保存下栈顶指针的值label01:movcl,10divcl;将ax除以10取余数cmpal,0;若余数已经是0,说明已经全部除尽,也就是只有最后一个余数没有jelabel02;入栈了movdx,ax;保存一下ax中的余数和商movcl,8shrax,cl;通过移位操作,取出AX中的余数ahpushax;余数入栈moval,dlandax,00ffh;将商取出再赋给AX,再进行除10取余运算jmplabel01label02:movcl,8shrax,clpushax;将最后一个余数进栈label03:popax;ax出栈并调用中断的2号功能现在在控制台movdl,aladddl,30hmovah,02hint21hcmpbp,sp;由于原先保存了栈顶指针,所以将现在的栈顶指针和原先的比较jnelabel03movah,4chint21hcodeendsendstart六、实验结果:从键盘输入6个分数,运行结果如下:(10+20+52+7+89+56)/6=39验证程序是正确的。从键盘输入20个数:(10+20+25+65+47+85+93+66+8+74+45+54+23+56+9+6+65+62+38+95)/20=47.3验证程序是正确的。从键盘输入30个数:平均值为75.5,程序正确。七、实验体会:本次试验难点在于从键盘读入30个数据,我想到的是利用DOS10号功能调用,直接能从键盘读入字符串,并存在数据段中,不用循环调用DOS1号功能。由于有了前两次实验上级的积累,在将16进制用十进制输出的过程中,比较顺利的完成了。实验较为成功。学生签字:日期:

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

《计算机原理实验报告》 计算学生平均成绩实验

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部