(1) lb rD, [rA, SImm15]
基底位址變址定址。從記憶體[rA+SImm15]位址處讀取位元組資料並做符號擴展,然後保 存至 rD 暫存器。例如:lb r4, [r2, 0x1234]。
(2) lb rD, [rA]+, SImm12
後變址定址。從記憶體[rA]位址處讀取位元組資料並做符號擴展,然後保存至 rD 暫存器。
操作完成後 rA 的內容與 SImm12 相加並更新。例如:lb r4, [r2]+, 0x4。
(3) lb rD, [rA, SImm12]+
前變址定址。從記憶體[rA+SImm12]位址處讀取位元組資料並做符號擴展,然後保存至 rD 暫存器。操作完成後 rA 的內容更新為本次操作的記憶體位址。例如:lb r4, [r2, 0x0123]+。
(4) sb rD, [rA, SImm15]
基底位址變址定址。將 rD 暫存器低 8 位保存至記憶體[rA+SImm15]位址處。例如:sb r4, [r2, 0x123]。
(5) sb rD, [rA]+, SImm12
後變址定址。將 rD 暫存器低 8 位保存至記憶體[rA]位址處。操作完成後 rA 的內容與 SImm12 相加並更新。例如:sb r4, [r2]+, 0x4。
(6) sb rD, [rA, SImm12]+
嵌入式微處理器 SPCE3200 原理及應用
© Sunplus Technology Co., Ltd. PAGE 44 V1.1 - Agu 29, 2007
前變址定址。將 rD 暫存器低 8 位保存至記憶體[rA+SImm12]位址處。操作完成後 rA 的內 容更新為本次操作的記憶體位址。例如:sb r4, [r2, 0x0123]+。
lbu——裝載無符號位組指令
使用 lbu 指令可以將一個無符號的位元組資料從記憶體裝載到暫存器。
指令格式:
(1) lbu rD, [rA, SImm15]
基底位址變址定址。從記憶體[rA+SImm15]位址處讀取位元組資料並做零擴展,然後保存 至 rD 暫存器。例如:lbu r4, [r2, 0x1234]。
(2) lbu rD, [rA]+, SImm12
後變址定址。從記憶體[rA]位址處讀取位元組資料並做零擴展,然後保存至 rD 暫存器。
操作完成後 rA 的內容與 SImm12 相加並更新。例如:lbu r4, [r2]+, 0x4。
(3) lbu rD, [rA, SImm12]+
前變址定址。從記憶體[rA+SImm12]位址處讀取位元組資料並做零擴展,然後保存至 rD 暫存器。操作完成後 rA 的內容更新為本次操作的記憶體位址。例如:lbu r4, [r2, 0x0123]+。
lh/sh——裝載/存儲半字指令
使用 lh 指令可以將一個有符號的半字資料從記憶體裝載到暫存器,sh 可以將一個半字資料從 暫存器保存到記憶體。需要注意的是,記憶體位址必須為半字對齊,否則將發生位址對齊錯 誤異常。lh 和 sh 指令都具有基底位址定址、前變址定址和後變址三種定址方式的指令格式。
指令格式:
(1) lh rD, [rA, SImm15]
基底位址變址定址。從記憶體[rA+SImm15]位址處讀取半字資料並做符號擴展,然後保存 至 rD 暫存器。例如:lh r4, [r2, 0x1234]。
(2) lh rD, [rA]+, SImm12
後變址定址。從記憶體[rA]位址處讀取半字資料並做符號擴展,然後保存至 rD 暫存器。
操作完成後 rA 的內容與 SImm12 相加並更新。例如:lh r4, [r2]+, 0x4。
(3) lh rD, [rA, SImm12]+
前變址定址。從記憶體[rA+SImm12]位址處讀取半字資料並做符號擴展,然後保存至 rD 暫存器。操作完成後 rA 的內容更新為本次操作的記憶體位址。例如:lh r4, [r2, 0x0124]+。
(4) sh rD, [rA, SImm15]
基底位址變址定址。將 rD 暫存器低 16 位保存至記憶體[rA+SImm15]位址處。例如:sh r4,
[r2, 0x124]。
嵌入式微處理器 SPCE3200 原理及應用
© Sunplus Technology Co., Ltd. PAGE 45 V1.1 - Agu 29, 2007
(5) sh rD, [rA]+, SImm12
後變址定址。將 rD 暫存器低 16 位保存至記憶體[rA]位址處。操作完成後 rA 的內容與 SImm12 相加並更新。例如:sh r4, [r2]+, 0x4。
(6) sh rD, [rA, SImm12]+
前變址定址。將 rD 暫存器低 16 位保存至記憶體[rA+SImm12]位址處。操作完成後 rA 的 內容更新為本次操作的記憶體位址。例如:sh r4, [r2, 0x0124]+。
lhu——裝載無符號半字指令
使用 lhu 指令可以將一個無符號的半字資料從記憶體裝載到暫存器。
指令格式:
(1) lhu rD, [rA, SImm15]
基底位址變址定址。從記憶體[rA+SImm15]位址處讀取半字資料並做零擴展,然後保存至 rD 暫存器。例如:lhu r4, [r2, 0x1234]。
(2) lhu rD, [rA]+, SImm12
後變址定址。從記憶體[rA]位址處讀取半字資料並做零擴展,然後保存至 rD 暫存器。操 作完成後 rA 的內容與 SImm12 相加並更新。例如:lhu r4, [r2]+, 0x4。
(3) lhu rD, [rA, SImm12]+
前變址定址。從記憶體[rA+SImm12]位址處讀取半字資料並做零擴展,然後保存至 rD 暫 存器。操作完成後 rA 的內容更新為本次操作的記憶體位址。例如:lhu r4, [r2, 0x0123]+。
lw/sw——裝載/存儲字指令
使用 lw 指令可以將一個字資料從記憶體裝載到暫存器,sw 可以將一個字資料從暫存器保存 到記憶體。需要注意的是,記憶體位址必須為字對齊,否則將發生位址對齊錯誤異常。lw 和 sw 指令都具有基底位址定址、前變址定址和後變址三種定址方式的指令格式。
指令格式:
(1) lw rD, [rA, SImm15]
基底位址變址定址。從記憶體[rA+SImm15]位址處讀取字資料,並保存至 rD 暫存器。例 如:lw r4, [r2, 0x1234]。
(2) lw rD, [rA]+, SImm12
後變址定址。從記憶體[rA]位址處讀取字資料,並保存至 rD 暫存器。操作完成後 rA 的內 容與 SImm12 相加並更新。例如:lw r4, [r2]+, 0x4。
(3) lw rD, [rA, SImm12]+
嵌入式微處理器 SPCE3200 原理及應用
© Sunplus Technology Co., Ltd. PAGE 46 V1.1 - Agu 29, 2007
前變址定址。從記憶體[rA+SImm12]位址處讀取字資料,並保存至 rD 暫存器。操作完成 後 rA 的內容更新為本次操作的記憶體位址。例如:lw r4, [r2, 0x0124]+。
(4) sw rD, [rA, SImm15]
基底位址定址。將 rD 暫存器內容保存至記憶體[rA+SImm15]位址處。例如:sw r4, [r2, 0x124]。
(5) sw rD, [rA]+, SImm12
後變址定址。將 rD 暫存器內容保存至記憶體[rA]位址處。操作完成後 rA 的內容與 SImm12 相加並更新。例如:sw r4, [r2]+, 0x4。
(6) sw rD, [rA, SImm12]+
前變址定址。將 rD 暫存器內容保存至記憶體[rA+SImm12]位址處。操作完成後 rA 的內容 更新為本次操作的記憶體位址。例如:sw r4, [r2, 0x0124]+。
ldi——裝載 16 位立即數
在文檔中
嵌入式微處理器
(頁 44-47)