汇编语言宏定义的调用 宏的问题

宏与子程序的区别
查看: 3425|
摘要: 宏和子程序都是为了简化源程序的编写,提高程序的可维护性,但是它们二者之间存在着以下本质的区别:
1 、在源程序中,通过书写宏名来引用宏,而子程序是通过 CALL 指令来调用;
2 、汇编程序对宏通过宏扩 ...
宏和子程序都是为了简化源程序的编写,提高程序的可维护性,但是它们二者之间存在着以下本质的区别:
1 、在源程序中,通过书写宏名来引用宏,而子程序是通过 CALL 指令来调用;
2 、汇编程序对宏通过宏扩展来加入其定义体,宏引用多少次,就相应扩展多少次,所以,引用宏不会缩短目标程序;而子程序代码在目标程序中只出现一次,调用子程序是执行同一程序段,因此,目标程序也得到相应的简化;
3 、宏引用时,参数是通过“实参”替换“形参”的方式来实现传递的,参数形式灵活多样,而子程序调用时,参数是通过寄存器、堆栈或约定存储单元进行传递的;
4 、宏引用语句扩展后,目标程序中就不再有宏引用语句,运行时,不会有额外的时间开销,而子程序的调用在目标程序中仍存在,子程序的调用和返回均需要时间。
& & 总之,当程序片段不长,速度是关键因素时,可采用宏来简化源程序,但当程序片段较长,存储空间是关键因素时,可采用子程序的方法来简化源程序和目标程序。 处理的时间不同.宏调用是在源程序被汇编程序处理的;而子程序调用是在程序执行期间由 CP 直接执行的.& & 处理的方式不同.两者都必须先定义后使用,但宏调用是用宏体替换宏调用伪指令,实参代替形参,源程序被翻译成目标代码后宏定义随着消失;而子程序则没有这样的替换操作,是以 CALL 指令将控制权由调用者转给子程序并执行.参数处理不同.宏调用是以实参代替形参,参数的形式不受限制,可以是任何合法的字符;子程序的参数需要寄存器或存储单元进行传递,而且需要附加的指令实现参数传递.&& &执行速度不同.子程序调用时需要执行 CALL 指令和 RET 指令,还要执行实现参数传递的附加指令,因而会比宏展开后的代码多而执行速度稍慢.&&& 占用的存储器空间大小不同.宏指令在每次调用时都要展开,把宏体中的程序段复制一遍,因而用宏指令编写的程序在目标代码中会重复出现相同或相似的程序段,占用内存空间较大;而子程序是由 CALL 指令调用的,无论调多少次,子程序的目标代码只在程序中出现一次,目标代码相对较短.&&& 宏与子程序具有各自的特点,程序员应该根据具体问题选择使用那种方法通常,当程序段较短或要求较快执行时,应选用宏;当程序段较长或为减小目标代码时,要选用子程序比较结论
上一篇:下一篇:
看过《宏与子程序的区别》的人还看了以下文章:
Powered by &
这里是—这里可以学习 —这里是。
栏目导航:8086宏汇编语言中 宏和过程的区别是 宏可以简化源程序书写 但不能精简_百度知道
8086宏汇编语言中 宏和过程的区别是 宏可以简化源程序书写 但不能精简
8086宏汇编语言中 宏和过程的区别是 宏可以简化源程序书写 但不能精简目标代码 这句话对吗?
我有更好的答案
对,没错,宏在汇编时还是要宏展开的
采纳率:75%
宏做的是简单的字符串替换,在编译之前用宏体替换宏名。内联函数首先是函数,会发生参数的传递,在编译之后执行,其次,作为内联函数就是将很简单的函数&内嵌&到调用他的程序代码中,以减少一定的时空开销。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。&>&第5章+第1节+ARM汇编语言的伪操作、宏指令与伪指令
第5章+第1节+ARM汇编语言的伪操作、宏指令与伪指令
上传大小:306KB
第5章+第1节+ARM汇编语言的伪操作、宏指令与伪指令.ppt
综合评分:0
下载个数:
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有0条
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
第5章+第1节+ARM汇编语言的伪操作、宏指令与伪指令
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
kiss_me_baby
举报的资源分:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*详细原因:
第5章+第1节+ARM汇编语言的伪操作、宏指令与伪指令宏汇编语言程序设计
在电子工程世界为您找到如下关于“宏汇编语言程序设计”的新闻
宏汇编语言程序设计资料下载
宏汇编语言程序设计介绍了IBM PC微型计算机,基本汇编语言,顺序、分支与循环程序设计,子程序设计,数值运算程序设计,非数值运算程序设计等内容。自学与提高的捷径 高等院校计算机专业系列教材全文目录目录第一章 基础知识1.1汇编语言程序设计的一般概念1.2计算机中数据信息的表示1.2.1进位计数制及其相互转换1.2.2带符号数的表示1.2.3字符的表示1.3基本逻辑运算习题第二章 IBMPC...
宏汇编语言程序设计相关帖子
宏汇编语言程序设计视频
你可能感兴趣的标签
热门资源推荐单片机汇编语言 宏定义 问题_百度知道
单片机汇编语言 宏定义 问题
有以下程序
ds18b20 equ p1.1
hbit equ 03h
lbit equ 04h
前三行的宏定义后的地址我希望能变动,如DS18B20端口接在P1.1上,数据高低8位分别存储在03h和04h,我希望宏定义的P1.1可以改变,存储单元也能改变,因为我单片机P1.2口也接了一...
如果按照ds18b20 equ p1.1hbit equ 03hlbit equ 04hds18b20_2 equ p1.2hbit_2 equ 05hlbit_2 equ 06h 我的程序里面只有一个DS18B20,程序很长,我要求的就是2个DS18B20共享一个程序,只要把程序里的DS18B20标号所对应的端口变一下就行了,不能写成ds18b20_2,程序里写的是DS18B20
我有更好的答案
如果,两个18B20共存,可以:ds18b20_2 equ p1.2hbit_2 equ 05hlbit_2 equ 06h即可。
采纳率:64%
这样改不就可以了。ds18b20 equ p1.1hbit equ 03hlbit equ 04hds18b20_2 equ p1.2hbit_2 equ 05hlbit_2 equ 06h
为您推荐:
其他类似问题
您可能关注的内容
单片机汇编语言的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 汇编语言宏定义 的文章

 

随机推荐