標(biāo)題: 關(guān)于單片機(jī)查表指令的問(wèn)題 [打印本頁(yè)]

作者: zhangzhao2423    時(shí)間: 2019-1-18 22:23
標(biāo)題: 關(guān)于單片機(jī)查表指令的問(wèn)題
關(guān)于查表指令的問(wèn)題
第一:為什么開(kāi)始匯編程序給累加器是14的偏移量
第二:當(dāng)進(jìn)入Roop子程序時(shí),入棧累加器A,那么A是不是要加一,那么偏移量是不是就變成了15
第三:在比較指令不想等時(shí),累加器加一和地址指針?lè)謩e加一是什么意思,為什么要兩個(gè)都加一

Screenshot_20190117-203424.jpg (296.06 KB, 下載次數(shù): 40)

Screenshot_20190117-203424.jpg

作者: ahshmj    時(shí)間: 2019-1-19 08:49
從本條指令起,到TAB4表中間的各條指令的機(jī)器碼一共有14個(gè),所以是14
作者: ahshmj    時(shí)間: 2019-1-19 08:55
本帖最后由 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”這語(yǔ)句到“TAB3”之間有幾條指令(不含本語(yǔ)句)?這幾條指令的機(jī)器碼就是6個(gè)字節(jié)。

在沒(méi)有給“TAB3”指定位置的情況下,程序的機(jī)器碼是按先后順序存放燒寫的。

“PC”的值就是當(dāng)前語(yǔ)句的機(jī)器碼燒寫在程序存儲(chǔ)器中的地址。再加上6個(gè)字節(jié),就到“TAB3”的首地址了。

你可以打開(kāi)你的本工程目錄下,經(jīng)過(guò)編譯產(chǎn)生的*.lst文件看看便知。

根據(jù)你的提問(wèn),你現(xiàn)在理解這些還有一定的難度,如果你真心的想學(xué)、想掌握這門技術(shù),建議你還是扎扎實(shí)實(shí)的打好基礎(chǔ)。

有好幾個(gè)網(wǎng)友的回帖都講的非常詳細(xì)了,就是基礎(chǔ)再差也該看懂了。
這么詳細(xì)還是看不懂?
作者: ahshmj    時(shí)間: 2019-1-19 09:00
在看不懂你就別用這個(gè)指令了。用:

MOV   DPTR,  #TAB4
MOVC    A,   @A+DPTR

這個(gè)可以不用考慮偏移量。
作者: zhangzhao2423    時(shí)間: 2019-1-19 17:18
ahshmj 發(fā)表于 2019-1-19 08:49
從本條指令起,到TAB4表中間的各條指令的機(jī)器碼一共有14個(gè),所以是14

一個(gè)字節(jié)是一個(gè)機(jī)器碼嗎?我數(shù)的是12個(gè)機(jī)器碼,中間是不是有哪個(gè)是兩個(gè)機(jī)器碼的啊
作者: ahshmj    時(shí)間: 2019-1-20 08:01
zhangzhao2423 發(fā)表于 2019-1-19 17:18
一個(gè)字節(jié)是一個(gè)機(jī)器碼嗎?我數(shù)的是12個(gè)機(jī)器碼,中間是不是有哪個(gè)是兩個(gè)機(jī)器碼的啊

每條指令的機(jī)器碼不一定相同,有單字節(jié)的、兩字節(jié)的、三字節(jié)的。
作者: zhangzhao2423    時(shí)間: 2019-1-20 10:05
ahshmj 發(fā)表于 2019-1-20 08:01
每條指令的機(jī)器碼不一定相同,有單字節(jié)的、兩字節(jié)的、三字節(jié)的。

我想請(qǐng)問(wèn)一下,它這個(gè)機(jī)器碼怎么算的啊
MOV  R2,DPH和MOV R3,DPL分別占用幾個(gè)字節(jié)
MOV   R2,#00H和MOV  R3,#00H分別占用幾個(gè)字節(jié)啊?我算出來(lái)不止14個(gè)機(jī)器碼了
作者: ahshmj    時(shí)間: 2019-1-20 18:41
第一問(wèn):
   操作內(nèi)容:Rn←(direct),(n=0~7)
    字節(jié)數(shù): 2
    機(jī)器周期:2
第二問(wèn):
    操作內(nèi)容:Rn←data,(n=0~7)
    字節(jié)數(shù): 2
    機(jī)器周期:1

你問(wèn)的4條指令全是2字節(jié)。


作者: zhangzhao2423    時(shí)間: 2019-1-21 07:11
ahshmj 發(fā)表于 2019-1-20 18:41
第一問(wèn):
   操作內(nèi)容:Rn←(direct),(n=0~7)
    字節(jié)數(shù): 2

你好前輩,如果給寄存器的算兩個(gè)字節(jié)的話,那么我從查表指令數(shù)下來(lái)就有16個(gè)偏移量啦,這還是不對(duì)啊??




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1