- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)