子程序的调用

合集下载

子程序调用指令【精选】

子程序调用指令【精选】

子程序存储在存储器中,可供一个或多个调用程序(主程序)反复调用。

主程序调用子程序时使用CALL指令,由子程序返回主程序时使用RET指令。

由于调用程序和子程序可以在同一个代码段中,也可以在不同的代码段中,因此,CALL指令和RET指令也有近调用、近返回及远调用、远返回两类格式。

 ⑴ CALL NEAR PTR <子程序名> 近调用(near call) 近调用是CALL指令的缺省格式,可以写为"CALL <子程序名>rotine"。

它调用同一个代码段内的子程序(子过程),因此,在调用过程中不用改变CS的值,只需将子程序的地址存入IP寄存器。

CALL指令中的调用地址可以用直接和间接两种寻址方式表示。

 ⑵ CALL FAR PTR <子程序名> 远调用(far call) 远调用适用于调用程序(也称为主程序)和子程序不在同一段中的情况,所以也叫做段间调用。

和近调用指令一样,远调用指令中的寻址方式也可用直接方式和间接方式。

 ⑶ RET 返回指令(return) RET指令执行的操作是把保存在堆栈中的返回地址出栈,以完成从子程序返回到调用程序的功能。

● CALL <子程序名> 段内直接调用 执行操作:① (SP) ← (SP)-2,((SP)) ← (IP)当前 ② (IP) ← (IP)当前+16位位移量(在指令的第2、3个字节中) ● CALL DESTIN 段内间接调用 执行操作:① (SP) ← (SP)-2,((SP)) ← (IP)当前 ② (IP) ← (EA) ; (EA)为指令寻址方式所确定的有效地址 ● CALL FAR PTR <子程序名> 段间直接调用 执行操作:① (SP) ← (SP)-2,((SP)) ← (CS)当前 (SP) ← (SP)-2,((SP)) ← (IP)当前 ② (IP) ←偏移地址(在指令的第2、3个字节中) (CS) ←段地址(在指令的第4、5个字节中) ● CALL WORD PTR DESTIN 段间间接调用 执行操作:① (SP) ← (SP)-2,((SP)) ← (CS)当前 (SP) ← (SP)-2,((SP)) ← (IP)当前 ② (IP) ← (EA) ; (EA)为指令寻址方式所确定的有效地址 (CS) ← (EA+2) 从CALL指令执行的操作可以看出,第一步是把子程序返回调用程序的地址保存在堆栈中。

子程序的调用

子程序的调用

mov ax,data mov ds,ax call nearp lea ax,nearp call ax call nproc lea bx,nproc call word ptr [bx]
call farp call fproc lea bx,fproc
Nearp proc near
…… ret Nearp endp Code1 ends end main code2 segment
3)在调用时,NEAR 和FAR 可以强制改变 CALL FAR PTR NEARPROC CALL NEAR PTR FARPROC
子过程的调用与返回指令
子过程的调用是个”有去有回”的过程,子程序执行
完后必须返回CALL指令的下一条指令处,因此必须对
CALL指令的下条指令的地址进行保存.保存地址的操作 是通过堆栈来完成.不是采用PUSH \POP指令来实现,而
通过存储器来传递参数
当调用程序和子程序处于同一文件中,可以直接访问 块内的变量或数据。 举例3:编写程序从键盘上输入一个字符串,存于变量为INPUT中, 要求以回车键作为输入过程的结束,字符结尾部分添加0。 (1) 分析: 子程序getstring直接从键盘输入字符串,入口参数:无。出 口参数:字符串变量INPUT 变量INPUT 属于通过存储器传递参数,调用程序和子程序处 于同一文件在数据段定义变量属于局部变量
Findmax proc
mov ax,[si] Lp1: cmp ax,[si+2] jg next xchg ax,[si+2] next: add si,2 loop lp1 ret findmax endp Code ends
end main
参数的传递

子程序调用指令

