《電子技術應用》
您所在的位置:首頁 > 嵌入式技术 > 解决方案 > ARM汇编伪指令介绍1

ARM汇编伪指令介绍1

2017-06-22
關鍵詞: 汇编语言

  在 ARM 匯編語言程序里,有一些特殊指令助記符,這些助記符與指令系統的助記符不同,沒有相對應的操作碼,通常稱這些特殊指令助記符為偽指令,他們所完成的操作稱為偽操作。偽指令在源程序中的作用是為完成匯編程序作各種準備工作的,這些偽指令僅在匯編過程中起作用,一旦匯編結束,偽指令的使命就完成。     
 
    在 ARM 的匯編程序中,有如下幾種偽指令:符號定義偽指令、數據定義偽指令、匯編控制偽指令、宏指令以及其他偽指令。

    符號定義( Symbol Definition )偽指令    
    符號定義偽指令用于定義 ARM 匯編程序中的變量、對變量賦值以及定義寄存器的別名等操作。    
    常見的符號定義偽指令有如下幾種:    
    — 用于定義全局變量的 GBLA 、 GBLL 和 GBLS 。    
    — 用于定義局部變量的 LCLA 、 LCLL 和 LCLS 。    
    — 用于對變量賦值的 SETA 、 SETL 、 SETS 。    
    — 為通用寄存器列表定義名稱的 RLIST 。    
    1、 GBLA、GBLL 和GBLS    
    語法格式:    
    GBLA ( GBLL 或 GBLS ) 全局變量名    
    GBLA 、 GBLL 和 GBLS 偽指令用于定義一個 ARM 程序中的全局變量,并將其初始化。其中:    
    GBLA 偽指令用于定義一個全局的數字變量,并初始化為 0 ;    
    GBLL 偽指令用于定義一個全局的邏輯變量,并初始化為 F (假);    
    GBLS 偽指令用于定義一個全局的字符串變量,并初始化為空;    
    由于以上三條偽指令用于定義全局變量,因此在整個程序范圍內變量名必須唯一。    
    使用示例:    
    GBLA Test1 ;定義一個全局的數字變量,變量名為 Test1    
    Test1 SETA 0xaa ;將該變量賦值為 0xaa    
    GBLL Test2 ;定義一個全局的邏輯變量,變量名為 Test2    
    Test2 SETL {TRUE} ;將該變量賦值為真    
    GBLS Test3 ;定義一個全局的字符串變量,變量名為 Test3    
    Test3 SETS “ Testing ” ;將該變量賦值為 “ Testing ”  
  
    2、 LCLA、LCLL 和LCLS    
    語法格式:    
    LCLA ( LCLL 或 LCLS ) 局部變量名    
    LCLA 、 LCLL 和 LCLS 偽指令用于定義一個 ARM 程序中的局部變量,并將其初始化。其中:    
    LCLA 偽指令用于定義一個局部的數字變量,并初始化為 0 ;    
    LCLL 偽指令用于定義一個局部的邏輯變量,并初始化為 F (假);    
    LCLS 偽指令用于定義一個局部的字符串變量,并初始化為空;    
    以上三條偽指令用于聲明局部變量,在其作用范圍內變量名必須唯一。    
    使用示例:    
    LCLA Test4 ;聲明一個局部的數字變量,變量名為 Test4    
    Test3 SETA 0xaa ;將該變量賦值為 0xaa    
    LCLL Test5 ;聲明一個局部的邏輯變量,變量名為 Test5    
    Test4 SETL {TRUE} ;將該變量賦值為真    
    LCLS Test6 ;定義一個局部的字符串變量,變量名為 Test6    
    Test6 SETS “ Testing ” ;將該變量賦值為 “ Testing ”   

 3、 SETA、SETL 和SETS    
    語法格式:    
    變量名 SETA ( SETL 或 SETS ) 表達式    
    偽指令 SETA 、 SETL 、 SETS 用于給一個已經定義的全局變量或局部變量賦值。    
    SETA 偽指令用于給一個數學變量賦值;    
    SETL 偽指令用于給一個邏輯變量賦值;    
    SETS 偽指令用于給一個字符串變量賦值;    
    其中,變量名為已經定義過的全局變量或局部變量,表達式為將要賦給變量的值。    
    使用示例:    
    LCLA Test3 ;聲明一個局部的數字變量,變量名為 Test3    
    Test3 SETA 0xaa ;將該變量賦值為 0xaa    
    LCLL Test4 ;聲明一個局部的邏輯變量,變量名為 Test4    
    Test4 SETL {TRUE} ;將該變量賦值為真    

    4 、 RLIST    
    語法格式:    
    名稱 RLIST { 寄存器列表 }    
    RLIST 偽指令可用于對一個通用寄存器列表定義名稱,使用該偽指令定義的名稱可在 ARM 指令 LDM/STM 中使用。在 LDM/STM 指令中,列表中的寄存器訪問次序為根據寄存器的編號由低到高,而與列表中的寄存器排列次序無關。    
    使用示例:    
    RegList RLIST {R0-R5 , R8 , R10} ;將寄存器列表名稱定義為 RegList ,可在 ARM 指令 LDM/STM中通過該名稱訪問寄存器列表。   

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 欧美亚洲国产免费 | 亚洲国产欧美一区二区三区不卡| 少妇av一区二区三区无码| 国产日韩中文字幕| www.午夜精品| 国产成人在线一区| 99视频在线免费观看| 91九色精品视频| 日韩在线视频国产| 久久久久久久久久久国产| 欧美 国产 综合| 国产精品久久久久久久久免费 | 激情综合在线观看| 黄色三级中文字幕| 国产美女三级视频| 高清国产一区| 欧美综合激情| 超碰国产精品久久国产精品99| 91精品国产乱码久久久久久蜜臀| 中文网丁香综合网| 欧美日韩一区二区视频在线| 国产精品一区专区欧美日韩| 亚洲熟妇无码一区二区三区| 99在线观看视频网站| 久久视频在线观看中文字幕| 亚洲综合精品伊人久久| 一区二区三区在线观看www| 国产精品免费久久久久影院| 国产亚洲一区二区三区在线播放| 久久国产色av免费观看| 国产日韩在线精品av| 国产三区在线视频| 99久久自偷自偷国产精品不卡| 国产欧美日韩亚洲精品| 亚洲欧洲日本国产| 欧美一级片一区| 久久久久久69| 国产一区福利视频| 国产麻豆一区二区三区在线观看| 91久久久在线| 日韩一区二区三区高清|