《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > 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 用于定義一個結構化的內存表首地址    
    — FIELD 用于定義一個結構化的內存表的數(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 偽指令用于定義一個結構化的內存表的首地址,。 MAP 也可用 “ ^ ” 代替。    
    表達式可以為程序中的標號或數(shù)學表達式,,基址寄存器為可選項,,當基址寄存器選項不存在時,表達式的值即為內存表的首地址,,當該選項存在時,,內存表的首地址為表達式的值與基址寄存器的和。    
    MAP 偽指令通常與 FIELD 偽指令配合使用來定義結構化的內存表,。    
    使用示例:    
    MAP 0x100 ,, R0 ;定義結構化內存表首地址的值為 0x100 + R0 ,。 
   
    9,、 FILED    
    語法格式:    
    標號 FIELD 表達式    
    FIELD 偽指令用于定義一個結構化內存表中的數(shù)據(jù)域。 FILED 也可用 “ # ” 代替,。    
    表達式的值為當前數(shù)據(jù)域在內存表中所占的字節(jié)數(shù),。    
    FIELD 偽指令常與 MAP 偽指令配合使用來定義結構化的內存表,。 MAP 偽指令定義內存表的首地址, FIELD 偽指令定義內存表中的各個數(shù)據(jù)域,,并可以為每個數(shù)據(jù)域指定一個標號供其他的指令引用,。    
    注意 MAP 和 FIELD 偽指令僅用于定義數(shù)據(jù)結構,并不實際分配存儲單元,。    
    使用示例:    
    MAP 0x100 ,;定義結構化內存表首地址的值為 0x100 。    
    A FIELD 16 ,;定義 A 的長度為 16 字節(jié),,位置為 0x100    
    B FIELD 32 ;定義 B 的長度為 32 字節(jié),,位置為 0x110    
    S FIELD 256 ,;定義 S 的長度為 256 字節(jié),位置為 0x130   

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