安防监控知识
电气知识|什么是子程序?子程序的概念
2017-02-13  浏览:40
安防之家讯:把可以多次调用、能够完成特定操作功能的程序段编写成独立的程序模块称为子程序,又称其为过程。主程序与子程序之间的关系如图1所示。



图1 主程序与子程序间的关系

一、子程序特性

1.重复性

2.通用性

3.可浮动性

4.可递归和可重入性

二、子程序定义

格式: 

PROCEDURE NAME PROC ATTRIBUTE



PROCEDURE NAME ENDP

1.子程序名

2.属性

①NEAR

②FAR。

三、子程序的设计方法

子程序是程序设计中经常使用的程序结构,通过把一些固定的、经常使用的功能做成子程序的形式,可以使源程序及目标程序大大缩短,提高程序设计的效率和可靠性。

对于一个子程序,应该注意它的入口参数和出口参数。

入口参数是由主程序传给子程序的参数,而出口参数是子程序运算完传给主程序的结果。另外,子程序所使用的寄存器和存储单元往往需要保护,以免影响返回后主程序的运行。

主程序在调用子程序时,一方面初始数据要传给子程序,另一方面子程序运行结果要传给主程序,因此,主子程序之间的参数传递是非常重要的。

四、子程序的调用和返回

1.CALL指令

2.RET指令

五、现场保护与现场恢复

1.现场保护与现场恢复的原因

2.现场保护与现场恢复的实现

(1)PUSH/POP

(2)PUSHA/POPA

(3)PUSHAD/POPAD

六、参数传递的实现

参数传递一般有四种方法实现:

(1) 利用寄存器

这是一种最常见方法,把所需传递的参数直接放在主程序的寄存器中传递给子程序。

(2) 利用存储单元

这种参数传递方法,把所需传递的参数直接放在子程序调用指令代码之后。若子程序和调用程序在同一源文件(同一程序模块)中,则子程序可直接访问模块中的变量,进行参数传递。

(3) 利用堆栈

这种方法将参数压入堆栈,在子程序运行时从堆栈中取参数。

下面我们通过实例说明子程序设计及参数传递方法。

(4) 通过地址表传递参数地址

这种方法是在主程序中建立一个地址表,把要传送给子程序的参数都存放在地址表中,然后把地址表的首地址通过寄存器BX传送到子程序中去。子程序通过地址表取得所需参数,并把结果存入指定的存储单元中去。

五、增强功能的子程序定义伪操作

从MASM5.1版开始为用户提供增强功能的过程定义伪操作

伪操作格式:

procnamePROC [attribute field][USES register list][, parameter field]



procnameENDP

说明:

①.其中属性字段(attribute field)有以下几项组成:distancelanguage typevisibilityprologue,每一项均为可选,各项之间用一空格或制表符分开。

Ⅰ.distance就是NEAR或FAR。

Ⅱ.language type说明当该过程作为某高级语言程序的子过程时所用的高级语言。

Ⅲ.visibility说明该过程的可见性,可用Private或Public。如用Private则该过程的可见性只能是当前的源文件;如用Public则允许其他模块调用该过程(默认)。

Ⅳ.prologue是一宏的名字,允许用户用宏来控制过程的入口和出口有关的代码。

②.USES字段允许用户指定所需保存和恢复的寄存器表,MASM将在过程入口自动生成push指令来保存这些寄存器,并在过程出口的ret指令前自动生成pop指令来恢复这些寄存器。

③.参数字段允许用户指定该过程所用参数,其格式为:identifier:type[,identifier:type]其中identifier给出参数的符号名,type给出参数的类型。参数之间用逗号隔开。

增强功能的过程定义伪操作还可在过程中定义局部变量。

局部变量是指在过程内部使用的变量。它是在过程被调用时在堆栈中建立的,在退出过程时被释放。它是以[BP-2]、[BP-4]、…的形式被访问的。MASM规定,在过程内可以用LOCAL伪操作为局部变量申请空间。

伪操作格式:LOCALvardef [,vardef]

说明:

①.其中变量定义可用的格式为:label label:type label [count]:type其中第一个未指定类型者MASM将使用WORD。type可以指定任意合法的类型说明。第三种类型为用户申请数组提供了方便。

②.LOCAL语句必须紧跟在过程定义伪操作之后,并在任何80x86指令或可以产生任何代码的MASM语句之前出现。它可以定义多个局部变量。

七、程序的调用

1.递归的概念

2.递归的特点

安防之家专注于各种家居的安防,监控,防盗,安防监控,安防器材,安防设备的新闻资讯和O2O电商导购服务,敬请登陆安防之家:http://anfang.jc68.com/
更多»您可能感兴趣的文章:
更多»有关 安防之家 的产品:
  • 安防监控资讯
  • 发表评论 | 0评
  • 评论登陆
  • 移动社区 天花之家 木门之家 灯具之家 铁艺之家 幕墙之家 五金头条 楼梯头条 墙纸头条 壁纸头条 玻璃头条 老姚之家 灯饰之家 电气之家 全景头条 照明之家 防水之家 防盗之家 区快洞察 建材 枣庄建材 临沂建材 南昌建材 上饶建材 抚州建材 宜春建材 吉安建材 赣州建材 鹰潭建材 新余建材 九江建材 萍乡建材 景德镇陶瓷 石家庄建材 衡水建材 廊坊建材 沧州建材 承德建材 建材之家 企业之家 720全景
    (c)2015-2017 Bybc.cn SYSTEM All Rights Reserved