• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >汇编语言 > 宏与子程序的区别

宏与子程序的区别

作者:汇编爱好者 字体:[增加 减小] 来源:互联网 时间:2017-06-17

汇编爱好者通过本文主要向大家介绍了宏指令与子程序的区别,a与b类宏程序的区别,宏程序,宏程序编程入门,宏程序编程实例等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
</div> 宏和子程序都是为了简化源程序的编写,提高程序的可维护性,但是它们二者之间存在着以下本质的区别:

1 、在源程序中,通过书写宏名来引用宏,而子程序是通过 CALL 指令来调用;

2 、汇编程序对宏通过宏扩展来加入其定义体,宏引用多少次,就相应扩展多少次,所以,引用宏不会缩短目标程序;而子程序代码在目标程序中只出现一次,调用子程序是执行同一程序段,因此,目标程序也得到相应的简化;

3 、宏引用时,参数是通过“实参”替换“形参”的方式来实现传递的,参数形式灵活多样,而子程序调用时,参数是通过寄存器、堆栈或约定存储单元进行传递的;

4 、宏引用语句扩展后,目标程序中就不再有宏引用语句,运行时,不会有额外的时间开销,而子程序的调用在目标程序中仍存在,子程序的调用和返回均需要时间。

    总之,当程序片段不长,速度是关键因素时,可采用宏来简化源程序,但当程序片段较长,存储空间是关键因素时,可采用子程序的方法来简化源程序和目标程序。 处理的时间不同.宏调用是在源程序被汇编程序处理的;而子程序调用是在程序执行期间由 CP 直接执行的.
    处理的方式不同.两者都必须先定义后使用,但宏调用是用宏体替换宏调用伪指令,实参代替形参,源程序被翻译成目标代码后宏定义随着消失;而子程序则没有这样的替换操作,是以 CALL 指令将控制权由调用者转给子程序并执行.
参数处理不同.宏调用是以实参代替形参,参数的形式不受限制,可以是任何合法的字符;子程序的参数需要寄存器或存储单元进行传递,而且需要附加的指令实现参数传递.
    执行速度不同.子程序调用时需要执行 CALL 指令和 RET 指令,还要执行实现参数传递的附加指令,因而会比宏展开后的代码多而执行速度稍慢.
    占用的存储器空间大小不同.宏指令在每次调用时都要展开,把宏体中的程序段复制一遍,因而用宏指令编写的程序在目标代码中会重复出现相同或相似的程序段,占用内存空间较大;而子程序是由 CALL 指令调用的,无论调多少次,子程序的目标代码只在程序中出现一次,目标代码相对较短.
    宏与子程序具有各自的特点,程序员应该根据具体问题选择使用那种方法通常,当程序段较短或要求较快执行时,应选用宏;当程序段较长或为减小目标代码时,要选用子程序比较结论

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 宏与子程序的区别
  • 子程序调用指令

相关文章

  • 2017-06-28汇编教程之窗口子类化
  • 2017-06-28列表视图控件介绍
  • 2017-06-1780386/80286处理的数据类型
  • 2017-06-28汇编源码系列之alarm
  • 2017-06-17文本操作
  • 2017-06-28用汇编语言编写消息框程序
  • 2017-06-17程序开始和结束伪操作
  • 2017-06-28汇编教程之通用控件
  • 2017-06-28Mixer Volume Ctrler V1.0
  • 2017-06-28如何创建汇编工作环境

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 什么是进程
    • 汇编语言的艺术-准备工作(四)
    • 汇编源码系列之ctrladel
    • 汇编教程之“绘制”文本串
    • 汇编语言程序设计(一)
    • 汇编实模式与保护模式切换实例
    • 外部设备
    • 汇编教程:连接数据源
    • 8086指令系统
    • 汇编源码系列之cdcheck

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有