- 1、本文档共153页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微型计算机原理 授课教师: 周茂霞 4.5.4程序的基本结构与基本程序设计 (3)利用内存公共数据区传递参数 若主程序与子程序在同一个源程序模块内,在数据段内定义出一个要传送的数据变量,即统称的数据缓冲区(公共数据缓冲区)。子程序可以直接到缓冲区取出应取的参数,对数据缓冲区的变量进行直接访问。为了每次调用子程序时处理的是不同的数据,每次调用前要把处理的数据按规定的格式送入缓冲区。 4.5.4程序的基本结构与基本程序设计 (4)通过地址表传递 这种方法,在主程序中建立一个固定的缓冲区,这个缓冲区存放着待传递数据的参数,例如数据区偏移地址、字节长度等,这个缓冲区称为地址表。这样不必把数据本身传送到固定的缓冲区内。应注意以下两点: ①TABLE用来存放地址表。在每次调用子程序前,必须把数组的起始地址、数组长度和存放和的起始地址放入地址表中,然后再使BX指向地址表的首地址。 ②在子程序执行过程中,BX将表首地址传送到子程序。并且取得必要的三个参数,经处理后,把运算结果送入指定的存储单元中。 4.5.4程序的基本结构与基本程序设计 (1)子程序的嵌套 在程序设计时,一个子程序可以调用另外一个子程序,即子程序中可以套有另外一个子程序,称为子程序嵌套。嵌套的层次称为嵌套的深度。嵌套次数仅受堆栈空间大小的约束,不受其他因素影响。 3.子程序的嵌套和递归 4.5.4程序的基本结构与基本程序设计 (1)子程序的嵌套 3.子程序的嵌套和递归 : : X X CALL S1 : : 图4.23子程序嵌套示意图 主程序MAIN 子程序SI FAR 子程序S2 NEAR RET CALL S2 : : X X : : S1 RET : : : : S2 调用 返回 返回 调用 4.5.4程序的基本结构与基本程序设计 子程序嵌套设计没有什么特殊要求,主要注意两点: ①注意保护寄存器和恢复寄存器,即保护现场和恢复现场。 ②正确使用CALL和RET指令。若要使用堆栈区传递参数,对堆栈操作指令的使用应格外小心,防止因使用不当造成子程序不能正确返回。 3.子程序的嵌套和递归 4.5.4程序的基本结构与基本程序设计 (2)子程序的递归 在子程序嵌套情况下,若一个子程序调用该子程序本身,称这种调用为递归调用。这样的子程序称为递归子程序。 特点:是后一次操作总是和前一次有相同的处理,即后一次为前一次操作基础上的重复。 这种递归调用一定有递归结束条件,即满足一定条件后,退出递归调用。在递归调用过程中,通过堆找区保存相关的中间处理结果和返回点,而退出递归时逐渐依次弹出保留的中间结果和返回点,一直到全部退出递归操作,使最后结果正确无误。递归调用程序结构简单,可以设计出高效率的程序,完成相当复杂的计算。 3.子程序的嵌套和递归 4.5.5 高级语言与汇编语言的混合编程 为了加速高级语言的执行,在某些操作和处理中往往需要调用汇编语言子程序,这就涉及高级语言如何与汇编语言源程序接口问题。 一、C语言与汇编语言的混合编程 4.5.5 高级语言与汇编语言的混合编程 在C语言程序设计中,在某些特殊场合,例如要求提高程序的执行速度,需要直接操作内存和寄存器,实时对I/O端口的操作。这种情况下要求利用汇编语言编写C语言中有特殊要求的部分,形成一个子程序模块,然后由C语言调用它,完成要求的操作及运算。 在C语言与汇编语言编程中,以C程序为主,把汇编子程序作为C的函数调用。C语言调用汇编语言形成的函数(子程序模块),必须遵循一个调用协定。 一、C语言与汇编语言的混合编程 4.5.5 高级语言与汇编语言的混合编程 在C语言程序设计中,在某些特殊场合,例如要求提高程序的执行速度,需要直接操作内存和寄存器,实时对I/O端口的操作。这种情况下要求利用汇编语言编写C语言中有特殊要求的部分,形成一个子程序模块,然后由C语言调用它,完成要求的操作及运算。 在C语言与汇编语言编程中,以C程序为主,把汇编子程序作为C的函数调用。C语言调用汇编语言形成的函数(子程序模块),必须遵循一个调用协定。 4.多重循环程序的设计 4.5.4程序的基本结构与基本程序设计 [例4。17]软件延时程序。由于每条指令的执行所需要T状态数是固定的,可以用多重循环的方法,实现固定的延时。 本程序中,假定时钟频率为10MHz,时钟周期tc=0.1μ,即T状态为0.1μs。软件延时编成一个子程序形式(过程),以便于作为一个定时器调用。 4.多重循环程序的设计 4.5.4程序的基本结构与基本程序设计 TIMEDLY PROC ;指
文档评论(0)