云南大学信息学院c语言实验七,云南大学软件学院汇编语言实验报告七.docx

本文档介绍了云南大学软件学院学生的实验任务,包括汇编语言编程实践。首先,学生需统计一个班级的男女生人数并将结果分别存入MAN和WOMEN变量。其次,通过循环结构实现输入标志判断并累加男生和女生人数。接着,展示了如何设计计算阶乘的递归子程序,强调了递归调用和参数保护的重要性。
摘要由CSDN通过智能技术生成

41528d3028836879cd698677c3999917.gif云南大学软件学院汇编语言实验报告七.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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值