操作碼目標(biāo)操作數(shù)可選擇的源操作數(shù)說(shuō)明MOVARndirect@RiDPTRRn;direct;@Ri;#dataA;direct;#dataA;Rn;direct;@Ri;#dataA;direct;#data#data16內(nèi)部傳送內(nèi)部傳送內(nèi)部傳送內(nèi)部傳送數(shù)據(jù)指針賦值PUSHPOP隱含(SP
外部RAM數(shù)據(jù)傳送MOVXA,@RiMOVXA, @DPTRMOVX@Ri, AMOVX@DPTR,A執(zhí)行過(guò)程中會(huì)使/WR、/RD有效。例、試編寫(xiě)一程序段,實(shí)現(xiàn)將外RAM0FAH單元中的內(nèi)容傳送到外RAM 04FFH單元中。解:MOVDPTR,#04FFHMOVR0,#0FAHMOVXA,@R0
Load/Store內(nèi)存訪問(wèn)指令在ARM寄存器和存儲(chǔ)器之間傳送數(shù)據(jù)。ARM指令中有3種基本的數(shù)據(jù)傳送指令。
多寄存器Load/Store內(nèi)存訪問(wèn)指令也叫批量加載/存儲(chǔ)指令,它可以實(shí)現(xiàn)在一組寄存器和一塊連續(xù)的內(nèi)存單元之間傳送數(shù)據(jù)。LDM用于加載多個(gè)寄存器,STM用于存儲(chǔ)多個(gè)寄存器。多寄存器Load/Store內(nèi)存訪問(wèn)指令允許一條指令傳送16個(gè)寄存器的任何子集或所有寄存器。
MOV指令是最簡(jiǎn)單的ARM指令,執(zhí)行的結(jié)果就是把一個(gè)數(shù)N送到目標(biāo)寄存器Rd,其中N可以是寄存器,也可以是立即數(shù)。
MVN是反相傳送(Move Negative)指令。它將操作數(shù)的反碼傳送到目的寄存器。MVN指令多用于向寄存器傳送一個(gè)負(fù)數(shù)或生成位掩碼。
交換指令是load/store指令的一種特例,它把一個(gè)寄存器單元的內(nèi)容與寄存器內(nèi)容交換。交換指令是一個(gè)原子操作(atomic operation),也就是說(shuō),在連續(xù)的總線操作中讀/寫(xiě)一個(gè)存儲(chǔ)單元,在操作期間阻止其他任何指令對(duì)該存儲(chǔ)單元的讀/寫(xiě)。
ARM指令集提供了兩條指令,可直接控制程序狀態(tài)寄存器(PSR,Program State Register)。MRS指令用于把CPSR或SPSR的值傳送到一個(gè)寄存器;MSR與之相反,把一個(gè)寄存器的內(nèi)容傳送到CPSR或SPSR。這兩條指令結(jié)合,可用于對(duì)CPSR和SPSR進(jìn)行讀/寫(xiě)操作。