代碼如下:
MOV DPTR,#TAB ;置分支入口地址表首址
MOV A,R7 ; 分支轉(zhuǎn)移序號(hào)送A
ADD A,R7 ;分支轉(zhuǎn)移序號(hào)乘以2
MOV R3,A ;暫存人R3
MOVC A,@A+DPTR ;處理程序入口地址的低8位暫存入R3// ?問題所在,這個(gè)怎么就是把低八位存入呢
XCH A,R3
INC A
MOVC A,@A+DPTR ;處理程序入口地址的低8位送入DPL// ?這個(gè)一樣道理??
MOV DPL,A
MOV DPH,R3 ;處理程序入口地址的高8位送入DPH
CLR A ;累加器清零
……
……
MOVC A,@A+DPTR ;處理程序入口地址的低8位暫存入R3//
?問題所在,這個(gè)怎么就是把低八位存入呢
解答:
DPTR 是一個(gè)16位的索引寄存器,比較特殊.它由 DPH(高字節(jié)) 與 DPL(低字節(jié)) 組合而成.----沒有它,就無法直接或間接訪問 64K 的內(nèi)部或外部的地址空間!
通常,我們對(duì) DPTR 進(jìn)行直接賦值,可以直接給它最大 65535 的數(shù)據(jù)(16BIT).但是,如果我們通過其它寄存器(或 A))間接賦值時(shí),由于這些寄存器只有 8 位,因此,這種操作總是把這個(gè) 8 位存入到 DPL 去.
就象一臺(tái)汽車可以裝載 8 噸物資,但是,你每次只能運(yùn)送 100 公斤物資給它,不能一下子滿載.
存入--寫入--賦值---拷貝到----移動(dòng)到----.....都代表相同意思,就是把一個(gè)數(shù)據(jù)放入去某個(gè)寄存器.
某些情況下,也可以把 DPTR 作為一個(gè) 16 位或 2 個(gè) 8 位通用臨時(shí)寄存器來使用.----但是必須掌握清楚使用條件,不能有沖突!否則會(huì)影響到程序運(yùn)行.
僅供參考!
| 歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |