打印

高人指点 宏程序~~

[复制链接]
2016|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
szshawn2010|  楼主 | 2010-1-10 22:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
什么叫宏程序?
举例 宏程序的应用(最好再说明一下,此时应用子程序为什么不能实现).
第一个解答详细的,鄙人绝对给20分.如果第二个人认为第一个人解答不够详细不够通俗,并且给出了解答,鄙人将对第二人赋20分.不过还要感谢每一个解答的网友!

相关帖子

沙发
szshawn2010|  楼主 | 2010-1-10 22:28 | 只看该作者
如果需要用到程序段解释时,请用 汇编 不要用C

或者用程序思路 解释

使用特权

评论回复
板凳
原野之狼| | 2010-1-10 23:07 | 只看该作者
不懂啥叫宏程序 纯飘过~

使用特权

评论回复
地板
strang| | 2010-1-10 23:08 | 只看该作者
是问问题的还是做交易的?

使用特权

评论回复
5
strang| | 2010-1-10 23:08 | 只看该作者
是问问题的还是做交易的?

使用特权

评论回复
6
szshawn2010|  楼主 | 2010-1-10 23:47 | 只看该作者
什么叫问问题的,什么又加做交易的?

使用特权

评论回复
7
lxyppc| | 2010-1-11 09:30 | 只看该作者
楼主说的是汇编里的宏还是说C语言里的宏
宏没啥特别的,只是为了让程序员们少敲重复的代码

使用特权

评论回复
8
冷漠| | 2010-1-11 10:43 | 只看该作者
本帖最后由 冷漠 于 2010-1-11 10:47 编辑

  “宏的用途在于自动化频繁使用的序列或者是获得一种更强大的抽象能力--但这常常是一回事。”

    因此,宏指令与简单宏,宏程序与参数宏概念一样。叫法不同罢了。

举个书上参数宏或者叫宏程序的例子:
参数宏的使用:
#define  SQU_CIR(r)   3.14*r*r

// int squ1;
squ1=SQU_CIR(5);

预处理器将其替换为:(预处理器在编译器之前扫描处理源程序,不用说了吧。)

squ1=3.14*5*5;  

宏程序与子程序的不同:
1、参数宏是在预处理阶段由预处理器扫描处理的,在编译器执行之前就替换插入源程序中间的。

2、而子程序是在编译阶段由编译器扫描执行的“转子调用”:跳转——返回功能,——CALL-RET.

“许多库函数都是用参数宏编写的。与一般的函数相比,参数宏的形参表中没有参数的类型说明符;参数宏在时空上的开销比函数小。”

使用特权

评论回复
9
ningling_21| | 2010-1-11 11:03 | 只看该作者
宏--简单的说就是替换,在编译时可以把A(段代码)换成B(段代码)
作用:偷懒

使用特权

评论回复
10
不亦心| | 2010-1-11 11:51 | 只看该作者
宏--简单的说就是替换,在编译时可以把A(段代码)换成B(段代码)
作用:偷懒
ningling_21 发表于 2010-1-11 11:03

我替LS补充点汇编例子
以前练习的一个51单片机例子:
程序开始先宏定义
格式:宏名称  MACRO  变量名
         ENDM
;//////宏定义.///////////////////////////////////
LED MACRO BH,P_0,P_1,P_2,P_3
BH:          MOV A,#00H
MOVC       A,@A+DPTR
MOV        P_0,A
MOV        A,R0
RL         A
MOV        R0,A
MOV        P_2,R0     
LCALL      DELAY
MOV        P_0,#00H
MOV        P_2,#0FFH
MOV        A,#00H
INC        DPTR
MOVC       A,@A+DPTR
MOV        P_1,A
MOV        P_3,R0     
LCALL      DELAY
MOV        P_1,#00H
MOV        P_3,#0FFH
INC        DPTR
DJNZ       R1,BH
ENDM

在程序中如果用到和上面的结构体一样的,直接引用宏就行了
引用方法:
宏名 替换变量名
eg:
LED LOOP,P0,P1,P2,P3    ;宏引用.

使用特权

评论回复
11
szshawn2010|  楼主 | 2010-1-11 13:47 | 只看该作者
感谢二位的解答 .

你们二位的解答让我有些明白了.可能还需要时间来进一步体会其妙处.

各加十分,再次感谢

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
冷漠 + 1
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

92

主题

636

帖子

1

粉丝