標(biāo)題: 關(guān)于單片機(jī)機(jī)器指令與匯編指令的一些規(guī)則 [打印本頁]
作者: 慢慢思考 時間: 2018-4-25 11:48
標(biāo)題: 關(guān)于單片機(jī)機(jī)器指令與匯編指令的一些規(guī)則
本帖最后由 慢慢思考 于 2018-4-27 08:59 編輯
51單片機(jī)為8位機(jī),所以其機(jī)器指令最多只能有256條。每一條機(jī)器指令在芯片內(nèi)對應(yīng)著一套硬件實(shí)現(xiàn)電路以達(dá)到快速運(yùn)行的目的。
匯編指令是依據(jù)機(jī)器指令而編制的計算機(jī)編程語言,但我們在指令表中可以看出它們并不是一一對應(yīng)關(guān)系,所以有匯編指令111條而機(jī)器指令為255條的說法。如”MOV A,Rn”是一條匯編指令,但對應(yīng)的就是8個Rn均有不同的機(jī)器指令也即其對應(yīng)8條機(jī)器指令,這8條機(jī)器指令同樣也是各自對應(yīng)一套硬件電路。
因此,在機(jī)器指令表中查不到的動作,你想實(shí)現(xiàn)就得自己編程,用已有的機(jī)器指令運(yùn)行多次后來實(shí)現(xiàn)。
不要認(rèn)為助記符本身就是匯編語言中的命令,”MOV A,R0”寫全了才是一條完整的命令,什么叫完整?這條語句的執(zhí)行全部是芯片里的硬件實(shí)現(xiàn),所以它只有一個時鐘周期就執(zhí)行完了,它獨(dú)占著一個機(jī)器指令。
對于SETB bit位操作,在這里面,SETB是一條完整的命令,它對應(yīng)著一條機(jī)器指令,所以它先執(zhí)行這條機(jī)器指令,然后再去處理bit;我們再看SETB C,它也是位操作,但在這里就不能把SETB看作一條完整的指令,它與C合起來才是一條完整的指令,所以我們在指令表中看到它單獨(dú)對應(yīng)一條機(jī)器指令,執(zhí)行周期是一個時鐘周期,而SETB bit是兩個時鐘周期,這樣設(shè)計的目的不說自明。
前面說過,八位機(jī)機(jī)器指令最多只能做到256條,所以我們看到有些類匯編指令可以對R0、R1進(jìn)行操作而對其它Rn不能操作,就是這個數(shù)量限制的原因,包括上面例子中說的位操作未能都按SETB C的規(guī)格做成一條機(jī)器指令,也是同樣的原因。
結(jié)論:所以學(xué)匯編一定要熟悉了解機(jī)器指令。
擴(kuò)展指令是怎么擴(kuò)展的,沒研究過。16位機(jī)理論上可以做到更多,但是,因?yàn)?/font>16位而可能會影響速度。
以上所說僅供參考,我所看的書上沒有細(xì)說,也不知對不對。
作者: 51hei小明 時間: 2018-4-26 02:46
著是個值得思考的問題
作者: ahshmj 時間: 2018-4-26 08:59
每條匯編指令可以編譯成 1個字節(jié)、2個字節(jié)或3個字節(jié)的機(jī)器碼,所以匯編指令數(shù)不可能等于機(jī)器碼數(shù)。
作者: 慢慢思考 時間: 2018-4-27 09:09
匯編指令數(shù)少于機(jī)器指令數(shù)的原因,是匯編語言的編制者在編制時對機(jī)器指令進(jìn)行了歸類。這種歸類自有其合理性,但卻未對其進(jìn)行充分的說明,如果我們不看機(jī)器指令或是看了后不分析,真的會讓人對匯編指令犯迷糊,所以,如果我們說匯編指令也是255條而與機(jī)器指令一一對應(yīng),那許多不好理解的地方立即就明白了。
作者: zl2168 時間: 2018-4-28 12:00
你想說明什么問題?什么叫充分說明?充分到什么程度?對不同基礎(chǔ)的人來講,“充分”的標(biāo)準(zhǔn)是不同的。明
作者: ohou524 時間: 2018-4-28 13:37
說得對
作者: 慢慢思考 時間: 2018-5-4 08:41
的確,充分的標(biāo)準(zhǔn)是不同的。
目前單片機(jī)有關(guān)匯編語言的教材中,有些問題沒說清楚,這會導(dǎo)致學(xué)習(xí)難度加大,如有關(guān)Ri一說,只說了是這樣,但沒說為什么這樣,然后我們就只能死記。類似的情況還有一些。
還有,有關(guān)對偽指令的解釋,看了一些書都是不全面的,它并非如書中所說是標(biāo)記,而是燒寫工具在燒寫程序時用的,如ORG,燒寫工具會根據(jù)這個指令后面的數(shù)據(jù),在程序存儲器的第一個位置寫入跳轉(zhuǎn)指令,再按這個數(shù)據(jù)所指地址處開始燒寫所有程序;END的作用是讓燒寫工具知道所有程序已經(jīng)寫完了,然后燒寫工具據(jù)此作一些處理比如說在程序末尾寫入機(jī)器約定的結(jié)束機(jī)器指令、向用戶發(fā)出燒寫結(jié)束后的一些信息等等。據(jù)此,個人認(rèn)為稱其為“偽指令”不太合適,可以稱為“燒寫指令”。
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |