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

ARM匯編偽指令介紹2

2017-06-22
關(guān)鍵詞: 匯編語(yǔ)言

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

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

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

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

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

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