⑴ 宏指令和子程序的异同编程时如何选用
宏与子程序都可以用一个名字定义一段程序,以简化源程序的结构和设计。二者的区别:
1、在源程序中,通过书写宏名来引用宏,而子程序是通过CALL指令来调用;
2、宏调用是通过宏扩展来实现的,宏引用多少次,就相应扩展多少次,所以,引用宏不会缩短目标程序;而子程序代码在目标程序中只出现一次,调用子程序是执行同一程序段,因此,目标程序也得到相应的简化
子程序
优点:模块化,节省内存,可被多次调用,编程效率高。
缺点:额外开销(保存返回地址,计算转向地址,传递参数等)大,增加了执行时间。适用于子功能代码较长、调用比较频繁的情况。
宏调用:
优点:参数传送简单,执行效率高。
缺点:不节省空间,适用于子功能代码较短、传参较多的情况。
⑵ 在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现起来()
C
在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现占内存空间大,但速度快。
宏调用是通过宏扩展来实现的,宏引用多少次,就相应扩展多少次,所以,引用宏不会缩短目标程序;而子程序代码在目标程序中只出现一次,调用子程序是执行同一程序段,因此,目标程序也得到相应的简化。
(2)宏指令和子程序哪个速度快扩展阅读:
在用一种不熟悉的宏语言进行宏编程时,可以这样做,首先记录下用户想要宏完成什么,然后打开宏文件并尝试理解命令结构如何工作。
也可以修改命令以调整宏。一些宏语言,比如Great Plains 会计软件的 Dexterity 运行时引擎,不能从其它数据源(如由逗号分隔的文本文件)导入数据。这一限制可以通过用更强大的编程语言,如VBA来创建一个计算机程序在此弱编程语言里生成一个特别的宏来解决。
⑶ 宏程序与子程序调用与区别
1.在汇编后产生的.obj文件中,子程序定义依然存在,而宏定义却不复存在。
2.子程序调用是在执行时通过CALL指令完成的,而宏调用是在汇编时进行宏展开,被相应宏体所取代。
3.将多次调用的一段代码定义为宏指令,与使用子程序相比,其执行速度要快(因为过程需要调用和返回),但目标代码长。
4.宏指令的参数是在汇编时进行形实替换的,而子程序的参数是在执行时通过寄存器或堆栈等方式传递的。
大概想到这些,供参考
⑷ 用vb 和宏操作excel表时,下列哪个方法运算速度更快
第一种快,直接数组赋值要比单个单元格赋值加循环快多了。
⑸ 试分析宏指令和子程序在时间和空间方面的优缺点
宏指令表面看起来与调用子程序有点象,但区别是很大的.
宏指令是用一个“单词”代替一段程序或字符串,编译时编译程序见到这个“单词”就把你定义的这段程序或字符串插进去代替这个“单词”,编译好的机器码再反编译后你将看不到这个宏指令,只能看到插进去的程序或字符串.你在程序中写了多条同样的宏指令编译后可看到同样多条插入的程序段或字符串,编译后的机器码会变长.
调用子程序编译后这里还是这条调用指令.写了多次调用子程序编译后也只有一段子程序,编译后的机器码不会变长.
所以一般在程序中多次使用一个常数,这个常数如果需要修改(在编程时,不是运行时)而且多处都做同样的修改.用宏指令就比较方便,修改时只要在头上宏指令定义改一处就行了.
比如说你要编一个上课打铃程序,上课时间长度和休息时间长度在开头定义:
SKSJ
EQU
45
;上课时间
XXSJ
EQU
15
;休息时间.
在程序中要用到上课和休息时间处都用这两个"单词"代替,如果头头要求把上课时间改为40,休息时间改为10,只要这两句改成:
SKSJ
EQU
40
;上课时间
XXSJ
EQU
10
;休息时间.
就行了,不需要到程序里一个一个找出来修改,一个一个找出来修改还容易出错.这样还比较直观,程序中见到SKSJ就知道是上课时间,不容易与其他同样用到45这个数的地方搞混.
当然也可以定义成一句或几句指令,这样可以缩短汇编语言的长度(不是机器码的长度,宏指令不会缩短编译出来的机器码码的长度).定义成一句或几句指令俺没用过,只见到别人用过.
如果多次要用到同一段程序,一般使用子程序,这段程序只要写一次就行了,要用时用子程序调用.
但子程序调用因为多了转移和返回,所以运行时间要稍长些.宏指令没有这个问题,但编译好的机器码要长些.
⑹ 子程序与宏指令在程序的使用中有何共性
宏与子程序都可以用一个名字定义一段程序,以简化源程序的结构和设计。二者的区别:
1、在源程序中,通过书写宏名来引用宏,而子程序是通过CALL指令来调用;
2、宏调用是通过宏扩展来实现的,宏引用多少次,就相应扩展多少次,所以,引用宏不会缩短目标程序;而子程序代码在目标程序中只出现一次,调用子程序是执行同一程序段,因此,目标程序也得到相应的简化
子程序
优点:模块化,节省内存,可被多次调用,编程效率高。
缺点:额外开销(保存返回地址,计算转向地址,传递参数等)大,增加了执行时间。适用于子功能代码较长、调用比较频繁的情况。
宏调用:
优点:参数传送简单,执行效率高。
缺点:不节省空间,适用于子功能代码较短、传参较多的情况
⑺ 微机原理宏操作与子程序,分别在什么情况下使用好
明白宏和子程序的区别即可
宏和子程序都是为了简化源程序的编写,提高程序的可维护性,但是它们二者之间存在着以下本质的区别:
在源程序中,通过书写宏名来引用宏,而子程序是通过CALL指令来调用;
汇编程序对宏通过宏扩展来加入其定义体,宏引用多少次,就相应扩展多少次,所以,引用宏不会缩短目标程序;而子程序代码在目标程序中只出现一次,调用子程序是执行同一程序段,因此,目标程序也得到相应的简化;
宏引用时,参数是通过“实参”替换“形参”的方式来实现传递的,参数形式灵活多样,而子程序调用时,参数是通过寄存器、堆栈或约定存储单元进行传递的;
宏引用语句扩展后,目标程序中就不再有宏引用语句,运行时,不会有额外的时间开销,而子程序的调用在目标程序中仍存在,子程序的调用和返回均需要时间。
总之,当程序片段不长,速度是关键因素时,可采用宏来简化源程序,但当程序片段较长,存储空间是关键因素时,可采用子程序的方法来简化源程序和目标程序。
⑻ 你好,看了你的回答,想问你下,什么是宏程序和子程序,两个有什么区别啊
其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点,可是应用了宏后,我们把椭圆公式输入到系统中然后我们给出Z坐标并且每次加10um那么宏就会自动算出X坐标并且进行切削, 实际上宏在程序中主要起到的是运算作用..宏一般分为A类宏和B类宏.A类宏是以G65 Hxx P#xx Q#xx R#xx的格式输入的,而B类宏程序则是以直接的公式和语言输入的和C语言很相似在0i系统中应用比较广.
子程序的应用
1)零件上若干处具有相同的轮廓形状,在这种情况下,只要编写一个加工该轮廓形状的子程序,然后用主程序多次调用该子程序的方法完成对工件的加工。
2)加工中反复出现具有相同轨迹的走刀路线,如果相同轨迹的走刀路线出现在某个加工区域或在这个区域的各个层面上,采用子程序编写加工程序比较方便,在程序中常用增量值确定切入深度。
3)在加工较复杂的零件时,往往包含许多独立的工序,有时工序之间需要适当的调整,为了优化加工程序,把每一个独立的工序编成一个子程序,这样形成了模块式的程序结构,便于对加工顺序的调整,主程序中只有换刀和调用子程序等指令。
编辑本段调用子程序M98指令指令格式:M98P__××××
指令功能:调用子程序
指令说明:P__为要调用的子程序号。××××为重复调用子程序的次数,若只调用一次子程序可省略不写,系统允许重复调用次数为1~9999次。
⑼ 宏指令和子程序的异同编程时如何选用(微机汇编)
宏程序是用逻辑语言!用某种指令表示出来,
子程序就是一个程序多次反复利用,比如打孔,然后攻丝,那么就可以把它设为子程序,然后在主程序中调用就可以了,简化程序
⑽ 汇编里面的宏和子程序有什么区别
子程序是被调用的,某子程序只有一份。宏是在编译时反复被复制的。