1 / 4
文档名称:

子程序设计实验(强烈推荐).doc

格式:doc   页数:4
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

子程序设计实验(强烈推荐).doc

上传人:luyinyzha 2015/11/4 文件大小:0 KB

下载得到文件列表

子程序设计实验(强烈推荐).doc

文档介绍

文档介绍:实验四子程序设计实验
一、实验目的

、子程序的嵌套、递归子程序的结构;

二、实验设备
PC 机一台,TD-PITE 实验装置一套。
三、实验内容及步骤

设有一字节序列,其存储首地址为3000H,字节数为08H。利用子程序的方法编程求出该序列中的最大值和最小值。程序流程图如图4-1所示。
图4-1 程序流程图
实验程序
SSTACK SEGMENT STACK
DW 64 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV AX, 0000H
MOV DS, AX
MOV SI, 3000H ; 数据区首址
MOV CX, 0008H
CALL BRANCH ; 调用子程序
HERE: JMP HERE
BRANCH PROC NEAR
JCXZ A4
PUSH SI
PUSH CX
PUSH BX
MOV BH, [SI]
MOV BL, BH
CLD
A1: LODSB
CMP AL, BH
JBE A2
MOV BH, AL
JMP A3
A2: CMP AL, BL
JAE A3
MOV BL, AL
A3: LOOP A1
MOV AX, BX
POP BX
POP CX
POP SI
A4: RET
BRANCH ENDP
CODE ENDS
END START
实验步骤:
(1)根据程序流程图编写实验程序;
(2)经编译、链接无误后装入系统;
(3)键入E3000命令,输入8个字节的数据,如:D9 07 8B C5 EB 04 9D F9;
(4)运行实验程序;
(5)点击停止按钮,停止程序运行,观察寄存器窗口中AX的值,AX应为F9 04,其中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 SEGMENT STACK
DW 64 DUP(?)
SSTACK ENDS
PUBLIC N, R