ARM匯編器所支持的偽指令
?。?)DCD(ii DCDU)
標號 DCD (或DCDU) 表達式
DCD(或DCDU)偽指令用于分配一片連續(xù)的字存儲單元,并用偽指令中指定的表達式初始化。其中,表達式可以為程序標號或數(shù)字表達式。DOD也可用“&”代替。
用DOD分配的字存儲單元是字對齊的,而用DCDU分配的字存儲單元并不嚴格要求字對齊。
?。?)DCFD(或DCFDU)
標號 DCFD (或DCFDU) 表達式
DCFD(或DCFDU)偽指令用于為雙精度的浮點數(shù)分配一片連續(xù)的字存儲單元,并用偽指令中指定的表達式初始化。每個雙精度的浮點數(shù)占據(jù)兩個字單元。
用DCFD分配的字存儲單元是字對齊的,而用DCFDU分配的字存儲單元并不嚴格要求字對齊。
?。?)DCFS(再戈DCFSU)
標號 DCFS (或DCFSU) 表達式
DCFS(或DCFSU)偽指令用于為單精度的浮點數(shù)分配一片連續(xù)的字存儲單元,并用偽指令中指定的表達式初始化。每個單精度的浮點數(shù)占據(jù)一個字單元。
用DCFS分配的字存儲單元是字對齊的,而用DCFSU分配的字存儲單元并不嚴格要求字對齊。
(6)DCQ(或DCQU)
標號 DCQ (或DCQU) 表達式
DCQ(或DCQU)偽指令用于分配一片以8個字節(jié)為單位的連續(xù)存儲區(qū)域,并用偽指令中指定的表達式初始化。
用DCQ分配的存儲單元是字對齊的,而用DCQU分配的存儲單元并不嚴格要求字對齊。
?。?)SPACE
標號 SPACE 表達式
SPACE偽指令用于分配一片連續(xù)的存儲區(qū)域并初始化為0。其中,表達式為要分配的字節(jié)數(shù)。SPACE也可用“%”代替。
(8)MAP
MAP 表達式〔,基址寄存器)
MAP偽指令用于定義一個結(jié)構(gòu)化的內(nèi)存表的首地址。MAP也可用“^”代替。
表達式可以為程序中的標號或數(shù)學表達式,基址寄存器為可選項,當基址寄存器選項不存在時,表達式的值即為內(nèi)存表的首地址;當該選項存在時,內(nèi)存表的首地址為表達式的值與基址寄存器的和。
MAP偽指令通常與FIELD偽指令配合使用來定義結(jié)構(gòu)化的內(nèi)存表。
?。?)FILED
標號 FIELD 表達式
FIELD偽指令用于定義一個結(jié)構(gòu)化內(nèi)存表中的數(shù)據(jù)域。FILED也可用“?!贝?。表
達式的值為當前數(shù)據(jù)域在內(nèi)存表中所占的字節(jié)數(shù)。
FIELD偽指令常與MAP偽指令配合使用來定義結(jié)構(gòu)化的內(nèi)存表。MAP偽指令定義內(nèi)存表的首地址,F(xiàn)IELD偽指令定義內(nèi)存表中的各個數(shù)據(jù)域,并可以為每個數(shù)據(jù)域指定一個標號供其他的指令引用。
注意:MAP和FIELD偽指令僅用于定義數(shù)據(jù)結(jié)構(gòu),并不實際分配存儲單元。
3.匯編控制(Assembly Control)偽指令
匯編控制偽指令用于控制匯編程序的執(zhí)行流程,常用的匯編控制偽指令包括以下幾種。
?。?)IF、 ELSE、 ENDIF
IF 邏輯表達式
指令序列1
ELSE
指令序列2 ·
ENDTF
r、ELSE、ENDIF偽指令能根據(jù)條件的成立與否決定是否執(zhí)行某個指令序列。當r后面的邏輯表達式為真時,則執(zhí)行指令序列1,否則執(zhí)行指令序列2。其中,ELSE及指令序列2可以沒有,此時,當IF后面的邏輯表達式為真時,則執(zhí)行指令序列1,否則繼續(xù)執(zhí)行后面的指令。
IF、ELSE、ENDIF偽指令可以嵌套使用。
(2)WHILE、WEND
WHILE 邏輯表達式
指令序列
IATPhTn
WHILE、WEND偽指令能根據(jù)條件的成立與否決定是否循環(huán)執(zhí)行某個指令序列。當WHILE后面的邏輯表達式為真時,則執(zhí)行指令序列,該指令序列執(zhí)行完畢后,再判斷邏輯表達式的值,若為真則繼續(xù)執(zhí)行,一直到邏輯表達式的值為假。
評論