8086实验指导书-2016(定稿20161009) - 图文(7)

2019-08-30 17:10

PROTEUS-8086实验指导书

六、 实验结果和体会

七、 建议

第29页

PROTEUS-8086实验指导书

实验五 子程序设计

一、实验目的

1.学习子程序的定义和调用方法。

2.掌握子程序、子程序的嵌套、递归子程序的结构。 3.掌握子程序的程序设计、编制及调试方法。

二、实验内容

1.求无符号字节序列中的最大值最小值

设有一字节型序列,其存贮首址为3000H,字节数为08H。利用子程序的方法编程求出该序列中的最大值与最小值。程序流程图如图5-l所示。

开始 数据首址?SI

调用求最大最小值子程序 结 束

图5-1 主程序流程图

序列的字节个数

第30页

PROTEUS-8086实验指导书

Y (CX)=0? N SI,CX,BX入栈 (SI)?BH;BH?BL (SI)+1?SI;(SI)?AL (AL)<(BH) Y (AL)>(BL) Y (CX)-1?CX N AL?BH N AL?BL N (CX)=0? Y RET 图5-2 子程序流程图

2.求N!

利用子程序的嵌套和子程序的递归调用,实现N!的运算。 根据阶乘运算,我们有:

N!=N*(N-1)!=N*(N一l )*(n-2)!=?? 0!=1

由此我们可以想到,欲求N的阶乘,可以用一递归子程序来实现,每次递归调用时应将调用参数减1,即求(N-1)的阶乘,并且当调用参数为0时应停止递归调用,且有0!=1的中间结果。最后将每次调用的参数相乘得到最后结果;因每次递归调用时参数都送入栈中,当N减为0而程序开始返回时,应按嵌套的方式逐层返回,并逐层取出相应的调用参数。

第31页

PROTEUS-8086实验指导书

假定,N放在3000H~3001H单元中,N!的结果放在3010H起始的单元中,N在00H~0FH间取数,且(3000H)中放低位。

三、实验步骤

1、Proteus仿真

a.在Proteus中新建两个工程“子程序设计X.pdsprj”,添加自己编写的汇编代 码,编译直至成功;

b.设置断点、运行程序,打开调试窗口进行调试。 2、调试、验证

a.设置断点、单步运行程序;

b.观察程序运行到断点时,8086内存相应地址单元和寄存器的数值变化; c.验证实验结果。

四、实验结果和体会

五、思考题

1.若求有符号字节型序列中的最大值与最小值,如何修改程序?

2.子程序执行完毕后要返回调用程序,它返回调用程序的什么地方,是靠什么指令、什么方法返回的?

3.若N=3。请画出求N!程序运行时的堆栈变化情况,并加以解释。

第32页

PROTEUS-8086实验指导书

8086硬件部分实验

实验一 IO口读写实验 (245、373)

一、 实验要求

利用板上集成电路上的资源,扩展一片74HC245,用来读入开关状态;扩展一片74HC373,用来作来输出口,控制8个LED灯。

二、 实验目的

1、了解CPU常用的端口连接总线的方法。 2、掌握74HC245、74HC373进行数据读入与输出。

三、 实验电路及连线

1、Proteus实验电路

2、硬件验证实验

第33页


8086实验指导书-2016(定稿20161009) - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:linux实验四

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: