|
本帖最后由 ahshmj 于 2019-1-19 14:08 編輯
上次在你的另外的一個(gè)帖子里已經(jīng)告訴你了:“
MOVC A, @A+PC 本條指令是查表指令,也叫作:“程序存儲(chǔ)器讀指令”,要讀的值在“TAB3”表中!癙C”是當(dāng)前(本條指令)代碼在程序存儲(chǔ)器中的位置,而TAB3表距離當(dāng)前“PC”還有6個(gè)字節(jié)的距離,所以當(dāng)前的“PC”值+6,才是TAB3的首字符位置!
你看看從“MOVC A, @A+PC”這語句到“TAB3”之間有幾條指令(不含本語句)?這幾條指令的機(jī)器碼就是6個(gè)字節(jié)。
在沒有給“TAB3”指定位置的情況下,程序的機(jī)器碼是按先后順序存放燒寫的。
“PC”的值就是當(dāng)前語句的機(jī)器碼燒寫在程序存儲(chǔ)器中的地址。再加上6個(gè)字節(jié),就到“TAB3”的首地址了。
你可以打開你的本工程目錄下,經(jīng)過編譯產(chǎn)生的*.lst文件看看便知。
根據(jù)你的提問,你現(xiàn)在理解這些還有一定的難度,如果你真心的想學(xué)、想掌握這門技術(shù),建議你還是扎扎實(shí)實(shí)的打好基礎(chǔ)。
有好幾個(gè)網(wǎng)友的回帖都講的非常詳細(xì)了,就是基礎(chǔ)再差也該看懂了。
這么詳細(xì)還是看不懂? |
|