资源描述:
《2015年微机原理软件实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、信息与通信工程学院微机原理软件实验报告班级:姓名:学号:日期:2015年11月实验B分支、循环程序设计一、实验目的1.开始独立进行汇编语言程序设计;2.掌握基本分支,循环程序设计;3.掌握最简单的DOS功能调用。二、实验内容1.安排一个数据区,内存有若干个正数,负数和零。每类数的个数都不超过9。2.编写一个程序统计数据区中正数,负数和零的个数。3.将统计结果在屏幕上显示。4.(选作题)统计出正奇数、正偶数,负奇数、负偶数以及零的个数。三、预习思考1.十进制数0~9所对应的ASCII码是什么?如何将十进制数0~9在屏幕上显示出来?0~9分别对应A
2、SCII码的30H~39H;由于数字0~9的ASCII码值与其代表的数值之间相差30H,因此将其减去30H即可得到以非压缩型BCD数形式表示的十进制数。2.如何检验一个数为正,为负或为零?你能举出多少种不同的方法?一是直接用CMP命令和0比较(CMPX,0),然后检验标志位CF,CF=1则X为负数,CF=0接着检验ZF,ZF=1则X为零,ZF=0则X为正数;二是使用逻辑或移位运算,和0相比是否相等,用数和相与,取出符号位判断,可区分正负。四、实验过程流程图源代码datasegmentarraydb1,4,3,2,5,7,-1,-2,-6,0,0
3、,0;自定义数组lengthEQU$-array;数组长度pnumdb?;正数个数nnumdb?;负数个数zerodb?;零的个数pevendb?;正偶数个数podddb?;正奇数个数nevendb?;负偶数个数nodddb?;负奇数个数POSICHARDB'Positive:$';用于打印字符串定义NEGTCHARDB'Negtive:$'ZEROCHARDB'Zero:$'EVENCHARDB'Even:$'ODDCHARDB'Odd:$'CRDB0DH,0AH,'$';回车换行的ASCII码dataends;---------------
4、-----------------------------------------codesegmentassumecs:code,ds:datastart:movax,datamovds,axmovsi,offsetarray;offset指令取array的偏移地址decsi;偏移地址先减1movcl,length;数组长度赋予CLxoral,allop:cmpcl,0;余下数组长度不为0,则继续循环jeprint;cl为0跳出循环incsi;偏移地址加1,比较下一位数字deccl;余下数组长度减1movbl,[si];采用寄存器间接寻址方式
5、cmpbl,0;和0比较jgposi;正数跳转jzzo;零跳转jlneg;负数跳转posi:incpnum;正数个数加1testbx,01h;检测最后一位是否是0jzpep;是0,即为偶数则跳转至pepincpodd;不是0,则正奇数个数加1jmploppep:incpeven;正偶数个数加1jmplopzo:inczero;零的个数加1jmplopneg:incnnum;负数个数加1testbx,01h;检测最后一位是否是0jznep;是0,即为偶数则跳转至nepincnodd;不是0,则负奇数个数加1jmplopnep:incneven;正
6、偶数个数加1jmplopprint:movah,09h;打印正数个数movdx,offsetPOSICHARint21h;系统功能调用movah,02hmovdl,pnumadddl,30hint21hmovah,09hmovdx,offseteventcharint21hmovah,02hmovdl,pevenadddl,30hint21hmovah,09hmovdx,offsetoddcharint21hmovah,02hmovdl,poddmovdl,30hint21hmovdx,offsetcrmovah,09hint21h;-----
7、---------------------------------------------------movah,09h;打印负数个数movdx,offsetnegtcharint21h;系统功能调用movah,02hmovdl,nnumadddl,30hint21hmovah,09hmovdx,offseteventcharint21hmovah,02hmovdl,nevenadddl,30hint21hmovah,09hmovdx,offsetoddcharint21hmovah,02hmovdl,noddmovdl,30hint21hmo
8、vdx,offsetcrmovah,09hint21hmovah,09hmovdx,offsetzerocharint21h;系统功能调用movah,