资源描述:
《北邮微原软件实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、微原软件实验姓名学院专业班级学号班内序号实验二分支,循环程序设计一.实验目的:1.开始独立进行汇编语言程序设计;2.掌握基本分支,循环程序设计;3.掌握最简单的DOS功能调用.二.实验内容:1.安排一个数据区(数据段),内存有若干个正数,负数和零.每类数的个数都不超过9.2.编写一个程序统计数据区中正数,负数和零的个数.3.将统计结果在屏幕上显示.4.(选作)统计出正奇数,正偶数,负奇数,负偶数以及零的个数.三.预习题:1.十进制数0--9所对应的ASCII码是什么?如何将十进制数0--9在屏幕上显示出来?答:(1)十进制数0-9所对应的ASCII码分别为:48
2、、49、50、51、52、53、54、55、56、57,即30H、31H、32H、33H、34H、35H、36H、37H、38H、39H。(2)将要显示的数字加上30H,得到该数的ASCII码,再利用DOS功能调用显示单个字符。2.如何检验一个数为正,为负或为零?你能举出多少种不同的方法?答:(1)采用CMP指令,观察标志位;(2)采用TEST指令,观察标志位;(3)将该数与0相与,观察标志位;(4)将该数与0相减,观察标志位。四.流程图选作流程图流程图五.源代码(1)DATASEGMENT;数据段BUFFDW5,-3,-7,0,18,19,0,33;待检索的数
3、字序列COUNTEQU$-BUFF;此时,COUNT的值为BUFF所占的字节数STRINGDB6DUP(?);存放要显示的结果DATAENDSCODESEGMENT;代码段ASSUMECS:CODE,DS:DATA,ES:DATABEGIN:MOVAX,DATAMOVDS,AXMOVCX,COUNTSHRCX,1;相当于除2,正好为BUFF中的数据个数MOVDX,0;设定计数器初值MOVAH,0;设定计数器初值LEABX,BUFFAGAIN:CMPWORDPTR[BX],0JGEPLU;大于等于0,则转PIUINCAH;<0,则统计JMPNEXTPLU:JZZE
4、R;=0,则转ZERINCDL;>0,则统计JMPNEXTZER:INCDH;=0,则统计NEXT:INCBXINCBX;修改地址指针DECCXJNZAGAINmoval,dl;DL中存放整数的个数,移至AL,准备显示CALLWORDPRINTmovax,4C00h;terminatetheprogramnormallyint21h;******************************;*显示结果*;******************************WORDPRINTPROCandal,0Fhcallhexdmovstring,almoval,
5、dh;DH中存放0的个数,移至AL,准备显示andal,0Fhcallhexdmovstring+1,'';为增加可读性,在输出字符之间增加空格键movstring+2,almoval,ah;AH中存放负数个数,移至AL,准备显示andal,0Fhcallhexdmovstring+3,''movstring+4,almovstring+5,'$'MOVAH,9MOVDX,OFFSETSTRINGint21hWORDPRINTENDP;****************************************************************
6、****;*将1位十六进制数转换为其对应的ASCII码,其中入口参数为AL中存放的待*转换的十六进制数,出口参数为转换完的结果,存入AL中;********************************************************************HEXDPROCNEARCMPAL,0AHJLADDZADDAL,'A'-'0'-10ADDZ:ADDal,'0'RETHEXDENDPCODEENDSENDBEGIN(2)选作DATASEGMENTBUFFDW5,-3,-7,0,18,19,0,33,-4COUNTEQU$-BUFF;;此
7、时,COUNT的值为BUFF所占的字节数TMP1DB0;负偶数个数TMP2DB0;负奇数个数STRINGDB10DUP(?);存放待显示结果DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA;初始化BEGIN:MOVAX,DATAMOVDS,AXMOVCX,COUNTSHRCX,1;;相当于除2,正好为BUFF中的数据个数MOVDX,0;;dh中存放正奇数个数,dl中存放正偶数个数MOVAH,0;;ah中存放0的个数LEABX,BUFFAGAIN:CMPWORDPTR[BX],0JGEPLU;大于等于0,则转PIUJ
8、MPMINMIN:SHR