宏汇编、C语言调用汇编.ppt

宏汇编、C语言调用汇编.ppt

ID:52307287

大小:212.01 KB

页数:22页

时间:2020-04-04

宏汇编、C语言调用汇编.ppt_第1页
宏汇编、C语言调用汇编.ppt_第2页
宏汇编、C语言调用汇编.ppt_第3页
宏汇编、C语言调用汇编.ppt_第4页
宏汇编、C语言调用汇编.ppt_第5页
资源描述:

《宏汇编、C语言调用汇编.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十讲宏汇编3-7宏汇编与条件汇编一、宏定义、宏调用和宏扩展宏定义:将一段反复使用的汇编指令定义为宏(MACRO)。例:SHIFTMACRO;宏定义起始宏名MOVCL,4SALAL,CLENDM;宏定义结束宏体1宏调用:用宏名(也称宏指令)。宏扩展:汇编时,将宏指令替换成宏体。例:源程序汇编时……SHIFTMOVCL,4…SALAL,CLSHIFT…MOVCA,4SALAL,CL注:与子程序一样,可以简化源程序书写,但有区别.2源程序:主程序子程序…SHIFTPROCCALLSHIFTMOVCL,4…SALAL,CLCALLSHIFTRET宏定义与子程序的区别:1.子程序在运行时起作用;而

2、宏定义在汇编时起作用.2.相同程序,子程序省目标码,而宏定义执行速度快.3宏定义可以带参数:例:SHIFT1MACROX,YMOVCL,XSALY,CLENDM调用时:SHIFT12,BX;BX算术左移2位.例:SHIFT2MACROX,Y,ZMOVCL,XS&ZY,CLENDM调用时:SHIFT22,SI,HR;SI逻辑右移2位4消除宏定义:PURGE宏名[,…]、LOCAL伪指令汇编时定义变量、标号,并保证唯一。格式:LOCAL参量1,参量2,…例:CHANGEMACRO;16进制变ASCLLLOCALP1CMPAL,10JLP1ADDAL,‘A’-‘0’-10P1:ADDAL,‘0’

3、ENDM5若两次调用CHANGE,则宏展开为:CMPAL,10JL??0000ADDAL,‘A’-‘0’-10??0000:ADDAL‘0’…CMPAL,10JL??0001ADDAL,‘A’-‘0’-10??0001:ADDAL‘0’避免标号重复.6三、重复伪指令1.REPT格式:REPT表达式(重复次数)…;指令体ENDM例:X=0REPT10X=X+1DBXENDM把1—10分配给10个连续M单元.72.IRP格式:IRP形参<重复参数表>…;指令体ENDM例:IRPX<1,2,3,4,5,6,7,8,9,10>DBXENDM将1~10分配给10个连续M单元.83.IRPC格式:IR

4、PC形参,字符串…;指令体ENDM重复次数为字符串个数.例:IRPCX,0123456789DBX+1ENDM将1~10分配给10个连续M单元.9四、条件汇编有条件地将源程序进行汇编。格式:IFXX;条件…[ELSE];…ENDIF条件伪指令见表3-4103-8外部引用与全局说明模块化设计需求.一、EXTRN和PUBLIC伪指令定义模块间的过程调用和变量引用的相关属性格式:EXTRN名字:类型[,…]功能:指示在本模块中使用该名字,但这名字的定义是在要连接的其他模块中定义的.注:1.名字指过程名,变量(和符号常量).2.一般放在程序模块最前面.3.用EXTRN说明的名字要在另一个模块中用P

5、UBLIC定义.11PUBLIC名字[,…]功能:定义可以被其它模块引用的全局名字.二、外部过程的调用主模块:EXTRNSUB-PROC:FARCODESEGMENTMAIN-PROCPROCFAR…CALLSUB-PROC…RETMAIN-PROCENDP12CODEENDSENDMAIN-PROC子模快:CODESEGMENTPUBLICSUB-PROCSUB-PROCPROCFAR…RETSUB-PROCENDPCODEENDSEND13三、外部数据变量的引用主模块中供子模快引用的变量用PUBLIC说明;而引用该变量的子模块要用EXTRN说明它引用的变量名和类型。例3-15多字节加法

6、并显示,自阅。143-9高级语言调用汇编语言子程序混合语言编程:高级语言实现功能;汇编语言实现速度。参数传递:传值,传址两种一、C语言调用汇编语言子程序(一)调用规则1.在C中用“EXTRN”对调用函数说明.2.函数名不超过8个字符,并在前加下划线.3.参数入栈按反序,即第一个参数最后入栈.154.值传递时,参数类型不同,入栈字节数不同,见表3-5,图3-16.5.汇编程序中,要有对代码段说明部分,一般用“_TEXT”说明,过程名用下划线,且为PUBLIC.若C程序为小模式,汇编用近(NEAR)过程;大模式,用远(FAR)过程.6.汇编程序取C的参数时,要跨过栈区的BP(2字节)值及返回地

7、址(FAR:4字节,NEAR:2字节).7.C程序允许用SI和DI放局部变量,因此汇编程序中应入栈保护.168.数据返回C程序时,类型不同,使用的寄存器不同,见表3-6.例:CHAR型:ALLONG型:DX,AX(二)举例例3-16气泡排序用汇编;数组元素在C程序中输入,基本程序结构如下:17;exm3-16.c#include“stdio.h”extrenvoidsort(int*,int);Main(){intaa[

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

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

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