文档介绍:.微机原理软件实验报告学院:信息与通信工程学院班级:2012211123班内序号:学生姓名:学号:,循环程序设计一、;,循环程序设计;、,内存有若干个正数,负数和零。每类数的个数都不超过9。,负数和零的个数。。4.(扩展题)统计出正奇数、正偶数,负奇数、负偶数以及零的个数。三、画出程序流程图开始初始化读入一个数NN判断是否大于等MINUS+1于零YNPLUS+1N是否等于零YCX=0ZERO+、给出源程序(要求加注释)datasegmentbuffdw1,2,0,0,-1;数据段,初始化数据countequ$-buffplusdb?;定义三种数的存储位置zerodb?minusdb?string1db'plusnumber:','$'string2db'zeronumber:','$'string3db'minusnumber:','$'dataendsstacksegmentstack'stack'db100dup(?)stackendscodesegmentassumecs:code,ds:data,es:data,ss:stackbegin:movax,datamovds,axmovcx,countshrcx,1movdx,0movah,0leabx,buffagain:cmpwordptr[bx],0;首先和0比较jgepluincah;小于零MINUS+1jmpnextplu:jzzer;判断是否等于零,等于零ZERO+1incdl;不等于零PLUS+1jmpnextzer:incdhnext:incbx;下一个数incbxloopagainadddl,48movplus,dladddh,48movzero,dhaddah,48movminus,:subdx,dx;显示模块movdx,offsetstring1;送显示指令movax,0900hint21hmovdl,[plus]movax,0200hint21hmovdl,0dhint21hmovdl,0ahint21hmovdx,offsetstring2movax,0900hint21hmovdl,[zero]movax,0200hint21hmovdl,0dhint21hmovdl,0ahint21hmovdx,offsetstring3movax,0900hint21hmovax,0200hmovdl,[minus]int21hmovax,4c00h;、给出程序运行结果(运行结果抓屏保存)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看到内存空间,非常直观。由于在程序中存在很多条件跳转语句,所以需要在最初设计时就考虑好各种分支情况,在画好程序流程图之后,程序的编写工作变得简单了很多,简化了编写代码过程中的思考过程。、;、,寻找其中的最小值,,输入结束标志自定,,以防止非法字符输入,,、画出程序流程图