《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > ARM匯編偽指令介紹2

ARM匯編偽指令介紹2

2017-06-22
關鍵詞: 匯編語言

 數(shù)據(jù)定義( Data Definition )偽指令    
    數(shù)據(jù)定義偽指令一般用于為特定的數(shù)據(jù)分配存儲單元,同時可完成已分配存儲單元的初始化。    
    常見的數(shù)據(jù)定義偽指令有如下幾種:    
    — DCB 用于分配一片連續(xù)的字節(jié)存儲單元并用指定的數(shù)據(jù)初始化。    
    — DCW ( DCWU ) 用于分配一片連續(xù)的半字存儲單元并用指定的數(shù)據(jù)初始化。    
    — DCD ( DCDU ) 用于分配一片連續(xù)的字存儲單元并用指定的數(shù)據(jù)初始化。    
    — DCFD ( DCFDU )用于為雙精度的浮點數(shù)分配一片連續(xù)的字存儲單元并用指定的數(shù)據(jù)初始   
    化。    
    — DCFS ( DCFSU ) 用于為單精度的浮點數(shù)分配一片連續(xù)的字存儲單元并用指定的數(shù)據(jù)初    
    始化。    
    — DCQ ( DCQU ) 用于分配一片以 8 字節(jié)為單位的連續(xù)的存儲單元并用指定的數(shù)據(jù)初始    
    化。    
    — SPACE 用于分配一片連續(xù)的存儲單元    
    — MAP 用于定義一個結構化的內(nèi)存表首地址    
    — FIELD 用于定義一個結構化的內(nèi)存表的數(shù)據(jù)域    
    1、 DCB    
    語法格式:    
    標號 DCB 表達式    
    DCB 偽指令用于分配一片連續(xù)的字節(jié)存儲單元并用偽指令中指定的表達式初始化。其中,表達式可以為 0 ~ 255 的數(shù)字或字符串。 DCB 也可用 “ = ” 代替。    
    使用示例:    
    Str DCB “ This is a test ! ” ;分配一片連續(xù)的字節(jié)存儲單元并初始化。 
   
    2、 DCW(或DCWU)    
    語法格式:    
    標號 DCW (或 DCWU ) 表達式    
    DCW (或 DCWU )偽指令用于分配一片連續(xù)的半字存儲單元并用偽指令中指定的表達式初始化。    
    其中,表達式可以為程序標號或數(shù)字表達式。。    
    用 DCW 分配的字存儲單元是半字對齊的,而用 DCWU 分配的字存儲單元并不嚴格半字對齊。    
    使用示例:    
    DataTest DCW 1 , 2 , 3 ;分配一片連續(xù)的半字存儲單元并初始化。    

    3、 DCD(或DCDU)    
    語法格式:    
    標號 DCD (或 DCDU ) 表達式    
    DCD (或 DCDU )偽指令用于分配一片連續(xù)的字存儲單元并用偽指令中指定的表達式初始化。其中,表達式可以為程序標號或數(shù)字表達式。 DCD 也可用 “ & ” 代替。    
    用 DCD 分配的字存儲單元是字對齊的,而用 DCDU 分配的字存儲單元并不嚴格字對齊。    
    使用示例:    
    DataTest DCD 4 , 5 , 6 ;分配一片連續(xù)的字存儲單元并初始化。 
   
    4、 DCFD(或DCFDU)    
    語法格式:    
    標號 DCFD (或 DCFDU ) 表達式    
    DCFD (或 DCFDU )偽指令用于為雙精度的浮點數(shù)分配一片連續(xù)的字存儲單元并用偽指令中指定的表達式初始化。每個雙精度的浮點數(shù)占據(jù)兩個字單元。用 DCFD 分配的字存儲單元是字對齊的,而用 DCFDU 分配的字存儲單元并不嚴格字對齊。    
    使用示例:    
    FDataTest DCFD 2E115 , -5E7 ;分配一片連續(xù)的字存儲單元并初始化為指定的雙精度數(shù)。    

    5、 DCFS(或DCFSU)    
    語法格式:    
    標號 DCFS (或 DCFSU ) 表達式    
    DCFS (或 DCFSU )偽指令用于為單精度的浮點數(shù)分配一片連續(xù)的字存儲單元并用偽指令中指定的表達式初始化。每個單精度的浮點數(shù)占據(jù)一個字單元。 用 DCFS 分配的字存儲單元是字對齊的,而用 DCFSU 分配的字存儲單元并不嚴格字對齊。    
    使用示例:    
    FDataTest DCFS 2E5 , -5E - 7 ;分配一片連續(xù)的字存儲單元并初始化為指定的單精度數(shù)。    

    6、 DCQ(或DCQU)    
    語法格式:    
    標號 DCQ (或 DCQU ) 表達式    
    DCQ (或 DCQU )偽指令用于分配一片以 8 個字節(jié)為單位的連續(xù)存儲區(qū)域并用偽指令中指定的表達式初始化。    
    用 DCQ 分配的存儲單元是字對齊的,而用 DCQU 分配的存儲單元并不嚴格字對齊。    
    使用示例:    
    DataTest DCQ 100 ;分配一片連續(xù)的存儲單元并初始化為指定的值。 
   
    7、 SPACE    
    語法格式:    
    標號 SPACE 表達式    
    SPACE 偽指令用于分配一片連續(xù)的存儲區(qū)域并初始化為 0 。其中,表達式為要分配的字節(jié)數(shù)。    
    SPACE 也可用 “ % ” 代替。    
    使用示例:    
    DataSpace SPACE 100 ;分配連續(xù) 100 字節(jié)的存儲單元并初始化為 0 。    

    8、 MAP    
    語法格式:    
    MAP 表達式 { ,基址寄存器 }    
    MAP 偽指令用于定義一個結構化的內(nèi)存表的首地址。 MAP 也可用 “ ^ ” 代替。    
    表達式可以為程序中的標號或數(shù)學表達式,基址寄存器為可選項,當基址寄存器選項不存在時,表達式的值即為內(nèi)存表的首地址,當該選項存在時,內(nèi)存表的首地址為表達式的值與基址寄存器的和。    
    MAP 偽指令通常與 FIELD 偽指令配合使用來定義結構化的內(nèi)存表。    
    使用示例:    
    MAP 0x100 , R0 ;定義結構化內(nèi)存表首地址的值為 0x100 + R0 。 
   
    9、 FILED    
    語法格式:    
    標號 FIELD 表達式    
    FIELD 偽指令用于定義一個結構化內(nèi)存表中的數(shù)據(jù)域。 FILED 也可用 “ # ” 代替。    
    表達式的值為當前數(shù)據(jù)域在內(nèi)存表中所占的字節(jié)數(shù)。    
    FIELD 偽指令常與 MAP 偽指令配合使用來定義結構化的內(nèi)存表。 MAP 偽指令定義內(nèi)存表的首地址, FIELD 偽指令定義內(nèi)存表中的各個數(shù)據(jù)域,并可以為每個數(shù)據(jù)域指定一個標號供其他的指令引用。    
    注意 MAP 和 FIELD 偽指令僅用于定義數(shù)據(jù)結構,并不實際分配存儲單元。    
    使用示例:    
    MAP 0x100 ;定義結構化內(nèi)存表首地址的值為 0x100 。    
    A FIELD 16 ;定義 A 的長度為 16 字節(jié),位置為 0x100    
    B FIELD 32 ;定義 B 的長度為 32 字節(jié),位置為 0x110    
    S FIELD 256 ;定義 S 的長度為 256 字節(jié),位置為 0x130   

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權者。如涉及作品內(nèi)容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。