• 沒有找到結果。

指令格式:

在文檔中 嵌入式微處理器 (頁 44-47)

(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)