1、源程序用宏汇编程序翻译(汇编)后,可以得到三个文件:
一个是扩展名为 .OBJ 的目标文件,在该文件中,将源程序的操作码部分变为机器码,但地址操作数是可浮动的相对地址,而不是实际地址,因此需经 LINK 连接文件进行连接才能形成可执行文件.EXE。
第二个文件是列表文件,扩展名为 .LST ,它把源程序和目标程序列表,以供检查程序用。
第三个文件是交叉索引文件,扩展名为 .CRF ,它是一个对源程序所用的各种符号进行前后对照的文件。其中目标文件是必须产生的,而其它两个文件在需要时给予命令就可产生,对连接和执行汇编程序无直接的关系。
2、
子程序的定义:
如果某程序段在源程序内反复出现,那么,就可把该程序段定义为子程序。这样可以缩短源程序长度、节省目标程序的存储空间,也可提高程序的可维护性和共享性。
宏调用的定义:
经过宏定义后的宏指令就可以在源程序中被调用,这种对宏指令的调用称为宏调用。
宏展开的过程:
宏展开实际上是用宏定义时设计的宏体去代替宏指令名,并且用实际参数一一取代形式参数,即第n个实际参数取代第n个形式参数,以形成符合设计功能且能够实现、执行的程序代码。
区别及各自特点:
1)宏调用是用一个“单词”代替一段程序或字符串,编译后的机器码会变长,但是由于没有转移和返回等的开销,运行时间较短。
2)子程序调用可以节省存储空间和节约代码设计时间,提供模块化的程序设计,使程序调试和维护简单。但是使用子程序要保护和恢复相关的寄存器和子程序现场,增加一些开销,运行时间较长。