云南大学软件学院汇编语言实验报告七.docx
练习统计男女生人数1.实验内容统计一个有10人的班中,男、女生的人数各为多少。将统计结果的男生人数存入变量MAN中,女生人数存入变量WOMAN中。3.编程指导男、女生的标志可用‘L’和‘0’字符来表示,并从键盘输入此标志。根据题意,总人数已知,在此范围下,对输入的标志进行分类求和显然可用循环结构来完成。每循环一应使相应的人数增L,而循环计数值(开始为总人数)减1,直至该计数值为0。这样,我们可用CX作为循环计数值,用“LOOP“指令对循环的条件进行判定。源程序DATASEGMENTMANDB0;WOMENDB0;COUNTEQU10;DISPDB0DH,0AH,‘MANORWOMEN1/0‘,‘’DISP1DB0DH,0AH,‘MAN’,‘’DISP2DB0DH,0AH,‘WOMEN’,‘’DATAENDSCODESEGMENTASSUMECSCODE,DSDATASTARTMOVAX,DATAMOVDS,AXMOVCX,COUNTMOVDX,OFFSETDISPMOVAH,9INT21HMOVAH,1INT21H;CMPAL,‘1’JZMANCOUNTCMPAL,‘0’;JZWOMENCOUNTJMPMANCOUNTINCMAN;JMPLOOPNEXTWOMENCOUNTINCWOMEN;女生LOOPNEXTLOOPMOVAH,4CHINT21H;CODEENDSENDSTART5.3子程序设计实例实验练习计算N程序实验1.实验内容编程计算N8N0的值。要求将计算N编为递归子程序。2编程指导由阶乘的递归定义得知N1当N0时NNN1当N0时为了求得N的值必须递归调用N1的子程序,但每次调用的参数都是不同的。第一次以N为参数,因为要求得N,必须要先求出(N-L),所以第二次调用时是以N1为参数。同样为了求得N1,必须先求出N2,.因此第三次调用是以N2为参数,依次类推,直到参数为0时止。此时,将每一步调用的结果相乘就是最终的N值。设计递归子程序时,必须保证每次对它的调用都不会破坏以前调用时所用的参数和中间结果,因此,在这样的子程序刚开始一般都要对现场进行进栈保护。另外,递归的结束条件也是相当重要的,选择不好,很容易造成死锁,而不能从递归子程序中返回出来。在该例中01,因此,判断入口参数是否为0就是这个递归子程序递归的结束条件。源程序DATAREASEGMENTNDW3RESULTDWDATAREAENDSSTACK_SEGSEGMENTDW128DUP0TOSLABELWORDSTACK_SEGENDSPROGNAMSEGMENTMAINPROCFARASSUMECSPROGNAM,DSDATAREA,SSSTACK_SEGSTARTMOVAX,STACK_SEGMOVSS,AXMOVSP,OFFSETTOSPUSHDSSUBAX,AXPUSHAXMOVAX,DATAREAMOVDS,AXMOVBX,NPUSHBXCALLFACTPOPRESULTMOVDX,RESULTMOVAH,2INT21HRETMAINENDPFACTPROCNEARPUSHAXPUSHBPMOVBP,SPMOVAX,BP6CMPAX,0JNEFACT1INCAXJMPEXITFACT1DECAXPUSHAXCALLFACTPOPAXMULWORDPTRBP6EXITMOVBP6,AXPOPBPPOPAXRETFACTENDPPROGNAMENDSENDSTART