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

QQ登錄

只需一步,快速開始

搜索
查看: 2796|回復(fù): 7
收起左側(cè)

匯編指令的數(shù)據(jù)轉(zhuǎn)移為什么總是要經(jīng)過(guò)累加器A

[復(fù)制鏈接]
ID:1003481 發(fā)表于 2022-7-17 21:50 | 顯示全部樓層 |閱讀模式
我看到匯編語(yǔ)言在轉(zhuǎn)移數(shù)據(jù)的時(shí)候很多地方都要經(jīng)過(guò)累加器A,什么情況下必須要經(jīng)過(guò)A來(lái)中轉(zhuǎn)之后才能賦值呢?可不可以跳過(guò)A直接對(duì)特定的地址賦值呢?

圖1

示例程序1

示例程序1

上面這個(gè)程序的紅圈部分可不可以改成:
MOV 30H, DPH
MOV 31H, DPL


圖2

示例程序2

示例程序2

還有上圖的程序,可不可以改成:
MOV DPTR, #4000H
MOVX 40H, @DPTR





回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2022-7-18 01:29 來(lái)自觸屏版 | 顯示全部樓層
標(biāo)準(zhǔn)a51指令的話,圖一的可以,圖二的不可以。 為什么很多轉(zhuǎn)移需要經(jīng)過(guò)A寄存器,是因?yàn)楹芏嗖僮,都只有?duì)于a寄存器的操作指令。
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2022-7-18 02:12 | 顯示全部樓層
本帖最后由 Hephaestus 于 2022-7-18 02:18 編輯

這就是CISC和RISC體系的區(qū)別了,CISC圍繞著一個(gè)ACC來(lái)運(yùn)轉(zhuǎn),RISC圍繞一堆寄存器文件來(lái)運(yùn)轉(zhuǎn),并不需要經(jīng)過(guò)ACC。早期RISC并沒(méi)有普及就是因?yàn)檫@種體系要用到的內(nèi)存是CISC的120~150%,而內(nèi)存非常昂貴。同樣道理,樓主的代碼可以運(yùn)行,但是你看看你編譯成的機(jī)器碼要比通過(guò)ACC的大得多,執(zhí)行時(shí)間也要慢,現(xiàn)在內(nèi)存便宜這么做也可以,但是內(nèi)存利用率和時(shí)間效率都比較差。對(duì)于某個(gè)應(yīng)用這么做看不出什么差異,但一個(gè)大型程序的性能就是這么多細(xì)節(jié)累積出來(lái)的。
沒(méi)仔細(xì)看,MOVX 40H, @DPTR 其實(shí)是非法指令,無(wú)法編譯通過(guò)的。
回復(fù)

使用道具 舉報(bào)

ID:827243 發(fā)表于 2022-7-18 08:50 | 顯示全部樓層
Hephaestus 發(fā)表于 2022-7-18 02:12
這就是CISC和RISC體系的區(qū)別了,CISC圍繞著一個(gè)ACC來(lái)運(yùn)轉(zhuǎn),RISC圍繞一堆寄存器文件來(lái)運(yùn)轉(zhuǎn),并不需要經(jīng)過(guò)ACC ...

正解,這就是為什么不同的CPU都有不同匯編指令, 需要你去研讀這些指令文檔,了解每條指令的用法,而不能想當(dāng)然的寫出 MOVX 40H, @DPTR, 這指令51系列的CPU就不支持。 這也是為什么要學(xué)習(xí)C語(yǔ)言的原因,C語(yǔ)言對(duì)不同CPU來(lái)說(shuō),相對(duì)都一樣,只是通過(guò)不同的編譯器編譯為不同CPU的匯編代碼,使用起來(lái)就比較方便了,不用考慮CPU的不同匯編指令。
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2022-7-18 12:22 | 顯示全部樓層
圖一是可以的
你參考答案的圖片上的匯編代碼,一般這種的是學(xué)過(guò)C的,也不怎么研究匯編,大多就是參考Keil編譯出來(lái)的代碼修改的以下是一個(gè)C代碼編譯后的匯編代碼
你看圖片中對(duì)R6,R7的操作就知道了,實(shí)際上是可以直接操作的,但卻要通過(guò)A來(lái)操作
51hei截圖20220718120803.png
這個(gè)只是8051的匯編系統(tǒng)是這樣子的而已,并不是所有的匯編都支持寄存器之間數(shù)據(jù)直接傳送的,主要是半導(dǎo)體制造成本限制
圖二是不行的,至于原因就是8051的匯編系統(tǒng)就是這么規(guī)定的

回復(fù)

使用道具 舉報(bào)

ID:121859 發(fā)表于 2022-7-18 14:35 | 顯示全部樓層
A累加器就好比交通樞紐,南來(lái)北往東去西來(lái)都得經(jīng)過(guò)這里,所以大部分指令都需要借助這個(gè)樞紐到達(dá)彼岸。
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2022-7-18 18:02 | 顯示全部樓層
zhxiufan 發(fā)表于 2022-7-18 14:35
A累加器就好比交通樞紐,南來(lái)北往東去西來(lái)都得經(jīng)過(guò)這里,所以大部分指令都需要借助這個(gè)樞紐到達(dá)彼岸。

所以人們發(fā)明了RISC體系扔掉這個(gè)造成交通擁堵的“交通樞紐”。
回復(fù)

使用道具 舉報(bào)

ID:195496 發(fā)表于 2022-7-20 09:14 | 顯示全部樓層
這個(gè)問(wèn)題涉及內(nèi)核的設(shè)計(jì)與實(shí)現(xiàn),不是簡(jiǎn)單一句話就可以更改的
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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