资源描述:
《微机原理与接口技术北邮软件实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、微机原理与接口技术软件实验报告实验B分支、循环程序设计一、实验目的1.开始独立进行汇编语言程序设计;2.掌握基本分支,循环程序设计;3.掌握最简单的DOS功能调用。实验任务及内容1.安排一个数据区,内存有若干个正数,负数和零。每类数的个数都不超过9o2.编写一个程序统计数据区中正数,负数和零的个数。3.将统计结果在屏幕上显示。4.选作题:统计出正奇数,正偶数,负奇数,负偶数以及零的个数.0三、程序流程图是x显示结果,结束四、源程序DISPSTRMACROSTR;打出字符串(属于DOS功能调用)MOVMOVMOVMO
2、VINTENDMAH,9DX,SEGSTRDS,DXDX,OFFSETSTR21HDISPNUMMACRONUM;打出数字(属于DOS功能调用)MOVAH,2MOVDL,NUMADDDL,3OH;加30H变为ASCII码INT21HENDMDATASEGMENTNUMDB3,27,0,1,0,-5r4,0COUNTEQU$-NUM;统计数据个数ZEROSDB0;各类数初值均为0PLUSESDB0MINUSESDB0EVENMINUSESDB0ODDMINUSESDB0EVENPLUSESDB0ODDPLUSESDB
3、0ZEROSTRDBODH,OAH,'ZERO:$‘;待输出字符串PLUSSTRDB0DH,0AH/PLUS$MINUSSTRDB0DH,0AH,'MINUS:$'EVENMINUSSTRDB0DH,0AH,'EVENMINUS:$‘ODDMINUSSTRDBODH,OAH/ODDMINUS:$‘EVENPLUSSTRDBODH,OAH,'EVENPLUS:$‘ODDPLUSSTRDBODH,OAH,'ODDPLUS:$‘DATAENDSSTACKSEGMENTSTACK^TACK1DB100DUP(?)STACK
4、ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTARTPROCFARPUSHDS;初始化MOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVCX,COUNT;cx控制循环次数MOVSI,OFFSETNUM;SI指向数据的偏移地址L00P1:CMPBYTEPTR[SI],0;将SI指向的内容与0比较大小JZZERO;等于0跳转JGPLUS;大于0跳转INCMINUSES;负数加一SHRBYTEPTR[SI],1;判断是负奇数还是负偶数JNCEVENMINU
5、S;是负偶数跳转INCSI;SI指针后移INCODDMINUSES;负奇数加一RETURN:LOOPL00P1;循坏直至cx=oJMPDISP;循环结束后跳转至打出结杲ZERO:INCZEROSINCSIJMPRETURN;返回循坏体PLUS:INCPLUSESSHRBYTEPTR⑸],1JNCEVENPLUSDISP:STARTCODEendINCSIINCODDPLUSESJMPRETURNINCSIINCEVENPLUSESJMPRETURNINCSIINCEVENMINUSESJMPRETURNDISPST
6、RZEROSTRDISPNUMZEROSDISPSTRPLUSSTRDISPNUMPLUSESDISPSTRMINUSSTRDISPNUMMINUSESDISPSTREVENPLUSSTRDISPNUMEVENPLUSESDISPSTRODDPLUSSTRDISPNUMODDPLUSESDISPSTREVENMINUSSTRDISPNUMEVENMINUSESDISPSTRODDMINUSSTRDISPNUMODDMINUSESRETEVENPLUS:EVENMINUS:;打出结果ENDPENDSENDstart五
7、、程序运行结果START进行统计的数据为3,2,7O1/V5厂4,0。程序运行结果如下:DOSBox0.74rCpuspeed:3000cyclesfFrameskip0fPro...Microsoft(R)OverlayLinkerUersion3.60Copyright(C)MicrosoftCorp1983-1987・Allrightsreserved.RunFile[B.EXE1:ListFile[NUL.MAPJ:Libraries[.LIB]:c:、>C:>C:>debugB.exe_gZERO:3
8、PLUS:4MINUS:ZEUENPLUS:10DDPLUS:3EUENMINUS:1ODDMINUS:1Programterminanormally六、回答预习题1.十进制数0-9所对应的ASCII码是什么?如何将十进制数0-9在屏幕上显示出来?0-9的ASCII码为30H-39Ho若想将一个十进制数0—9的字符在屏幕上显示出来,首先应该把它所占寄存器的值