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

上传人:小飞机 文档编号:6565090 上传时间:2023-11-13 格式:PPT 页数:22 大小:284.15KB
返回 下载 相关 举报
宏汇编、C语言调用汇编.ppt_第1页
第1页 / 共22页
宏汇编、C语言调用汇编.ppt_第2页
第2页 / 共22页
宏汇编、C语言调用汇编.ppt_第3页
第3页 / 共22页
宏汇编、C语言调用汇编.ppt_第4页
第4页 / 共22页
宏汇编、C语言调用汇编.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《宏汇编、C语言调用汇编.ppt》由会员分享,可在线阅读,更多相关《宏汇编、C语言调用汇编.ppt(22页珍藏版)》请在三一办公上搜索。

1、1,第十讲 宏汇编,3-7 宏汇编与条件汇编一、宏定义、宏调用和宏扩展宏定义:将一段反复使用的汇编指令定义 为宏(MACRO)。例:SHIFTMACRO;宏定义起始宏名MOV CL,4SAL AL,CL ENDM;宏定义结束,宏体,2,宏调用:用宏名(也称宏指令)。宏扩展:汇编时,将宏指令替换成宏体。例:源程序 汇编时 SHIFT MOV CL,4 SAL AL,CL SHIFT MOV CA,4 SAL AL,CL 注:与子程序一样,可以简化源程序书写,但有区别.,3,源程序:主程序 子程序 SHIFT PROC CALL SHIFT MOV CL,4 SAL AL,CL CALL SHIF

2、T RET宏定义与子程序的区别:1.子程序在运行时起作用;而宏定义在汇编时起作用.2.相同程序,子程序省目标码,而宏定义执行速度快.,4,宏定义可以带参数:,例:SHIFT1 MACRO X,Y MOV CL,X SAL Y,CL ENDM调用时:SHIFT1 2,BX;BX算术左移2位.例:SHIFT2 MACRO X,Y,Z MOV CL,X SSI逻辑右移2位,5,消除宏定义:PURGE 宏名,、LOCAL伪指令汇编时定义变量、标号,并保证唯一。格式:LOCAL 参量1,参量2,例:CHANGE MACRO;16进制变ASCLLLOCAL P1CMP AL,10JL P1ADD AL,A

3、-0-10P1:ADD AL,0 ENDM,6,若两次调用CHANGE,则宏展开为:,CMP AL,10JL?0000ADD AL,A-0-10?0000:ADD AL 0 CMP AL,10JL?0001ADD AL,A-0-10?0001:ADD AL 0避免标号重复.,7,三、重复伪指令,1.REPT格式:REPT 表达式(重复次数);指令体ENDM例:X=0REPT 10X=X+1DBX ENDM把110分配给10个连续M单元.,8,2.IRP,格式:IRP 形参;指令体ENDM例:IRP X DB XENDM 将110分配给10个连续M单元.,9,3.IRPC,格式:IRPC 形参,

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

5、UBLIC定义.,12,PUBLIC 名字,功能:定义可以被其它模块引用的全局名字.二、外部过程的调用主模块:EXTRNSUB-PROC:FARCODESEGMENTMAIN-PROCPROCFARCALL SUB-PROCRETMAIN-PROCENDP,13,CODEENDSEND MAIN-PROC子模快:CODE SEGMENTPUBLIC SUB-PROCSUB-PROC PROC FAR RET SUB-PROCENDPCODEENDSEND,14,三、外部数据变量的引用,主模块中供子模快引用的变量用PUBLIC说明;而引用该变量的子模块要用EXTRN说明它引用的变量名和类型。例3

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

7、的BP(2字节)值及返回地址(FAR:4字节,NEAR:2字节).7.C程序允许用SI和DI放局部变量,因此汇编程序中应入栈保护.,17,8.数据返回C程序时,类型不同,使用的寄存器不同,见表3-6.例:CHAR 型:AL LONG 型:DX,AX(二)举例例3-16 气泡排序用汇编;数组元素在C程序中输入,基本程序结构如下:,18,;exm3-16.c#include“stdio.h”extren void sort(int*,int);Main()int aa50;sort(aa,n),19,;exm3-16c.asm_text segmentword code assumecs:_tex

8、t punlic_sort_sort proc farpush bpmovbp,sppush sipush di,20,pop dipop sipop bp_sort endp_text ends(三)汇编与连接 1.对汇编源程序进行汇编.MASMexm#3-16c.asm exm3-16c.obj,21,2.建立exm3-16c.prj工程文件,包括:exm3-16exm3-16c.obj3.TURBO C下,用Compile/Build all选项生成 exm3-16.exe(注意其它选项).4.在DOS下执行.,22,本章小结,标准汇编源程序结构及程序设计。PSP及返回DOS方法。常用伪指令(段定义、常量、变量、标号等)伪指令与指令、宏定义与子程序的区别。常用DOS功能调用。*作业6:P124:题3-2,,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号