子程序的调用
子程序调用指令【精选】
子程序存储在存储器中,可供一个或多个调用程序(主程序)反复调用。
主程序调用子程序时使用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. 使用跳转指令将程序计数器更新为保存的返回地址,以便返回到调用者的程序
流。
子程序的调用和返回指令是编程中常用的技巧,可以优化程序的结构和代码重用。
在
高级编程语言中,编译器通常会自动为程序员处理子程序的调用和返回指令。
然而,在底
层编程和系统级编程中,程序员需要手动处理这些指令,以便更好地控制程序的执行流和
资源管理。
visualone编程子程序调用语句
visualone编程子程序调用语句篇一:VisualOne 是一款功能强大的数据库管理工具,可用于创建和管理企业级数据库应用程序。
在 VisualOne 中,子程序是一种特殊的数据库表,可以在表中创建多个关联,以便将数据从主表复制到子表中。
要创建子程序调用语句,可以按照以下步骤进行操作:1. 打开 VisualOne 应用程序,并登录到数据库。
2. 在 VisualOne 中选择要创建子程序的数据库表。
3. 在表的“数据”选项卡上,选择“子程序”选项。
4. 在“子程序”选项卡上,选择要创建的子程序类型。
5. 在“子程序定义”文本框中,输入子程序的代码。
6. 选择要使用的子程序模板,并将其复制到“子程序定义”文本框中。
7. 在“数据”选项卡上,选择“子程序”选项卡上的“关联”选项。
8. 在“关联”选项卡上,选择要关联的子程序表。
9. 在“关联”选项卡上,选择“新建”选项,并输入子程序的调用语句。
10. 选择要使用的语法,并将其复制到“关联”选项卡上的“语法”文本框中。
11. 选择“保存”选项,并保存更改。
拓展:子程序调用语句是连接主表和子表的重要纽带。
通过使用子程序调用语句,可以将数据从主表复制到子表中。
以下是一个简单的示例,演示了如何将数据从主表复制到子表中:```INSERT INTO 孙子表 (孙子ID, 孙子姓名, 孙子年龄)VALUES (1, "孙子", 18);INSERT INTO 孙女表 (孙女ID, 孙女姓名, 孙女年龄)VALUES (2, "孙女", 16);INSERT INTO 爷爷表 (爷爷ID, 爷爷姓名, 爷爷年龄)VALUES (1, "爷爷", 65);SELECT * FROM 孙子表;SELECT * FROM 孙女表;SELECT * FROM 爷爷表;```以上示例中,子程序定义了三个子表,分别是孙子表、孙女表和爷爷表。
子程序调用
一、格式: 1、调用格式: M98 P○○○××××
其中: ○○○—可能为:M98 P —L—;
P —调用的子程序号; L—重复调用的子程序的次数。 2、子程序格式: O(子程序号)
、、、、、、、 M99 P—;(子程序返回) 其中:P —返回的行号标记,若省略则直接返回
3
例题: 如图不等距槽,要求应用子程序编写,已知毛坯直径 为Ф32mm 长度不限,一号刀为外圆刀,三号刀为切断刀, 宽度为2mm,
.
4
分析加工工艺
1、找正,伸出约80mm夹持 2、用第一把刀(外圆刀)车削端面 3、车外圆 Ф30Х75 4、回安全点换刀 5、车右边第一个槽 6、车右边第二个槽 7、循环车第3、4 及5、6个槽 8、切断
车端面 车Ф30×75
G04 U1.0; G00 X32.0; W-8.0;
N2 T0202;
G01 X20.0 F0.15;
G0 X32.0 ; Z0.0; M98 P30025 ; G0 W-12.0 S1500;
调O25子程序
G04 U1.0; G00 X32.0; M99;
G01 X15.0 F0.12;
注:在程序加工中也可以直接用M99 N3 方式直接跳转(跳到3号刀具),
在返修的过程中常用。
.
2
主程序
O10
M18 N1 G0 T011; X50.0 M03 S1000 Z0.5 M28 S2000; G99 01X-1.0 F0.15 G0 X100.0 Z100.0 M98 P20015 ;
.
5
主程序:
备注
子程序
O20
M18; N1 G0 T0101; G97 X35.0 M03 S1000; Z0.5 M28 S2000;
西门子PLC调用子程序的方法
调用西门子plc的子例行程序(CALL)指令将控制转换给子例行程序(SBR_n)。
您可以使用带参数或不带参数的“调用子例行程序”指令。
在子例行程序完成执行后,控制返回至“调用子例行程序”之后的指令。
每个子例行程序调用的输入/输出参数最大限制为16。
如果您尝试下载的西门子plc程序超过此一限制,会返回一则错误讯息。
如果您为子例行程序指定一个符号名,例如USR_NAME,该符号名会出现在指令树的“子例行程序”文件夹中。
1. 参数值指定给局部内存的顺序由CALL 指定,参数从L.0开始。
2.一至八个连续位参数值被指定给从Lx.0开始持续至Lx.7的单字节。
3.字节、字和双字数值被指定给局部内存,位于字节边界(LBx、LWx或LDx)位置。
在带参数的“调用子例行程序”指令中,表中定义的变量完全匹配。
参数顺序必须以输入参数开始,其次是输入/输出参数,然后是输出参数。
为带安数 =0调用设置ENO的错误条件: 0008 超出最大子例行程序嵌套。
注释:位于指令树中的子例行程序名称的工具提示显示每个参数的名称。
艾驰商城是国内最专业的MRO工业品网购平台,正品现货、优势价格、迅捷配送,是一站式采购的工业品商城!具有10年工业用品电子商务领域研究,以强大的信息通道建设的优势,以及依托线下贸易交易市场在工业用品行业上游供应链的整合能力,为广大的用户提供了传感器、图尔克传感器、变频器、断路器、继电器、PLC、工控机、仪器仪表、气缸、五金工具、伺服电机、劳保用品等一系列自动化的工控产品。
如需进一步了解相关PLC产品的选型,报价,采购,参数,图片,批发等信息,请关注艾驰商城。
/。
子程序的调用
江苏省吴中中等专业学校 林丽
绝对坐标与增量坐标:
绝对坐标:所有坐标系的坐标值均从某 一固定坐标原点计量的坐标系。 增量坐标:运动轨迹的终点坐标是相对于 起点计量的坐标系。(举例说明) 绝对坐标和增量坐标可以在同一程序中 混合使用
子程序的定义
一个零件中有几处形状相同,或刀具运 动轨迹相同,为了缩短程序,可把重复 的程序段单独抽出,编成“子程序”, 存储在CNC系统内,反复调用。调用子 程序的程序称“主程序”。
子程序的嵌套
小结
1.编程时增量坐标和绝对坐标可以混合 使用。 2.子程序调用时要注意刀尖的位置。 3.子程序调用中有主程序和子程序,要 分别作为两个程序名存储在CNC系统内。 4.子程序可以嵌套。
思考题
1.如果遇上不等距槽怎么处理? 2.子程序除了可以在切槽的时候调用, 还能用在哪些地方?外圆的毛坯加工可 以吗?
子程序的格式
主程序 O7777; …… M98 P0777; …… M30; % 子程序 O0777; …… …… M99; %
子程序调用的注意点
1.一定要明确刀尖的位置。 2.前一个槽的末点下一个槽的起点。 3.子程序调用中有主程序和子程序,要 分别作为两个程序名存储在CNC系统内。
汇编语言第5章王爽版(子程序调用指令)
例5-1:分别用三种参数传递方法编写求1+2的和的程序。要求将结果送到内存单元,并显示。
DATA SEGMENT SUM DB 0 DATA ENDS STACK SEGMENT DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX MOV AL, 1 MOV BL, 2 CALL subprog mov ah,4cH int 21h CODE ENDS END START
5.2 子程序的定义、调用和返回(续)
子程序返回指令(RET)
RET [n] 功能:弹出CALL指令压入堆栈的返回地址 段内返回——偏移地址IP出栈 IP←SS:[SP], SP+2 段间返回——偏移地址IP和段地址CS出栈 IP←SS:[SP],SP←SP+2 CS←SS:[SP],SP←SP+2
子程序的概念
子程序的现场保护与参数传递**
子程序的嵌套与递归调用
子程序的定义、调用和返回 **
子程序设计 *
宏汇编程序设计
教学基本内容
第5章 结构化程序设计
子程序:在程序设计中,我们会发现一些多次无规律重复的程序段或语句序列。解决此类问题一个行之有效的方法就是将它们设计成可供反复调用的独立的子程序结构,以便在需要时调用。在汇编语言中,子程序又称过程。 过程(子程序):是指功能相对独立的一段程序。 主程序和子程序间的关系:调用子程序的程序称为主调程序或主程序,被调用的程序称为子程序。
Spr PROC PUSH BP MOV BP, SP MOV AX, [BP+6] MOV BX, [BP+4] ADD AL, BL OR AL, 30H MOV DL,AL MOV AH,2 INT 21H MOV SUM, AL POP BP RET Spr ENDP
子程序的调用
主程序流程图
开始
调用子程序DECBIN,从键盘 接受一个十进制并转化为对应的二进制 调用子程序CRLF实现回车换行 调用子程序BINHEX,把二进制数转换成 16进制并显示 调用子程序CRLF实现回车换行 Y 是否退出 N 接收下一次键盘输入 END
decbin PROC NEAR push ax push cx mov bx,0 mov si,0 Newchar: mov ah,1 int 21h cmp al,’*’ je ext1 sub al,30h jl ext2 cmp al,9 jg ext2 cbw xchg ax,bx mov cx,10 mul cx xchg ax,bx add ax,bx jmp newchar
子程序的定义
3.注意问题
1)过程体内必须有一条RET指令被执行 proc1 proc mov ax,0 proc1 endp proc2 proc mov bx,-1 ret proc endp
子程序的定义
2)调用程序和过程在同一程序段时,属性选择NEAR,当调 用程序和过程不在同一程序段时,应选择FAR 3)在调用时,NEAR 和FAR 可以强制改变 CALL FAR PTR NEARPROC CALL NEAR PTR FARPROC
参数的传递
1 参数传递: 当子程序被调用时,一般需要向子程序传递若干参数, 由子程序来对这些参数完成特定功能处理;当子程序 处理后,需要向调用它的主程序传递结果。这种主程 序和子程序之间的信息的传递称为参数的传递。
参数的传递
2 参数传递方法: 寄存器传递参数 存储器传递参数 地址表传递变量地址 堆栈传递参数
子过程的调用与返回指令
4.子程序调用方式举例
分析下面程序段,说明各种调用子程序的方法和寻址方式: data segment nproc dw nearp fproc dd farp data ends code1 segment assume cs:code1,cs:data Main proc far
新代调用子程序方法
新代调用子程序方法
宝子,你想知道新代系统里怎么调用子程序呀?这就像一场有趣的魔法操作呢!
在新代系统里,调用子程序其实没有那么难。
一般来说啊,你得先把你的子程序写好哦。
就像是准备好一个小锦囊妙计 。
这个子程序呢,要有它自己的功能,比如说可能是专门用来控制某个轴的精确运动,或者是执行某个特定的加工工序。
当你要调用这个子程序的时候呢,你得在主程序里给系统一个信号,就像是在喊:“小子程序,该你上场啦!”这个信号的设置呀,要按照新代系统规定的格式来哦。
比如说可能是一个特定的代码加上子程序的编号之类的。
我给你举个小例子哈,就好像你有一个做蛋糕的大程序(主程序),然后你有个专门打奶油的小程序(子程序)。
当你在做蛋糕做到需要打奶油的时候,你就在做蛋糕的步骤里(主程序里)写个指令,告诉系统:“我现在要打奶油啦,快去找那个打奶油的小程序来干活。
”
不过呢,这里面也有一些小细节要注意哦。
比如说你得确保你的子程序和主程序之间的数据传递是正确的。
要是数据传错了,就像是你本来要打奶油,结果却把面粉加进去了,那可就乱套啦 。
还有呀,在调试的时候,要仔细看看调用子程序的时候有没有什么奇怪的报错。
如果报错了,不要慌,就像你玩游戏遇到小怪兽一样,把它打败就好啦。
仔细检查一下是不是子程序的名字写错了,或者是调用的参数设置得不合理。
新代调用子程序就像是一场精心编排的小舞蹈 ,每个步骤都要准确无误。
你要是多练习几次,就会觉得超级简单,而且会发现这样可以让你的编程变得更加高效和有条理呢。
宝子,加油呀,相信你很快就能掌握这个小技能啦 。
子程序调用与系统功能调用
1.2 系统功能调用的方法
子程序使用CALL指令完成子程序调用,而系统功能调用采用软 中断的方法。例:MOV DL,’A’
MOV AH,02H
;准备入口参数
INT 21H
<>
1.3 编写通用子程序的使用说明
为了保证子程序能够被不同的用户使用,应当注明以下内容: 子程序名:便于用户调用。 子程序功能:实现的操作是什么。 入口参数和传送方式:告知用户准备哪些数据,怎样传送到子 程序。 出口参数和传送方式:告知用户怎样获得结果。 占用资源:以防与用户的资源产生冲突。 若又调用其它子程序,应告知用户准备。
汇编语言程序设计
子程序调用与系统功能调用
1.1 子程序与系统功能调用
子程序相当于高级语言中的过程或函数,子程序设计是结 构化程序设计的有力手段。利用子程序,一个软件可以由多个 程序员开发、独立编写相应的子程序,提高效率;也可将常用 的程序段编成子程序库,便于经常调用。
PC系统的设计者对常用的硬件操作如:I/O设备管理、文件 管理、内存管理等功能编写了相应的子程序供用户随时调用, 称之为系统调用,而将这些子程序汇合构成操作系统。
典型应用:编写一段使用该子程序的小程序,方便用户参考。
<>
汇编语言程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;