- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
实验四子程序设计实验
一、实验目的
1.学习子程序的定义和调试方法。
2.掌握子程序、子程序的嵌套、递归子程序的结构;
3.掌握子程序的程序设计及调试方法。
二、实验设备
PC机一台,TD-PITE实验装置一套。
三、实验内容及步骤
1.求无符号字节序列中的最大值和最小值
设有一字节序列,其存储首地址为3000H,字节数为08H。利用子程序的方法编程求出该序列中的最大值和最小值。程序流程图如图4-1所示。
图4-1程序流程图
实验程序
SSTACK SEGMENTSTACK
DW64DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUMECS:CODE
START: MOVAX,0000H
MOVDS,AX
MOVSI,3000H ;数据区首址
MOVCX,0008H
CALLBRANCH ;调用子程序
HERE: JMPHERE
BRANCH PROCNEAR
JCXZA4
PUSHSI
PUSHCX
PUSHBX
MOVBH,[SI]
MOVBL,BH
CLD
A1: LODSB
CMPAL,BH
JBEA2
MOVBH,AL
JMPA3
A2: CMPAL,BL
JAEA3
MOVBL,AL
A3: LOOPA1
MOVAX,BX
POPBX
POPCX
POPSI
A4: RET
BRANCH ENDP
CODE ENDS
ENDSTART
实验步骤:
(1)根据程序流程图编写实验程序;
(2)经编译、链接无误后装入系统;
(3)键入E3000命令,输入8个字节的数据,如:D9078BC5EB049DF9;
(4)运行实验程序;
(5)点击停止按钮,停止程序运行,观察寄存器窗口中AX的值,AX应为F904,其中AH中为最大值,AL中为最小值;
(6)反复测试几组数据,检验程序的正确性。
程序说明:该程序使用BH和BL暂存现行的最大值和最小值,开始时初始化成首字节的内容,然后进入循环操作,从字节序列中逐个取出一个字节的内容与BH和BL相比较,若取出的字节内容比BH的内容大或比BL的内容小,则修改之。当循环操作结束时,将BH送AH,将BL送AL,作为返回值,同时恢复BX原先的内容。
2.求N!
利用子程序的嵌套和子程序的递归调用,实现N!的运算。根据阶乘运算法则,可以得:
N!=N(N-1)!=N(N-1)(N-2)!=……
0!=1
由此可知,欲求N的阶乘,可以用一递归子程序来实现,每次递归调用时应将调用参数减1,即求(N-1)的阶乘,并且当调用参数为0时应停止递归调用,且有0!=1,最后将每次调用的参数相乘得到最后结果。因每次递归调用时参数都送入堆栈,当N为0而程序开始返回时,应按嵌套的方式逐层取出相应的调用参数。
定义两个变量N及RESULT,RESULT中存放N!的计算结果,N在00H~08H之间取值。
实验程序
SSTACK SEGMENTSTACK
DW64DUP(?)
SSTACK ENDS
PUBLIC N,RESULT ;设置全局变量
DATA SEGMENT
N DB? ;N的范围在1~8之间
RESULT DW? ;N!的结果存于该变量中
DATA ENDS
CODE SEGMENT
ASSUMECS:CODE,DS:DATA
START: MOVAX,DATA
MOVDS,AX
MOVAX,OFFSETRESULT
PUSHAX
MOVAL,N
MOVAH,00H
PUSHAX
MOVDI,0000H
CALLbranch
JMPSTART ;在此处设置断点,观察变量
branch: PUSHBP
MOVBP,SP
PUSHBX
PUSHAX
MOVBX,[BP+DI+06H]
MOVAX,[BP+DI+04H]
CMPAX,0000H
JZA1
PUSHBX
DECAX
PUSHAX
CALLbranch ;递归调用
MOVBX,[BP+DI+06H]
MOVAX,[BX]
PUSHBX
MOVBX,[BP+DI+04H]
MULBX
POPBX
JMPA2
A1: MOVAX,0001H
A2: MOVRESULT,AX
POPAX
POPBX
POPBP
RET0004H
CODE EN
您可能关注的文档
- 共建联合研究院合作协议.doc
- 第十章+国民收入决定理论(习题).doc
- 智慧云仓项目可行性研究报告-用于立项备案.doc
- 建筑消防设施维护保养作业指导书DOC59页.doc
- 授课计划基础护理1.doc
- 语文人教版四年级上册群文阅读——科技改变生活.doc
- 古代文学史考试指导.docx
- 妇科进修计划多篇整理.docx
- 中小学生校服的评价调查问卷中小学生校服满意调查问卷.docx
- 硬脂酸丁酯安全技术说明书(msds).docx
- C200系列开发:C200PCPro_(4).C200PCPro编程语言与工具使用.docx
- C200系列开发:C200PCPro_(12).C200PCPro故障诊断与解决策略.docx
- C200系列开发:C200PCPro_(10).C200PCPro开发文档编写与版本控制.docx
- C200系列开发:C200PM_(5).C200PM编程语言与工具使用.docx
- PTT项目安全评估报告.docx
- C200系列开发:C200PM_(13).C200PM开发流程与规范.docx
- 电容器用铌粉,铌丝项目安全评估报告.docx
- 地震电磁辐射观测仪项目安全评估报告.docx
- C200系列开发:C200PM_(14).C200PM生态系统与资源利用.docx
- 融媒体项目风险分析和评估报告.docx
文档评论(0)