子程序调用指令

子程序调用指令
子程序调用指令是指一个程序在一段程序运行时,该段程序执行某个功能时,会调用由另一段子程序处理的指令的一种机器指令。

子程序调用指令的运行过程主要分为六个步骤:
1、先将书写代码时在子程序指令里声明的一个标记符(参数可以有一到多个)放入程序计数器,编程使程序跳转至对应的子程序。

2、将参数放入堆栈中。

3、程序计数器指向下一个指令(位置),将其存入返回地址寄存器中。

4、转至子程序,调用子程序中的指令,直至子程序返回跳转指令。

5、将从子程序返回的参数或结果放入程序总线中。

6、程序计数器指向堆栈中保存的返回地址,继续执行程序。

子程序调用指令的使用有很多优点,可以将程序设计的复杂性降低,提高代码的可维护性,减少重复的编码,并使程序更加结构良好和清晰。

同时,由于调用子程序时需要使用到跳转指令,也可以减少程序运行所需的时间。

然而,程序的运行效率有时也会根据子程序的大小和复杂性以及条件的多少而有所降低。

第十一节 子程序的调用

第十一节 子程序的调用

主程序与子程序间的参数传递 主程序与子程序相互传递的信息称为参数。 主程序与子程序相互传递的信息称为参数。主程序提供给 子程序以便加工处理的信息称为入口参数, 子程序以便加工处理的信息称为入口参数,经子程序加工 处理后回送给主程序的信息称为出口参数。 处理后回送给主程序的信息称为出口参数。在调用子程序 主程序应事先把入口参数放到某些约定的位置。 时,主程序应事先把入口参数放到某些约定的位置。子程 序在运行时,可以从约定的位置得到有关的参数。同样, 序在运行时,可以从约定的位置得到有关的参数。同样, 子程序在运行结束前,也应把出口参数送到约定位置。 子程序在运行结束前,也应把出口参数送到约定位置。在 返回主程序后,主程序可以从这些地方得到需要的结果。 返回主程序后,主程序可以从这些地方得到需要的结果。
第十节 子程序的调用
子程序的概念
• 子程序是一种重要的程序结构。 在实用中, 子程序是一种重要的程序结构 。 在实用中 , 常会遇到需要反复多次执行同一程序段的情 为了减少重复编写的工作量, 形 。 为了减少重复编写的工作量 , 并减少程 序存储空间, 常常把功能完整、 序存储空间 , 常常把功能完整 、 意义明确并 次使用的程序段从原来的程序( 被多次使用的程序段从原来的程序(称为主程 中分离出来独立编写,就成为子程序, 序)中分离出来独立编写,就成为子程序,从 而主程序可根据需要多次调用子程序。 而主程序可根据需要多次调用子程序。
子程序调用与堆栈的关系
• 为了能够成功地调用子程序,主程序应能在需要时通过调用指 为了能够成功地调用子程序, 令自动转入子程序, 令自动转入子程序,子程序完成后应能够通过末尾的返回指令 自动返回调用指令下一条指令地址(称为断点地址 处继续执行。 称为断点地址)处继续执行 自动返回调用指令下一条指令地址 称为断点地址 处继续执行。 • 因此,调用指令不仅要将子程序入口地址送到程序计数器 , 因此,调用指令不仅要将子程序入口地址送到程序计数器PC, 还要将断点地址存入堆栈保护起来。 以便实现程序转移,还要将断点地址存入堆栈保护起来。返回 指令则要将断点地址从堆栈中取出送给PC, 指令则要将断点地址从堆栈中取出送给 ,以便返回断点处继 续执行主程序。 续执行主程序。

易语言子程序参考用法

易语言子程序参考用法

易语言子程序参考用法简介:易语言(Easy Language)是一种面向中文用户的编程语言,它简化了程序设计的复杂性,使中文用户能够更轻松地进行编程,实现自己的创意和需求。

本文将介绍易语言的子程序参考用法,包括定义子程序、调用子程序和传递参数等方面,帮助读者更好地理解和使用易语言。

一、定义子程序子程序是一段独立的程序片段,可以在需要的时候被调用执行。

在易语言中,可以使用"子程序"关键字定义一个子程序,语法格式如下:子程序子程序名 ([参数列表]) : 返回值类型程序体返回返回值结束子程序其中,子程序名是用户自定义的名称,用以标识子程序。

参数列表可以包含多个参数,用于接收传递给子程序的数值或者变量。

返回值类型指明子程序返回的数据类型。

二、调用子程序在需要使用子程序的地方,可以使用"调用"关键字,调用已定义的子程序。

调用子程序时,可以通过参数列表传递参数,在子程序执行过程中,可以根据需要使用传递的参数。

调用子程序的语法格式如下:调用子程序名 ([参数列表])子程序执行完成后,会返回一个值(如果定义了返回值类型的话)。

可以使用变量接收子程序的返回值,例如:变量名 = 调用子程序名 ([参数列表])三、传递参数在易语言中,可以通过参数列表将数值或者变量传递给子程序。

在子程序定义时,需要指定参数列表,并且在调用子程序时,需要按照参数列表的定义传递相应的数值或者变量。

例如:子程序 Test (参数1 : 整数, 参数2 : 字符串)程序体……结束子程序调用 Test(100, "Hello")在上述例子中,Test子程序定义了两个参数,一个是整数类型的参数参数1,一个是字符串类型的参数参数2。

当调用Test子程序时,需要按照参数列表的定义传递数值,如上例中传递了整数100和字符串"Hello"。

四、总结通过本文的介绍,读者对易语言的子程序参考用法应该有了更全面的了解。

加工中心调用子程序的例子

加工中心调用子程序的例子

加工中心调用子程序的例子以下是 8 条关于加工中心调用子程序的例子:1. 嘿,你知道吗,就像我们做饭有不同的步骤一样,加工中心调用子程序也超厉害的哟!比如在加工一个复杂形状的工件时,先编写一个子程序来专门处理某个特定的工艺步骤,就像大厨有一道秘制酱料一样,然后在主程序里一调用,哇塞,轻松搞定复杂加工啊,这多牛呀!2. 哇哦,咱想想看哈,加工中心调用子程序不就像是搭积木嘛!比如要加工一批有着相似特征的零件,完全可以写个子程序来处理这些共性部分,主程序再把这些子程序像搭积木一样组合起来,这不就高效又方便嘛,你说是不是啦?3. 哎呀呀,加工中心调用子程序可不简单呢!就好比是一场精彩的接力赛呀。

比如说加工一个大型工件,不同的部位可以由不同的子程序来负责,一个子程序跑完一程,下一个接着上,这合作得多妙呀,难道不是吗?4. 嘿呀,你晓得不,加工中心调用子程序有时候就像变魔术一样神奇呢!像是要在一个工件上雕刻出精美的图案,先弄个子程序专门管图案的一个小部分,然后在主程序里一次次调用,最后就变出完美的图案啦,这可太有意思啦!5. 哇塞,加工中心调用子程序那可是超有用的哦!打个比方,要给一个零件钻孔,写个钻孔的子程序,主程序里需要钻孔时就调用它,这多简单直接呀,难道不可爱嘛?6. 哈哈,加工中心调用子程序就跟排兵布阵一样酷呢!比如说在加工一个复杂结构时,可以设计各种子程序来应对不同的情况,然后根据实际需求在主程序里灵活调用,就像将军指挥作战一样,厉害吧?7. 哎呀,加工中心调用子程序可真是个好办法呀!就像我们玩游戏有各种技能一样。

比如对于不同的加工要求,准备合适的子程序,要用的时候一召唤,立马发挥作用,这感觉多棒呀!8. 哇,加工中心调用子程序真的是太神奇啦!这就好像是一个魔法口袋,里面装着各种奇妙的能力。

比如遇到一些特殊形状的加工,通过调用合适的子程序就能轻松搞定,这多让人惊叹啊!我的观点结论是:加工中心调用子程序真的是让加工变得更加灵活、高效和有趣,我们要好好利用呀!。

加工中心主程序调用多个子程序的方法

加工中心主程序调用多个子程序的方法

加工中心是一种高精度、高效率的数控机床,其主要作用是对工件进行加工。

在加工中心的操作过程中,通常会涉及到多个子程序的调用。

如何合理地调用多个子程序,可以有效提高加工效率,保证加工质量,本文将从以下几个方面介绍加工中心主程序调用多个子程序的方法:一、了解加工中心主程序的结构加工中心主程序通常采用G代码和M代码进行编程。

G代码用于控制加工中心的运动轨迹和加工轨迹,M代码用于控制加工中心的辅助功能,如刀具切换、冷却液开关等。

在编写加工中心主程序时,需要充分了解加工中心的结构和工作原理,明确每个子程序的功能和调用顺序。

二、合理规划加工过程中的子程序在加工中心的加工过程中,通常会涉及到多个子程序,如加工轨迹生成、刀具切换、冷却液控制等。

在编写加工中心主程序时,需要对加工过程进行合理规划,明确每个子程序的功能和调用顺序,确保加工过程顺利进行。

三、采用模块化编程思想在编写加工中心主程序时,可以采用模块化编程思想,将不同功能的子程序分解成多个模块,每个模块负责完成相应的功能。

通过模块化编程,可以有效提高代码的复用性和可维护性,简化主程序的编写和调试过程。

四、合理使用宏指令和循环结构在加工中心主程序中,可以合理使用宏指令和循环结构,简化代码的编写和提高代码的可读性。

宏指令可以将一系列操作封装成一个整体,通过简单的调用即可完成复杂的操作;循环结构可以简化重复操作的编写,提高代码的复用性和可维护性。

五、加强调试和测试工作在编写加工中心主程序时,需要加强调试和测试工作,确保主程序和子程序之间的调用顺利进行。

可以通过模拟加工、单步调试等方式对主程序和子程序进行验证,及时发现和解决问题,保证加工过程的顺利进行。

通过以上几点方法的合理运用,可以有效提高加工中心主程序调用多个子程序的效率和质量,确保加工过程的顺利进行。

希望本文对加工中心主程序调用多个子程序的方法有所帮助。

一、优化主程序结构加工中心的主程序结构通常需要按照加工过程的逻辑顺序来组织。

子程序的调用和返回指令

子程序的调用和返回指令

子程序的调用和返回指令
子程序是指在一个程序中定义的可以被其他程序调用的一段代码。

通过使用子程序,
程序员可以将重复的代码封装起来,减少代码的复制粘贴,提高代码的复用率和可维护性。

在编程语言中,子程序也被称为函数、过程或方法。

子程序的调用指令和返回指令是用于在程序中调用和退出子程序的指令。

在大多数编
程语言中,这些指令可以通过程序的控制流语句实现,在汇编语言中,这些指令是由特定
的汇编语句生成的机器指令。

子程序的调用指令通常包括以下步骤:
1. 保存当前程序计数器(PC)的值,以便返回时恢复执行点。

3. 将栈指针向下移动一定的偏移量,为子程序分配新的栈空间。

4. 将传入子程序的参数压入栈中,以便被子程序使用。

1. 弹出子程序的返回值,如果有的话。

4. 使用跳转指令将程序计数器更新为保存的返回地址,以便返回到调用者的程序
流。

子程序的调用和返回指令是编程中常用的技巧,可以优化程序的结构和代码重用。


高级编程语言中,编译器通常会自动为程序员处理子程序的调用和返回指令。

然而,在底
层编程和系统级编程中,程序员需要手动处理这些指令,以便更好地控制程序的执行流和
资源管理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

格式二 M98 P××××××××; 例3 M98 P50010; 例4 M98 P510; 地址P后面的八位数字中,前四位表示调用次数, 后四位表示子程序号,采用这种调用格式时,调用 次数前的0可以省略不写,但子程序号前的0不可省 略。如例3表示调用O10子程序5次,而例4则表示调 用O510子程序1次。
三、子程序调用编程实例
例1 试用子程序方式编写如图所示软管接头工件右 端楔槽的加工程序。
1.选择加工用刀具
粗加工右端轮廓时,采用60°V型刀片右偏刀(图 a)进行加工;加工右端内凹接头轮廓时,采用55°菱 形刀片左偏刀(图b)进行加工。此外,当进行批量加 工时,还可采用特制的成形刀具(图c)加工。
(2)自动返回到程序开始段 如果在主程序中执行M99,则程序将返回到主程 序的开始程序段并继续执行主程序。也可以在主程序 中插入M99 Pn;用于返回到指定的程序段。为了能 够执行后面的程序,通常在该指令前加“/”,以便在 不需要返回执行时,跳过该程序段。
(3)强制改变子程序重复执行的次数 用M99 L××指令可强制改变子程序重复执行的 次数,其中L××表示子程序调用的次数。例如,如 果主程序用M98 P××L99,而子程序采用M99 L2返 回,则子程序重复执行的次数为2次。
O2;(SUB) ……; M99;
在有些系统中如出现该种刀尖圆弧半径补偿被分隔
指令的程序,在:
O1;(MAIN) O2;(SUB)
G91……;
G41……;
……;
……;
M98P2;
G40……;
M30;
M99;
子程序的执行过程如下:
O0402; N10 ……; N20 M98 P0100; N30 ……; …… N60 M98 P0200 L2; …… N100 M30;
子程序: O0100;
…… M99; O0200;
…… M99;
3.子程序调用的特殊用法
(1)子程序返回到主程序中的某一程序段 如果在子程序的返回指令中加上Pn指令,则子 程序在返回主程序时,将返回到主程序中有程序段 段号为n的那个程序段,而不直接返回主程序。其程 序格式如下: M99 Pn; M99 P100;(返回到N100程序段)
2.子程序的嵌套
为了进一步简化加工程序,可以允许其子程序再调用 另一个子程序,这一功能称为子程序的嵌套。
当主程序调用子程序时,该子程序被认为是一级子程 序,FANUC 0系统中的子程序允许4级嵌套。
子程序的嵌套 a)主程序 b)一级嵌套 c)二级嵌套 d)三级嵌套 e)四级嵌套
二、子程序的调用
1.子程序的格式
2.子程序在FANUC系统中的调用
常用的子程序调用格式有两种: 格式一 M98 P×××× L××××;
例1 M98 P100 L5; 例2 M 98 P100; 其中,地址符P后面的四位数字为子程序号,地 址L的数字表示重复调用的次数,子程序号及调用次 数前的0可省略不写。如果只调用子程序一次,则地 址L及其后的数字可省略。如上例1表示调用O100子程 序5次,而例2表示调用子程序1次。
主程序用M02或M30表示其结束,而子程序在FANUC 系统中则用M99表示子程序结束,并实现自动返回主程序 功能。
O0401; G01 U-1.0 W0;
…… G28 U0 W0; M99; 对于子程序结束指令M99,不一定要单独书写一行, 如上面子程序中最后两段可写成“G28 U0 W0 M99”。
2.加工程序
子程序调用示例件加工视频 程序
例2 试用子程序方式编写如图所示活塞杆外轮廓的加工程序。 子程序调用示例件加工视频 程序
四、编写子程序时的注意事项
1.在编写子程序的过程中,最好采用增量坐标方 式进行编程,以避免失误。
2.在刀尖圆弧半径补偿模式中的程序不能被分隔 指令。
O1;(MAIN) G91……; G41……; M98P2; G40……; M30;
相关文档
最新文档