实验六 子程序设计

实验六 子程序设计

ID:15862306

大小:69.00 KB

页数:9页

时间:2018-08-06

实验六 子程序设计_第1页
实验六 子程序设计_第2页
实验六 子程序设计_第3页
实验六 子程序设计_第4页
实验六 子程序设计_第5页
资源描述:

《实验六 子程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。