80C51的定址方式中,為什麼立即定址對應的定址空間是ROM?

時間 2021-06-01 10:04:33

1樓:柯小西

我覺得是因為,立即定址的操作碼後面直接跟隨的就是立即數,也就是說,立即數和指令一起都是放在程式區的,所以,所涉及的定址空間就是ROM!

2樓:

你這個問題問錯了吧。

8051的內部memory空間可以分為:

64K ROM空間;

64K外部DATA空間;

128B或者256B內部DATA空間;

128B內部SFR空間;

128bit的內部DATA位空間;

128bit的內部SFR位空間;

這些空間都是通過指令的不同形式自動區分訪問的。

如果要定址到ROM空間(不算取指令),那只有MOVC A, @A+DPTR和 MOVC A, @A+PC這兩條指令。但是這兩條指令跟立即定址沒有什麼關係吧。

8051裡面有立即定址,直接定址,間接定址等說法。

本質上講,立即定址是指:指令中帶有乙個運算元,不需要通過memory訪問獲得此運算元。

直接定址是指:指令中直接給出乙個運算元的memory位址,指令解碼之後需要從該位址中取出運算元。

間接定址則是:指令中給出的位址是存放運算元的位址。解碼之後需要取兩次才可以獲得運算元。

(注:這裡的運算元是指指令執行時參與運算的資料,不是指令表現形式的code op1,op2)

3樓:雲天明

(ω)好吧我理解錯了我以為是直接定址沒想到題主問的是「立即數」

我記得都可以吧,就是形式不一樣,人家畢竟是哈佛結構的,和你們諾依曼結構的妖豔賤貨不一樣/滑稽

為什麼CFA中的 C 是Chartered而不是Certified?

Morgan 1.Statement of financial position 這個用詞是 USGAAP and IFRS的制定者考慮到資產負債表反應的不僅僅是乙個餘額,而更多的側重於企業的狀況,所以在大約2009年左右 具體時間記不清了,但是可以查到的 修改了這個表述方式。而非某一家美國公司的做...

為什麼我這樣使用C 中的initializer list,在g 可以得到輸出而在msvc中不可以?

機犬 std initializer list 這東西雖然是在庫里提供的,但實現完全看編譯器怎麼開洞,大部分情況下值都在棧上,G 可能會直接指向靜態儲存區,我就遇到過 VC 爆棧 G 沒事的情況,就當成有型別的 va list 用好了,常量或是比較大的容器初始化資料還是選 std array 吧。 ...

為什麼C 中的int限制長度,而Python中的int不限長度?

支援向量機 C int是記憶體順序排列的二進位制,在同一計算機編譯器下是定長的,常見的都是4位元組。而python的int是乙個類,不僅僅是一段記憶體資料,還有各種方法,屬性,最關鍵的是,它是變長的,如下所示 struct longobject PyObject VARHEAD說明int Py3中只...