汇编语言程序设计 第六章.ppt

汇编语言程序设计 第六章.ppt

ID:51488309

大小:386.50 KB

页数:26页

时间:2020-03-24

汇编语言程序设计 第六章.ppt_第1页
汇编语言程序设计 第六章.ppt_第2页
汇编语言程序设计 第六章.ppt_第3页
汇编语言程序设计 第六章.ppt_第4页
汇编语言程序设计 第六章.ppt_第5页
资源描述:

《汇编语言程序设计 第六章.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、汇编语言程序设计AssemblyLanguageProgramming第六章宏与多模块程序设计宏指令宏:一段有独立功能的代码或者动作的组合一次书写,多次调用汇编程序汇编到该宏指令时,进行宏展开C宏函数#defineMAX(a,b,c){c=(a>b)?a:b;}宏定义MacroNameMACRO[形参表]……(宏定义体)……ENDM参数可以是任意内容形式参数表:可以有多个,用“,”分开同样注意要保护和恢复现场宏调用MacronName[实参表]实参表中的实参与形参表中的形参在位置上一一对应若实参数>形参

2、数,则多余的实参无效;若实参数<形参数,则多余的形参作“空(NUL)”处理;对宏指令必须先定义后调用。宏定义通常放在源程序的开头。宏展开源程序被汇编时,汇编程序把宏调用展开,也就是把宏定义体复制到调用宏指令的位置上,同时用实参取代形参展开后必须语法正确标号问题?与子程序差别子程序只有一段目标代码而宏指令完全展开、替换宏指令更灵活,但不做错误检查子程序:优点:节省内存,可被多次调用。缺点:额外开销(保存返回地址,计算转向地址,传递参数等)大,增加了执行时间。适用于代码较长的情况。宏调用:优点:参数传送简单

3、。缺点:不节省空间,适用于子功能代码较短的情况。PRINTSTRMSGAnExamplePRINTSTRMACROSTRPUSHDXPUSHAXLEADX,STRMOVAH,9INT21HPOPAXPOPDXENDMPUSHDXPUSHAXLEADX,MSGMOVAH,9INT21HPOPAXPOPDXAnotherExampleSHIFTMACROHOW,TIMES,DATAMOVCL,TIMEHOWDATA,CLENDMSHIFTSHL,4,AXMOVCL,04SHLAX,CL宏伪指令LOCAL——

4、定义局部的变量,标号和符号由LOCAL定义的标号由??0000~FFFF替代(??字符开头)EXITM:宏结束,用于条件编译宏操作符<>——定界符,参数包括空格、逗号&——字符连接功能,M&STR%——强迫后面表达式先计算!——转移字符前缀(如&、<、>等);;——宏注释Notice<>的正确使用BUFMACRODATADBDATAENDMBUF1,2,3DB1BUF<1,2,3>DB1,2,3Notice%参数检查MYCALMACRON1,N2;MOVAL,N1*10MOVN2,ALENDMMYCAL

5、2-1,DLMOVAL,2-1*10MOVDL,ALMYCAL%2-1,DLMOVAL,1*10MOVDL,AL重复块重复块REPT/REPEAT,IRP/FOR,IRPC/FORCREPEATREPEATn;重复n次…ENDMX=0REPEAT5X=X+1DBXENDMDB1DB2DB3DB4DB5重复块FORROR参数名,<参数值,参数值,…>…ENDM功能:以参数值的个数作为重复次数FORX,<1,2,3,4,5>DBXENDMDB1DB2DB3DB4DB5重复块FORCROR参数名,<字符串>…

6、ENDM功能:用字符串中的字符从左到右逐一替换参数名FORCX,<12345>DBXENDMDB1DB2DB3DB4DB5条件编译条件汇编——不符条件,不会编译格式:IFxx表达式语句序列1[ELSE语句序列2]ENDIFIF表达式==#ifIFDEF符号==#ifdefIFNDEF符号==#ifndefELSE==#elseENDIF==#endifExamples;DEBUG=1IFDEFDEBUG;调试语句序列ENDIF#ifdefOS_GLOBALS#defineOS_EXT#else#defi

7、neOS_EXTextern#endifOS_EXTintVar1,Var2(1.h)#defineOS_GLOBALS#include1.h...(2.h)#include1.h...(3.h)多模块程序设计多个模块:多个源文件开发并行容易维护方式:源文件包含目标文件连接问题模块间组合模块间通讯源文件包含INCLUDEcommon.asm将定义或者申明放在一个源文件中,可重复利用。采用插入相应文件的方式完成合并,所以被包含的文件不要有END语句。INCLUDEcommon.inc目标文件的连接独立编译

8、为obj文件将目标文件连接成一个EXE文件linkmodule1.obj+module2.objmlmodule1.asmmodule2.asm….完整段定义段名SEGMENT[对齐属性][组合属性][‘类别’]段名ENDS段的对齐属性:用来指定段的起始地址BYTE,WORD,DWORD,PARA,PAGEPARA—缺省,16字节缺省属性可能会使段之间留有缝隙完整段定义段名SEGMENT[对齐属性][组合属性][‘类别’]段名ENDS段的类

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。