文档介绍:微机原理软件实验报告学院:信息与通信工程学院班级:2012211123班内序号:学生姓名:学号:实验二分支,循环程序设计一、;,循环程序设计;、,内存有若干个正数,负数和零。每类数的个数都不超过9。,负数和零的个数。。4.(扩展题)统计出正奇数、正偶数,负奇数、负偶数以及零的个数。NYN开始初始化判断是否大于等于零读入一个数ZERO+1是否等于零返回DOS系统结束MINUS+1PLUS+1三、画出程序流程图NNCX=0YY四、给出源程序(要求加注释)datasegmentbuffdw1,2,0,0,-1 ;数据段,初始化数据countequ$-buffplusdb? ;定义三种数的存储位置zerodb?minusdb?string1db'plusnumber:','$'string2db'zeronumber:','$'string3db'minusnumber:','$'dataendsstacksegmentstack'stack' db100dup(?)stackendscodesegment assumecs:code,ds:data,es:data,ss:stackbegin: movax,data movds,ax movcx,count shrcx,1 movdx,0 movah,0 leabx,buffagain: cmpwordptr[bx],0 ;首先和0比较 jgeplu incah ;小于零MINUS+1 jmpnextplu: jzzer ;判断是否等于零,等于零ZERO+1 incdl ;不等于零PLUS+1 jmpnextzer: incdhnext: incbx ;下一个数 incbx loopagain adddl,48 movplus,dl adddh,48 movzero,dh addah,48 movminus,ahshow: subdx,dx ;显示模块 movdx,offsetstring1 movax,0900h ;送显示指令 int21h movdl,[plus] movax,0200h int21hmovdl,0dhint21hmovdl,0ahint21h movdx,offsetstring2 movax,0900h int21h movdl,[zero] movax,0200h int21hmovdl,0dhint21hmovdl,0ahint21hmovdx,offsetstring3 movax,0900h int21h movax,0200h movdl,[minus] int21h movax,4c00h ;结束程序 int21hcodeends endbegin 五、给出程序运行结果(运行结果抓屏保存)datasegment中存入1,2,0,0,-1显示有2个0、2个大于0的数、1个小于0的数,结果正确六、--9所对应的ASCII码是什么?如何将十进制数0-9在屏幕上显示出来?答:对应的ASCII码是30H~39H,把0-9加上30H即可得到对应的ASCII,送给DL,再执行INT21H即可显示。,为负或为零?你能举出多少种不同的方法?答:1先判断是否大于等于零,否则为负数,是则判断是否等于零,否则为整数。,为零则循环左移一直判断,为1为负,为0为正七、实验总结、建议要求、心得体会之前小学期中已经用汇编语言编写过比较大型的程序,但是是在编译器中运行,比较容易查错,而且显示、输入等功能都是调用硬件实现,因此很多经验不能照搬,遇到了很多问题,我发现汇编语言对程序内部存储器等的利用虽然比C语言麻烦,但是都是真正可以控制、可以调用显示的,可以直接DEBUG看到内存空间,非常直观。由于在程序中存在很多条件跳转语句,所以需要在最初设计时就考虑好各种分支情况,在画好程序流程图之后,程序的编写工作变得简单了很多,简化了编写代码过程中的思考过程。实验三代码转换程序设计一、;、,寻找其中的最小值,,输入结束标志自定,,以防止非法字符输入,,,,存储在连续空间检测输入是否正确三