高级汇编语言技术

来源:互联网 发布:微博股票组合数据说明 编辑:程序博客网 时间:2024/05/22 05:20
 
高级汇编语言技术
1、宏汇编
使用子程序也有一些缺点:为转子及返回、保存和恢复寄存器以及参数的传送等都要增加程序的开销,这些操作所消耗的时间以及它们所占用的存储空间,都是为取得子程序结构使程序模块化的优点而增加的额外开销
1.1、宏定义、宏调用和宏展开
宏是程序中一段有独立功能的程序代码。它只需要在源程序中定义一次,就可以多次调用它,调用时只需要用一个宏指令语句就可以了
宏定义是用一组伪操作来实现的,格式如下:
macro name MACRO [dummy parameter list]
    …(宏定义体)
ENDM
其中,MACRO和ENDM是一对伪操作,这对伪操作之间是宏定义体——是一组有独立功能的程序代码。宏指令名给出该宏定义的名称,调用时就使用宏指令名来调用该宏定义。哑元表给出了宏定义中所用到的形式参数,每个哑元之间用逗号隔开
经过宏定义之后的宏指令就可以在源程序中调用,宏调用的格式为:
macro name [actual parameter list]
实元表中的每一项为实元,相互之间用逗号隔开
当源程序被汇编时,汇编程序对每个宏调用作宏展开。宏展开就是用宏定义体取代源程序中的宏指令名,而且用实元取代宏定义中的哑元。
子程序调用和宏调用的区别:
子程序是在程序执行期间由主程序调用的,它只占有自身大小的一个空间;而宏调用则是在汇编期间展开的,每调用一次就把宏定义体展开一次,因而它占有的存储空间与调用次数有关,调用次数越多则占有的存储空间也越大
2、重复汇编
有时汇编语言程序需要连续地重复完成相同的或者几乎完全相同的一组代码,这时可使用重复汇编
(1)重复伪操作
重复伪操作的格式是:
REPT expression
    …(重复块)
ENDM
其中表达式的值用来确定重复块的重复次数,表达式中如包含外部或未定义的项则汇编指示出错
(2)不定重复伪操作
IPR伪操作格式是:
IPR dummy,<argument list>
    …(重复块)
ENDM
汇编程序把重复块的代码重复几次,每次重复把重复块中的哑元用自变量表中的一项来取代,下一次取代下一项,重复次数由自变量表中的自变量个数来确定
3、条件汇编
汇编程序能根据条件把一段源程序包含在汇编语言程序内或者把它排除在外,条件伪操作的一般格式是:
IFxx argument
    …(自变量满足条件时汇编此块)
[ELSE]
   …(自变量不满足条件时汇编此块)
ENDIF
 
原创粉丝点击