?? c28x尋址方式詳解.txt
字號:
MOV loc16,*(0:16bit) ; [loc16] = [0:16bit]
MOV *(0:16bit),loc16 ; [loc16] = [0:16bit]
(2)
*(PA)方式,地址的高16位為0,低16位為PA中的16位二進制立即數。當該指令連續使用時,每次地址都會后加。該模式尋址時,在訪問IO空間時,IO選通信號被置位。用數據地址線訪問IO空間。可用指令:
OUT *(PA),loc16 ; IOspace[0:PA] = [loc16]
UOUT *(PA),loc16 ; IOspace[0:PA] = [loc16] (unprotected)
IN loc16,*(PA) ; [loc16] = IOspace[0:PA]
(3)
0:pma方式,22位的地址高6位為0,低16位為16位二進制立即數pma,當該指令連續使用時,每次地址都會后加。只能尋址低64k程序空間。可用指令:
MAC P,loc16,0:pma ; ACC = ACC + P << PM,P = [loc16] *
ProgSpace[0:pma]
(4)
*(pma)方式,22位的地址高6位為0,低16位為16位二進制立即數pma,當該指令連續使用時,每次地址都會后加。只能尋址低64k程序空間。可用指令:
XPREAD loc16,*(pma) ; [loc16] = ProgSpace[0x3F:pma]
XMAC P,loc16,*(pma) ; ACC = ACC + P << PM,P = [loc16] *
ProgSpace[0x3F:pma]
XMACD P,loc16,*(pma) ; ACC = ACC + P << PM,P = [loc16] *
ProgSpace[0x3F:pma],[loc16+1] = [loc16]
程序空間間接尋址:
(1)
*(AL)方式,22位的地址高6位為0x3F,低16位為AL,當該指令連續使用時,AL的內容被復制到一個影子寄存器中,并在每次地址后加,AL的內容不變。只能尋址低64k程序空間。可用指令:
XPREAD loc16,*AL ; [loc16] = ProgSpace[0x3F:AL]
XPWRITE *AL,loc16 ; ProgSpace[0x3F:AL] = [loc16]
(2)
*XAR7方式,22位地址為XAR7,當在指令XPREAD或XPWRITE中連續使用時,XAR7的內容被復制到一個影子寄存器中,并每次地址后加,XAR7的內容不變。其它指令則不會。可用指令:
MAC P,loc16,*XAR7 ; ACC = ACC + P << PM,P = [loc16] *
ProgSpace[*XAR7]
DMAC ACC:P,loc32,*XAR7 ; ACC = ([loc32].MSW *
ProgSpace[*XAR7].MSW) >> PM,
; P = ([loc32].LSW * ProgSpace[*XAR7].MSW)
>> PM
QMACL P,loc32,*XAR7 ; ACC = ACC + P >> PM,
; P = ([loc32] * ProgSpace[*XAR7]) >> 32
IMACL P,loc32,*XAR7 ; ACC = ACC + P,
; P = ([loc32] * ProgSpace[*XAR7]) << PM
PREAD loc16,*XAR7 ; [loc16] = ProgSpace[*XAR7]
PWRITE *XAR7,loc16 ; ProgSpace[*XAR7] = [loc16]
(2) *XAR7++方式,22位地址為XAR7,
16位操作時XAR7=XAR7+1,32位操作時XAR7=XAR7+2,指令重復時,地址后加。可用指令:
MAC P,loc16,*XAR7++ ; ACC = ACC + P << PM,P = [loc16] *
ProgSpace[*XAR7++]
DMAC ACC:P,loc32,*XAR7++ ; ACC=([loc32].MSW *
ProgSpace[*XAR7++].MSW)>>PM,
; P=([loc32].LSW *
ProgSpace[*XAR7++].MSW)>>PM
QMACL P,loc32,*XAR7++ ; ACC = ACC + P >> PM, P = ([loc32] *
ProgSpace[*XAR7++]) >> 32
IMACL P,loc32,*XAR7++ ; ACC = ACC + P, P = ([loc32] *
ProgSpace[*XAR7++]) << PM
字節尋址:
*+XARn[AR0],*+XARn[AR0],*+XARn[3位二進制立即數],32位地址為XARn+偏移量(AR0/AR1/3位二進制立即數),如果偏移量為偶數值,則訪問16位存儲器位置的低有效位,高有效位不變;如果為奇數,則訪問16位存儲器位置的高有效位,低有效位不變。其它所有尋址模式,只訪問訪問尋址位置的低有效位,不改變高有效位。可用指令:
MOVB AX.LSB,loc16 ; if( address mode == *+XARn[AR0/AR1/3bit] )
; if( offset == even )
; AX.LSB = [loc16].LSB;
; AX.MSB = 0x00;
; if( offset == odd )
; AX.LSB = [loc16].MSB;
; AX.MSB = 0x00;
; else
; AX.LSB = [loc16].LSB;
; AX.MSB = 0x00;
MOVB AX.MSB,loc16 ; if( address mode == *+XARn[AR0/AR1/3bit] )
; if( offset == even )
; AX.LSB = untouched;
; AX.MSB = [loc16].LSB;
; if( offset == odd )
; AX.LSB = untouched;
; AX.MSB = [loc16].MSB;
; else
; AX.LSB = untouched;
; AX.MSB = [loc16].LSB;
MOVB loc16,AX.LSB ; if( address mode == *+XARn[AR0/AR1/3bit] )
; if( offset == even )
; [loc16].LSB = AX.LSB
; [loc16].MSB = untouched;
; if( offset == odd )
; [loc16].LSB = untouched;
; [loc16].MSB = AX.LSB;
; else
; [loc16].LSB = AX.LSB;
; [loc16].MSB = untouched;
MOVB loc16,AX.MSB ; if( address mode == *+XARn[AR0/AR1/3bit] )
; if( offset == even )
; [loc16].LSB = AX.MSB
; [loc16].MSB = untouched;
; if( offset == odd )
; [loc16].LSB = untouched;
; [loc16].MSB = AX.MSB;
; else
; [loc16].LSB = AX.MSB;
; [loc16].MSB = untouched;
文章錄入:admin 責任編輯:admin
上一篇文章: TMS320F240與PC機串行通訊的設計
下一篇文章: TI F2812全系列開發板簡介
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -