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