首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ARM汇编指令集(10)

ARM汇编指令集(10)

9FILED   
    语法格式:
标号 FIELD 表达式   
    FIELD伪指令用于定义一个结构化内存表中的数据域。FILED 也可用“#” 代替。
表达式的值为当前数据域在内存表中所占的字节数。   
    FIELD伪指令常与MAP伪指令配合使用来定义结构化的内存表。MAP伪指令定义内存表的首地址,FIELD伪指令定义内存表中的各个数据域,并可以为 每个数据域指定一个标号供其他的指令引用。
注意MAPFIELD伪指令仅用于定义数据结构,并不实际分配存储单元。
使用示例:   
    MAP 0x100 定义结构化内存表首地址的值为0x100   
    A FIELD 16 定义A的长度为16字节,位置为0x100   
    B FIELD 32 定义B的长度为32字节,位置为0x110   
    S FIELD 256 ;定义S的长度为256字节,位置为0x130
三、汇编控制(AssemblyControl)伪指令
汇编控制伪指令用于控制汇编程序的执行流程,常用的汇编控制伪指令包括以下几条:   
    — IF ELSE ENDIF   
    — WHILE WEND   
    — MACRO MEND   
    — MEXIT
1IFELSEENDIF   
    语法格式:   
    IF 逻辑表达式
指令序列 1   
    ELSE   
    指令序列 2   
    ENDIF   
    IF ELSE ENDIF伪指令能根据条件的成立与否决定是否执行某个指令序列。当IF后面的逻辑表达式为真,则执行指令序列1 ,否则执行指令序列2 。其中,ELSE及指令序列2可以没有,此时,当IF后面的逻辑表达式为真,则执行指令序列1 ,否则继续执行后面的指令。   
    IF ELSE ENDIF伪指令可以嵌套使用。
使用示例:   
    GBLL Test ;声明一个全局的逻辑变量,变量名为Test   
    IF Test = TRUE   
    指令序列 1   
    ELSE   
    指令序列 2   
    ENDIF   

2WHILEWEND   
    语法格式:   
    WHILE 逻辑表达式
指令序列   
    WEND   
    WHILE WEND伪指令能根据条件的成立与否决定是否循环执行某个指令序列。当WHILE后面的逻辑表达式为真,则执行指令序列,该指令序列执行完毕后,再判断逻辑表达式的值,若为真则继续执行,一直到逻辑表达式的值为假。   
    WHILE WEND伪指令可以嵌套使用。
使用示例:   
    GBLA Counter
声明一个全局的数学变量,变量名为Counter   
    Counter SETA 3 ;由变量Counter 控制循环次数   
    ……   
    WHILE Counter < 10   
    指令序列   
    WEND   
3MACROMEND   
    语法格式:   
    $ 标号 宏名 $ 参数 1 $ 参数 2 ……   
    指令序列   
    MEND   
    MACRO MEND伪指令可以将一段代码定义为一个整体,称为宏指令,然后就可以在程序中通过宏指令多次调用该段代码。其中,$标号在宏指令被展开时,标号会被替 换为用户定义的符号,宏指令可以使用一个或多个参数,当宏指令被展开时,这些参数被相应的值替换。
宏指令的使用方式和功能与子程序有些相似,子程序可以提供模块化的程序设计、节省存储空间并提高运行速度。但在使用子程序结构时需要保护现场,从而增加了系统的开销,因此,在代码较短且需要传递的参数较多时,可以使用宏指令代替子程序。
包含在MACROMEND之间的指令序列称为宏定义体,在宏定义体的第一行应声明宏的原型(包含宏名、所需的参数),然后就可以在汇编程序中通过宏名来调用该指令序列。在源程序被编译时,汇编器将宏调用展开,用宏定义中的指令序列代替程序中的宏调用,并将实际参数的值传递给宏定义中的形式参数。   
    MACROMEND伪指令可以嵌套使用。   

4MEXIT   
    语法格式:   
    MEXIT   
    MEXIT用于从宏定义中跳转出去。

四、其他常用的伪指令
还有一些其他的伪指令,在汇编程序中经常会被使用,包括以下几条:   
    — AREA
    — ALIGN   
    — CODE16 CODE32   
    — ENTRY   
    — END   
    — EQU   
    — EXPORT(或GLOBAL    
    — IMPORT   
    — EXTERN   
    — GET(或INCLUDE    
    — INCBIN   
    — RN   
    — ROUT
继承事业,薪火相传
返回列表