资源描述:
《实验六 子程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验六子程序设计6.1实验目的(1)掌握子程序的定义和调用方法(2)通过程序调试,进一步理解CALL指令和RET指令的功能(3)掌握子程序调用时参数传递的方法6.2实验设备及软件环境装有DOS系统及MASM6.15的微机一台。6.3实验内容1.利用堆栈传递参数的子程序调用求累加和。1(N=0)2.子程序的递归调用(求阶乘),其中N!=N×(N-1)!(N>1)6.4实验步骤1.实验实验内容1(1)程序流程图开始第一组数据个数进栈第一组数据首地址进栈第二组数据首地址进栈调求和子程序第二组数据个数进栈调求和子程序返回DOS6.1主程序流程图栈指针SP->BP
2、从堆栈中取数据个数(BP+4)—>CX从堆栈中取数据首地址(BP+2)—>BX寄存器清零:0—>AX累加:AL+(BX)—>AL;AH+CF—>AH调整数据指针:BX+1—>BXCX-1=0存结果:AX—>(BX)YY返回源程序并调整栈指针6.2子程序程序图(2)参考程序DATASEGMENTARY1DB1,2,3,4,5,6,7,8,9,10COUNT1EQU$-ARY1SUM1DW?ARY2DB10,11,12,13,14,15,16,17,18COUNT2EQU$-ARY2SUM2DW?DATAENDSSTACKSEGMENTDB100DUP(0)
3、STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,COUNT1PUSHAXLEAAX,ARY1PUSHAXCALLSUMMOVAX,COUNT2PUSHAXLEAAX,ARY2PUSHAXCALLSUMMOVAH,4CHINT21HSUMPROCNEARMOVBP,SPMOVCX,[BP+4]MOVBX,[BP+2]XORAX,AXADN:ADDAL,[BX]ADCAH,0INCBXLOOPADNMOV[BX],AXRET4SUMENDPCODE
4、ENDSENDSTART(3)操作步骤l使用EDIT编辑源程序ADDSUM.ASMl汇编&连接l进入DEBUG调试Ø先单步执行两条指令,加载数据段寄存器Ø用D命令查看原始数据Ø用G命令执行程序:-G=0Ø用D命令查看结果2.实现实验内容2(1)程序流程图主程序开始AX<—N调用N!子程序存结果:RESULT<—AX结束求N!子程序N=0N进栈NN<—N-1调用N!子程序N-1出栈N!=N*(N-1)!结束N1<—0!6.3程序流程图(2)参考程序DATASEGMENTNDW3RESULTDW?DATAENDSSTACKSEGMENTDB100DUP(?)
5、STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,NCALLFACTMOVAH,4CHINT21HFACTPROCANDAL,ALJNEFACT1MOVAL,1RETFACT1:PUSHAXDECALCALLFACTPOPCXMULCXmovresult,axRETFACTENDPCODEENDSENDSTART(3)操作步骤l使用EDIT编辑源程序NJIE.ASMl汇编&连接l进入DEBUG调试Ø先单步执行两条指令,加载数据段寄存器Ø用D命令查看原始数据Ø用G命
6、令执行程序:-G=0Ø用D命令查看结果6.5实验任务编写程序HEXBIN,要求把从键盘输入的四位0~0FFFFH的十六进制数转换成16位二进制数,并从屏幕上显示出来。提示:(1)程序流程图开始显示“请输入十六进制数”4->BL接收字符“空格”、“回车”?是十六进制数?转换成等值的二进制数转换值送DX低4位BX-1=0?显示16位二进制数显示已转换的二进制数显示出错信息结束YNNYNY图6.4十六进制数转换为二进制数程序流程图(2)参考程序CRLFMACROPUSHAXPUSHDXMOVAH,02HMOVDL,0DHINT21HMOVAH,02HMOVDL
7、,0AHINT21HPOPDXPOPAXENDMDATASEGMENTMESSDB'PLEASEINPUTHEXNUMBER:','$'ERRORDB'INPUTERROR',0DH,0AH,'$'DATAENDSSTACKSEGMENTSTADW32DUP(?)TOPDW?STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVSP,TOPLLL:MOVAH,09HMOVDX,OFFSETMESSINT21HCRLFXORD
8、X,DXMOVBL,04HGGG:MOVAH,01HINT21HCMPAL,0D