子程序结构
- 格式:ppt
- 大小:1.34 MB
- 文档页数:64
汇编子程序的一般结构组成。
汇编子程序是一段独立的程序代码,可以被其他程序调用。
它的一般结构由以下几个部分组成:
1. 子程序头部:包括子程序的名称、输入参数和输出参数的说
明等。
2. 参数传递:子程序的输入参数和输出参数通过栈或寄存器传递。
3. 保存寄存器:在进入子程序之前,需要保存一些寄存器的值,以免在执行子程序时被覆盖。
4. 执行程序:这是子程序的核心部分,实现子程序的功能。
5. 恢复寄存器:在退出子程序之前,需要还原保存的寄存器的值。
6. 返回值:如果子程序有返回值,需要将其保存在寄存器或栈中,并通过ret指令返回给调用程序。
以上是汇编子程序的一般结构组成,不同的子程序可能会有差异。
编写子程序需要熟悉汇编语言的基础知识和调试技巧,能够理解程序的逻辑思路、掌握数据结构和算法,才能编写出高效、稳定的子程序。
- 1 -。
第六章 子程序结构一、主程序与子程序的概念子程序又称为过程,它相当于高级语言中的过程和函数。
通常,凡是具有相对独立功能的程序段或需要多次应用的程序段都可以编制成子程序。
程序中当需要这段程序时,用调用指令CALL 转到这段程序中去,执行完毕,通过RET 指令返回原来的程序。
如下图(1)所示。
子程序返回后,从CALL 的下一条指令X 1继续执行主程序。
使用子程序优点:节省编程时间和存储空间,有利于设计一个大而复杂的程序。
即可以把一个大而复杂的程序设计成由一个主程序和若干个子程序组成,使用模块化程序设计,减少程序设计复杂性。
使用子程序不足之处:在调用和返回时要进行堆栈操作,增加CPU 开销,使程序速度减慢。
继续SURENDP X 1: (1)主程序与子程序的关系(2)子程序嵌套调用主程序与子程序的概念是相对的。
图(2)是一个子程序嵌套调用的例子。
图中,程序1在A、B两处调用程序2,在C处调用程序3,则称程序2和3是程序1的子程序,程序1是主程序;而程序2和3又分别调用程序4,则称程序4是程序2和3的子程序,程序2和3是主程序。
这就是子程序中嵌套子程序。
子程序还可以直接或间接调用自己,称为递归子程序和递归调用。
二、调用指令CALL 和返回指令RET(参见指令系统p.98)CALL 调用指令RET 返回指令由于子程序和调用程序可以在同一个段中,也可以不在同一段中,因此这两条指令的格式如下:1、调用指令CALL DSTCALL指令语句实现子程序(即过程)的调用。
调用结束后,要由所调用的子程序RET指令返回到CALL指令的下一条指令(即返回调用断点),因此执行CALL指令时要进行进栈操作。
具体分为直接调用和间接调用。
直接调用:目标地址直接出现在CALL指令语句中,DST就是过程名(即子程序名)。
间接调用:由16位通用寄存器或者存储单元提供调用地址。
(1)段内直接调用格式:CALL DST执行的操作:Push(IP) ;当前IP值进栈(IP)←(IP)+D16;目标地址装入IP,程序转移指令操作分二步:第一步,是把子程序的返回地址(即调用程序中CALL指令的下一条指令的地址)存入堆栈中,以供子程序返回主程序时使用。