第7章高级汇编语言技术-1祥解.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章高级汇编语言技术-1祥解.ppt

第七章 高级汇编语言技术 一.宏汇编 宏指令的作用: ▲简化程序设计、减少重复编程的工作量 ▲减少由于重复编程带来的错误 ▲增强程序的可读性 ▲宏指令与子程序的异同点: 不同点: 1)宏指令的展开由汇编程序完成,直接将宏展开嵌在程序中。而子程序的调用要用CALL指令进入子程序,并用RET返回,并不可避免地要进行寄存器的保护和恢复,故子程序比宏指令运行速度低; 2)用宏指令编写的源程序经汇编后,目标程序占用的内存空间要比子程序大。 (如果内存大,要求程序运行速度快,用宏指令,反之用子程序) 相同点: 都用来处理编程过程中需要多次重复使用的程序。 1、 宏定义、宏调用、宏展开 1)宏---源程序中一段独立功能的程序代码 宏定义格式: 宏名 MACRO [哑参数1][,哑参数2]…. …… ENDM 注:MARCO…..ENDM必须成对出现;哑参数也称形式参数;多个参数之间用“,”分隔开,宏名的第一个符号必须是字母。 2)宏调用伪指令 经宏定义后的宏指令就可以在源程序中调用.这种对宏指令的调用称为宏调用。实元表(actual_parameter_list)中的每一项为实元, 相互之间用逗号隔开 调用格式: 宏名 [参数1][,参数2]…….. 3)宏扩展 汇编中遇到宏指令的名字,自动用宏体代替宏指令。 实际参数的个数多于形式参数的个数,则多余参数将被忽略;形式参数的个数多于实际参数的个数,则多余参数将用‘0’代替。 例:(P247) 2.在宏中使用参数 宏定义中的形式参数可以是操作码(指令)、操作对象的全部或一部分、用户定义的变量或标号、寄存器号、数值、字符串等。如无形式参数,则把宏体全部展开。 (1)宏定义可以无哑元 例:??? SAVEREG??? MACRO ?????????????? PUSH ??? AX ?????????????? PUSH ??? BX ?????????????? PUSH ??? CX ?????????????? PUSH ??? DX ?????????????? PUSH ??? SI ?????????????? PUSH ??? DI ?????????????? ENDM 宏调用: ?????????????? SAVEREG (2)变元可以是操作码 例:??? FOO??? MACRO??? P1,P2,P3 ?????????? MOV ????? AX,P1 ?????????? P2 ?????? P3 ?????????? ENDM 宏调用: ?????????? FOO ????? WORD_VAR,INC,AX 宏展开: ?? +?????? MOV ????? AX,WORD_VAR ?? +?????? INC????? AX (3)哑元可以是操作码的一部分,但在宏定义体中必须用作为分隔符;是一个操作符,它在宏定义体中可以作为哑元的前缀,展开时可以把前后个符号合并而形成一个符号,这个符号可以是操作码,操作数或是一个字符串 例: ?? LEAP??? MACRO ??? COND,LAB ??????????? JCOND ?? LAB ??????????? ENDM 宏调用: ??????????? ... ??????????? LEAP ???? Z,THERE ??????????? ... ??????????? LEAP ???? NZ,HERE ??????????? ... 宏展开: ??????????? ... ?? +??????? JZ ?????? THERE ??????????? ... ?? +??????? JNZ ????? HERE ??????????? ... 例: 宏定义: ??? PO??? MACRO??? P1 ????????? JMP ????? TAP1 ????????? ENDM 宏调用: ????????? FO ?????? WORD_VAR 宏展开: ?? +????? JMP??? TAWORD_VAR (4)%:把跟在%后的表达式的值转换成当前基数下的数,在汇编期间用该数取代哑元。 格式: % 表达式 汇编程序把跟在%之后的表达式的值转换成当 前基数下的数,在展开期间,用这个数来取代哑元. (例题:P251) 5)实元是ASCII串的情况 宏定义: ?? MSGGEN??? MACRO??? LAB,NUM,XYZ ???????????? LABNUM ? DB??? HELLO MR.XYZ ???????????? ENDM 宏调用: ?????????

文档评论(0)

love + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档