电气知识|什么是子程序?子程序的概念

   更新日期:2017-03-26     来源:建材之家    作者:安防之家    浏览:21    评论:0    
核心提示:把可以多次调用、能够完成特定操作功能的程序段编写成独立的程序模块称为子程序,又称其为过程。主程序与子程序之间的关系如图1所示。 图1 主程序与子程序间的关系 一、子程序特性 1.重复性 2.通用性 3.可浮动性 4.可递归和可重入性 二、子程序定义 格式:  PROCEDURE NAME 

电力检修|处理小电流接地故障的新思路

推荐简介:摘要:基于目前日趋完善的小电流接地选线技术和智能化的综合自动化系统及馈线自动化技术,提出全新的处理接地故障的新思路。阐述了利用馈线自动化技术隔离故障的过程,并表述了该新方法的实用意义。 中低压配电系统的中性点,一般采用不接地或经消弧线圈接地方式,称为小电流接地系统。该系统中发生单相接地故障时,尽管故障分量不大,但由于其他两相对地电压升为线电压,在没有消弧线圈的情况下,如果发......
安防之家讯:把可以多次调用、能够完成特定操作功能的程序段编写成独立的程序模块称为子程序,又称其为过程。主程序与子程序之间的关系如图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相关评论

推荐图文更多...
点击排行更多...
安防监控商机更多...
安防监控圈更多...
最新视频更多...
推荐产品更多...
陶瓷头条 | 空调头条 | 卫浴头条 | 洁具头条 | 油漆头条 | 涂料头条 | 地板头条 | 吊顶头条 | 衣柜头条 | 家居头条 | 博一建材 | 博一建材 | 建材群站 | 建材资讯 | 建材商机 | 建材产品 | 水泥头条 | 楼梯之家 | 门窗之家 | 老姚之家 | 灯饰之家 | 电气之家 | 全景头条 | 照明之家 | 防水之家 | 防盗之家 | 区快洞察 | 漳州建材 | 泉州建材 | 三明建材 | 莆田建材 | 合肥建材 | 宣城建材 | 池州建材 | 亳州建材 | 六安建材 | 巢湖建材 | 宿州建材 | 阜阳建材 | 滁州建材 | 黄山建材 | 安庆建材 | 铜陵建材 | 淮北建材 | 马鞍山建材 |
建材 | 双碳之家 | 企业之家 | 移动社区 | 关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图 | 排名推广 | 广告服务 | 积分换礼 | RSS订阅 | sitemap | 粤ICP备14017808号
(c)2015-2017 Bybc.cn SYSTEM All Rights Reserved
Powered by 安防之家