數(shù)據(jù)傳送指令之:單寄存器的Load/Store指令
(3)指令操作的偽代碼
if ConditionPassed{cond} then
Memory[address,1] = Rd[7:0]
5.3.3 半字數(shù)據(jù)傳送指令(LDRH/STRH)
1.LDRH指令
(1)指令編碼格式
LDRH指令用于從內(nèi)存中將一個(gè)16位的半字讀取到目標(biāo)寄存器。
如果指令的內(nèi)存地址不是半字節(jié)對(duì)齊的,指令的執(zhí)行結(jié)果不可預(yù)知。
指令的編碼格式如圖5.7所示。
圖5.7 LDRH指令的編碼格式
(2)指令的語法格式
LDR{cond>}H Rd>,addr_mode>
① cond>
為指令編碼中的條件域。它指示LDRH指令在什么條件下執(zhí)行。當(dāng)cond>忽略時(shí),指令為無條件執(zhí)行(cond=AL(Alway))。
② Rd>
確定使用哪個(gè)通用寄存器作為目標(biāo)寄存器。
注意 | 如果PC作為目標(biāo)寄存器,指令的執(zhí)行結(jié)果不可預(yù)知。 |
③ addr_mode>
它確定了指令編碼中的I、P、U、W、Rn和addr_mode>位。所有的尋址模式中,都會(huì)確定一個(gè)基址寄存器Rn。
(3)指令操作的偽代碼
if ConditionPassed{cond} then
if address[0]==0
data=Memory[address,2]
else /*address[0]==1*/
data=unpredictable
Rd=data
注意 | 在包含系統(tǒng)控制協(xié)處理器的芯片應(yīng)用中,如果定義了地址對(duì)齊檢測,當(dāng)bit[0]!=0時(shí),將發(fā)生地址對(duì)齊異常。 |
2.STRH指令
(1)指令編碼格式
STRH指令從寄存器中取出指定的16位半字放入寄存器的低16位,并將寄存器的高位補(bǔ)0。
指令的編碼格式如圖5.8所示。
圖5.8 STRH指令的編碼格式
(2)指令的語法格式
STR{cond>}H Rd>,addr_mode>
① cond>
指令編碼中的條件域。它指示STRH指令在什么條件下執(zhí)行。當(dāng)cond>忽略時(shí),指令為無條件執(zhí)行(cond=AL(Alway))。
② Rd>
確定使用哪個(gè)通用寄存器作為目標(biāo)寄存器。
注意 | 如果PC作為目標(biāo)寄存器,指令的執(zhí)行結(jié)果不可預(yù)知。 |
③ addr_mode>
它確定了指令編碼中的I、P、U、W、Rn和addr_mode>位。所有的尋址模式中,都會(huì)確定一個(gè)基址寄存器Rn。
(3)指令操作的偽代碼
if ConditionPassed{cond} then
if address[0]==0
data=Rd[15:0]
else /*address[0]==1*/
data=unpredictable
Memory[address,2]=data
存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理
評(píng)論