资源描述:
《微机原理实验报告---汇编语言n的阶乘.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、微机原理实验报告-------颜色的排列组合方式院系:自动化班级:学号:姓名:日期:成绩:1.题目在实际中,有红黄蓝绿等7种颜色,按照排列组合方式,分别计算出有多少种排列方式?如果减少一种颜色,又有多少中排列呢?2.题目分析题目中给去n种(n=7)颜色,要求我们计算可能出现的组合种数,这是数学中常见的排列组合问题。题目的意思是指的传统的排列组合,不许有重复颜色的,否则与生活习惯就不符合了。这个咱们就熟悉了,对于n种颜色,应该有种排列方式。我们知道,在数值上就是n的阶乘,现在程序的对象成为求阶乘了。对于阶乘,我的思路是利用循环,设计一个累加变量兼被乘数x,用n来作为结束
2、判断,当x>n时,累乘循环结束,现在就得到了相应的种类数。但是内存中的数值是以16进制存放的,还需要一步进制转换才能进行显示。我的算法是:开辟5个空间的变量result1存放个位数字,给bx赋值10,(※)把dx清零,用{dx,ax}除以bx,得到的余数放在dx中,就是个位数的十进制表示,在转放到result1的第一个地址中。此时商数存在ax中,再重复(※)之后的内容,直到全部转化完。显示的算法是十进制数字加上30h,变为ASCII码,利用INT21H中断循环显示各位数字。程序还给阅读者提供了选择权,允许读者进行输入,当读者输入一个数据n(n<=7)时,程序会根据输入,
3、显示出相应的运算结果,这样当给定的样色种类变化时,就不用对程序本身进行更改了,可谓更加方便灵活。 1.程序框图开始定义各段,变量result1存放结果各位输入颜色种类NAX=1,BX=1,CX=NAX=AX*BXBX=BX+1,CX=CX-1CX=0?NAX中的16进制数转化为10进制数,存于result1中输出各位数字结束进制转化部分介绍:Bx=10,cx=4,{dx,ax}/bxdx为一位十进制,给result1的一个单元cx=cx-1Cx=0?NY接输出1.程序编写CRLFMACRO;定义回车换行的宏MOVDL,0DHMOVAH,2INT21HMOVDL,0AHM
4、OVAH,2INT21HENDMSTACKSEGMENTSTACK;初始定义DW100DUP(?)STACKENDSDATASEGMENTSTRINGDB'ENTERSORTOFCOLOUR:','$';输入提示字符串RESULT1DB5DUP(0);用来存储结果的各位数字DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVDX,OFFSETSTRINGMOVAH,9INT21HMOVAH,1;输入样色的种类INT21HSUBAH,A
5、HSUBAL,30HMOVCX,AX;颜色的种类用来控制循环CRLFMOVAX,1MOVBX,1LP:MULBXINCBXLOOPLPLEADI,RESULT1;LP循环求阶乘MOVBX,10MOVCX,4LOOP1:DIVBXMOV[DI],DL;LOOP1将16进制转为10进制INCDISUBDX,DXLOOPLOOP1DECDIMOVCX,4DISPLAY:;DISPLAY用来显示10进制的各位数字ADDBYTEPTR[DI],30HMOVDL,[DI]MOVAH,2INT21HDECDILOOPDISPLAYMOVAX,4C00HINT21HCODEENDSEN
6、DSTART5.运行结果6.结果讨论排列中数是颜色种类n的阶乘,比较5种6种和7种的数值可发现,120,720和5450相差很大。种类和排列方式不是成简单的线性关系,跳跃很大。可以想象,当颜色总类增加到10种以上是,结果会更庞大。