找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5498|回復: 11
打印 上一主題 下一主題
收起左側(cè)

關于單片機movc指令的應用程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:450037 發(fā)表于 2019-1-13 15:41 來自觸屏版 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
不懂為什么要add a,r3,
       為什么要ADD   A,#6加這么對偏移量

Screenshot_20190113-153528.jpg (280.07 KB, 下載次數(shù): 23)

Screenshot_20190113-153528.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發(fā)
ID:94031 發(fā)表于 2019-1-13 16:03 | 只看該作者
add a,r3      把r3里的值加到累加器a里去。
ADD   A,#6  把直接數(shù)6加到累加器a里去。
和偏移量沒任何關系。
回復

使用道具 舉報

板凳
ID:7485 發(fā)表于 2019-1-13 18:24 | 只看該作者
MOVC  A,  @A+PC 本條指令是查表指令,也叫作:“程序存儲器讀指令”,要讀的值在“TAB3”表中!癙C”是當前(本條指令)代碼在程序存儲器中的位置,而TAB3表距離當前“PC”還有6個字節(jié)的距離,所以當前的“PC”值+6,才是TAB3的首字符位置。
回復

使用道具 舉報

地板
ID:401564 發(fā)表于 2019-1-13 20:38 | 只看該作者
因為表是DW      用兩個字節(jié)來放一個數(shù)據(jù),如果是DB就是直接計算偏移量
DW的話,是乘以2來計算的
回復

使用道具 舉報

5#
ID:467585 發(fā)表于 2019-1-13 21:31 | 只看該作者
MOVC  A,  @A+PC 本條指令是查表指令,也叫作:“程序存儲器讀指令”,要讀的值在“TAB3”表中!癙C”是當前(本條指令)代碼在程序存儲器中的位置,而TAB3表距離當前“PC”還有6個字節(jié)的距離,所以當前的“PC”值+6,才是TAB3的首字符位置。
回復

使用道具 舉報

6#
ID:450037 發(fā)表于 2019-1-14 00:00 來自觸屏版 | 只看該作者
ahshmj 發(fā)表于 2019-1-13 18:24
MOVC  A,  @A+PC 本條指令是查表指令,也叫作:“程序存儲器讀指令”,要讀的值在“TAB3”表中!癙C”是當 ...

為什么說TAB3的首地址距離PC有6個字節(jié)的距離啊?是怎么求出來的啊
回復

使用道具 舉報

7#
ID:450037 發(fā)表于 2019-1-14 00:01 來自觸屏版 | 只看該作者
Y_G_G 發(fā)表于 2019-1-13 20:38
因為表是DW      用兩個字節(jié)來放一個數(shù)據(jù),如果是DB就是直接計算偏移量
DW的話,是乘以2來計算的

請問ADDC  A,#06H它是怎么得出的?為什么是加6?
回復

使用道具 舉報

8#
ID:7485 發(fā)表于 2019-1-14 10:49 | 只看該作者
你看看從“MOVC  A,  @A+PC”這語句到“TAB3”之間有幾條指令(不含本語句)?這幾條指令的機器碼就是6個字節(jié)。

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

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

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

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

使用道具 舉報

9#
ID:401564 發(fā)表于 2019-1-14 19:01 | 只看該作者
zhangzhao2423 發(fā)表于 2019-1-14 00:01
請問ADDC  A,#06H它是怎么得出的?為什么是加6?

從“MOVC  A,  @A+PC”這個指令到“TAB3”之間有幾條指令,每條指令占用不同的空間,你得打開8051匯編指令看這幾條指令占用的空間,加在一起就是占用了6B,就是6個字節(jié)
這是一個非常應試教育的題目:一個酒杯的容積怎么計算,2B一樣的老師要告訴你,酒杯的高度,直徑,弧度之類,估計你還得用到微積分,說不定還算不出來。
實際上,把酒杯裝滿水,再稱水的重量就知道容量了。
明明有更好的方法,非得叫人用PC值,以為這樣就可以練習基本功什么之類的。
用PC值的缺點:你得對著8051匯編指令,慢慢找到你那條指令占用空間的大小,一條一條的加上去。這樣還不行,你還要看PC加上去不是大于255了,大于255了就不行,也就是說這個查表指令是不能隨便放的,你得把這指令放在前面。不然,PC值就會超過255了
用16位查表就什么都沒有了
一般來說盡量少用PC值這個計算
一般來說盡量少用匯編,能用C就盡量用C
回復

使用道具 舉報

10#
ID:450037 發(fā)表于 2019-1-14 22:29 來自觸屏版 | 只看該作者
Y_G_G 發(fā)表于 2019-1-14 19:01
從“MOVC  A,  @A+PC”這個指令到“TAB3”之間有幾條指令,每條指令占用不同的空間,你得打開8051匯編指 ...

師傅,能不能加我微信啊?zhangzhao2423,萬分感謝,有不懂請多多指教,我們是新人,求帶路
回復

使用道具 舉報

11#
ID:401564 發(fā)表于 2019-1-15 00:11 | 只看該作者
zhangzhao2423 發(fā)表于 2019-1-14 22:29
師傅,能不能加我微信?zhangzhao2423,萬分感謝,有不懂請多多指教,我們是新人,求帶路

匯編學個差不多就可以了,以后還是要用C多一點的
我也是一直用匯編,準備學C了
難不成你要用匯編??
回復

使用道具 舉報

12#
ID:450037 發(fā)表于 2019-1-15 07:03 來自觸屏版 | 只看該作者
Y_G_G 發(fā)表于 2019-1-15 00:11
匯編學個差不多就可以了,以后還是要用C多一點的
我也是一直用匯編,準備學C了
難不成你要用匯編??

二級C以前學校學的,還有一點點印象了。匯編我也學。我都學。先從匯編開始,F(xiàn)在想把單片機搞熟了,我剛接觸單片機不久。還請指教
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表