汇编语言程序设计AssemblyLanguageProgramming高级编程专题(2,3)宏多模块程序设计宏指令宏:一段有独立功能的代码或者动作的组合宏指令:用户自定义的指令一次书写,多次调用汇编程序汇编到该宏指令时,进行宏展开C宏函数#defineMAX(a,b,c){c=(a>b)?a:b;}宏定义MacroNameMACRO[形参表]……(宏定义体)……ENDM参数可以是任意内容形式参数表:可以有多个,用“,”分开同样注意要保护和恢复现场参数检查宏调用MacronName[实参表]实参表中的实参与形参表中的形参在位置上一一对应若实参数>形参数,则多余的实参无效;若实参数<形参数,则多余的形参作“空(NUL)”处理;对宏指令必须先定义后调用。宏定义通常放在源程序的开头。宏展开源程序被汇编时,汇编程序把宏调用展开,也就是把宏定义体复制到调用宏指令的位置上,同时用实参取代形参展开后必须语法正确标号问题?与子程序差别子程序只有一段目标代码而宏指令完全展开、替换宏指令更灵活,但不做错误检查子程序:优点:节省内存,可被多次调用。缺点:额外开销(保存返回地址,计算转向地址,传递参数等)大,增加了执行时间。适用于代码较长的情况。宏调用:优点:参数传送简单。缺点:不节省空间,适用于子功能代码较短的情况。PRINTSTRMSGAnExamplePRINTSTRMACROSTRPUSHDXPUSHAXLEADX,STRMOVAH,9INT21HPOPAXPOPDXENDMPUSHDXPUSHAXLEADX,MSGMOVAH,9INT21HPOPAXPOPDXAnotherExampleSHIFTMACROHOW,TIMES,DATAMOVCL,TIMEHOWDATA,CLENDMSHIFTSHL,4,AXMOVCL,04SHLAX,CL宏伪指令LOCAL——定义局部的变量,标号和符号由LOCAL定义的标号由??0000~FFFF替代(??字符开头)EXITM:宏结束,用于条件编译宏操作符<>——定界符,参数包括空格、逗号&——字符连接功能,M&STR%——强迫后面表达式先计算!——转移字符前缀(如&、<、>等);;——宏注释Notice参数检查!MYCALMACRON1,N2;MOVAL,N1*10MOVN2,ALENDMMYCAL2-1,DLMOVAL,2-1*10MOVDL,ALMYCAL%2-1,DLMOVAL,1*10MOVDL,AL
汇编语言程序设计-6 来自淘豆网www.taodocs.com转载请标明出处.