找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3338|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

關(guān)于單片機(jī)機(jī)器指令與匯編指令的一些規(guī)則

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:266429 發(fā)表于 2018-4-25 11:48 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 慢慢思考 于 2018-4-27 08:59 編輯

     51單片機(jī)為8位機(jī),所以其機(jī)器指令最多只能有256條。每一條機(jī)器指令在芯片內(nèi)對(duì)應(yīng)著一套硬件實(shí)現(xiàn)電路以達(dá)到快速運(yùn)行的目的。
    匯編指令是依據(jù)機(jī)器指令而編制的計(jì)算機(jī)編程語(yǔ)言,但我們?cè)谥噶畋碇锌梢钥闯鏊鼈儾⒉皇且灰粚?duì)應(yīng)關(guān)系,所以有匯編指令111條而機(jī)器指令為255條的說(shuō)法。如”MOV A,Rn是一條匯編指令,但對(duì)應(yīng)的就是8個(gè)Rn均有不同的機(jī)器指令也即其對(duì)應(yīng)8條機(jī)器指令,這8條機(jī)器指令同樣也是各自對(duì)應(yīng)一套硬件電路。
   因此,在機(jī)器指令表中查不到的動(dòng)作,你想實(shí)現(xiàn)就得自己編程,用已有的機(jī)器指令運(yùn)行多次后來(lái)實(shí)現(xiàn)。
   不要認(rèn)為助記符本身就是匯編語(yǔ)言中的命令,”MOV A,R0寫(xiě)全了才是一條完整的命令,什么叫完整?這條語(yǔ)句的執(zhí)行全部是芯片里的硬件實(shí)現(xiàn),所以它只有一個(gè)時(shí)鐘周期就執(zhí)行完了,它獨(dú)占著一個(gè)機(jī)器指令。
    對(duì)于SETB bit位操作,在這里面,SETB是一條完整的命令,它對(duì)應(yīng)著一條機(jī)器指令,所以它先執(zhí)行這條機(jī)器指令,然后再去處理bit;我們?cè)倏?/font>SETB C,它也是位操作,但在這里就不能把SETB看作一條完整的指令,它與C合起來(lái)才是一條完整的指令,所以我們?cè)谥噶畋碇锌吹剿鼏为?dú)對(duì)應(yīng)一條機(jī)器指令,執(zhí)行周期是一個(gè)時(shí)鐘周期,而SETB bit是兩個(gè)時(shí)鐘周期,這樣設(shè)計(jì)的目的不說(shuō)自明。
    前面說(shuō)過(guò),八位機(jī)機(jī)器指令最多只能做到256條,所以我們看到有些類(lèi)匯編指令可以對(duì)R0、R1進(jìn)行操作而對(duì)其它Rn不能操作,就是這個(gè)數(shù)量限制的原因,包括上面例子中說(shuō)的位操作未能都按SETB C的規(guī)格做成一條機(jī)器指令,也是同樣的原因。
    結(jié)論:所以學(xué)匯編一定要熟悉了解機(jī)器指令。
    擴(kuò)展指令是怎么擴(kuò)展的,沒(méi)研究過(guò)。16位機(jī)理論上可以做到更多,但是,因?yàn)?/font>16位而可能會(huì)影響速度。
    以上所說(shuō)僅供參考,我所看的書(shū)上沒(méi)有細(xì)說(shuō),也不知對(duì)不對(duì)。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:290266 發(fā)表于 2018-4-26 02:46 | 只看該作者
著是個(gè)值得思考的問(wèn)題
回復(fù)

使用道具 舉報(bào)

板凳
ID:7485 發(fā)表于 2018-4-26 08:59 | 只看該作者
每條匯編指令可以編譯成 1個(gè)字節(jié)、2個(gè)字節(jié)或3個(gè)字節(jié)的機(jī)器碼,所以匯編指令數(shù)不可能等于機(jī)器碼數(shù)。
回復(fù)

使用道具 舉報(bào)

地板
ID:266429 發(fā)表于 2018-4-27 09:09 | 只看該作者
    匯編指令數(shù)少于機(jī)器指令數(shù)的原因,是匯編語(yǔ)言的編制者在編制時(shí)對(duì)機(jī)器指令進(jìn)行了歸類(lèi)。這種歸類(lèi)自有其合理性,但卻未對(duì)其進(jìn)行充分的說(shuō)明,如果我們不看機(jī)器指令或是看了后不分析,真的會(huì)讓人對(duì)匯編指令犯迷糊,所以,如果我們說(shuō)匯編指令也是255條而與機(jī)器指令一一對(duì)應(yīng),那許多不好理解的地方立即就明白了。
回復(fù)

使用道具 舉報(bào)

5#
ID:111634 發(fā)表于 2018-4-28 12:00 | 只看該作者
你想說(shuō)明什么問(wèn)題?什么叫充分說(shuō)明?充分到什么程度?對(duì)不同基礎(chǔ)的人來(lái)講,“充分”的標(biāo)準(zhǔn)是不同的。明
回復(fù)

使用道具 舉報(bào)

6#
ID:318397 發(fā)表于 2018-4-28 13:37 | 只看該作者
說(shuō)得對(duì)
回復(fù)

使用道具 舉報(bào)

7#
ID:266429 發(fā)表于 2018-5-4 08:41 | 只看該作者
zl2168 發(fā)表于 2018-4-28 12:00
你想說(shuō)明什么問(wèn)題?什么叫充分說(shuō)明?充分到什么程度?對(duì)不同基礎(chǔ)的人來(lái)講,“充分”的標(biāo)準(zhǔn)是不同的。明

    的確,充分的標(biāo)準(zhǔn)是不同的。
    目前單片機(jī)有關(guān)匯編語(yǔ)言的教材中,有些問(wèn)題沒(méi)說(shuō)清楚,這會(huì)導(dǎo)致學(xué)習(xí)難度加大,如有關(guān)Ri一說(shuō),只說(shuō)了是這樣,但沒(méi)說(shuō)為什么這樣,然后我們就只能死記。類(lèi)似的情況還有一些。
    還有,有關(guān)對(duì)偽指令的解釋?zhuān)戳艘恍⿻?shū)都是不全面的,它并非如書(shū)中所說(shuō)是標(biāo)記,而是燒寫(xiě)工具在燒寫(xiě)程序時(shí)用的,如ORG,燒寫(xiě)工具會(huì)根據(jù)這個(gè)指令后面的數(shù)據(jù),在程序存儲(chǔ)器的第一個(gè)位置寫(xiě)入跳轉(zhuǎn)指令,再按這個(gè)數(shù)據(jù)所指地址處開(kāi)始燒寫(xiě)所有程序;END的作用是讓燒寫(xiě)工具知道所有程序已經(jīng)寫(xiě)完了,然后燒寫(xiě)工具據(jù)此作一些處理比如說(shuō)在程序末尾寫(xiě)入機(jī)器約定的結(jié)束機(jī)器指令、向用戶(hù)發(fā)出燒寫(xiě)結(jié)束后的一些信息等等。據(jù)此,個(gè)人認(rèn)為稱(chēng)其為“偽指令”不太合適,可以稱(chēng)為“燒寫(xiě)指令”。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表