2016-07-05 135 views
-3

我有左邊給出的代碼,並且詢問從0H ... 15H的地址中存儲了什麼。直到0AH來臨之前,我發現所有答案都非常簡單。我不知道'0D'或'08'或'FE'是從哪裏來的。 這裏是代碼:MC8051微控制器尋址

WERT equ 127 
    org 0    
MOV SP,#0FH 
CLR A 
MOV PSW,#0FFH 
ADDC A,#WERT 
ACALL UP 
SJMP $ 
UP: 
PUSH ACC 
PUSH PSW 
POP PSW 
POP ACC 
RET 

END 

什麼是從00h存儲到15H的物理內存的地址?我回答了所有的問題,直到0AH,我不知道如何能有80H。

Screenshot

+0

鏈接不要在這裏做任何好的事情,需要在問題中發佈問題,以便所有信息都在本網站上,而不是在其他地方可能以斷開的鏈接。 –

+0

我已將代碼放在文本中。希望你現在可以幫助我。對不起,我的英語不是最好的。 –

+0

@WeatherVane 8051堆棧增長。它也是哈佛架構,因此代碼和數據具有不同的地址空間,因此不會重疊。 – Jester

回答

2

你怎麼搞清楚前幾個字節?我假定你已經諮詢了一個指令集的參考。那麼你遇到的問題與你所問的價值有什麼關係?

操作碼ACALL11UP絕對地址爲0D,所以這就是你如何得到11 0D

類似地,對於SJMP操作碼是80和它使用相對的-2偏移量是十六進制FE跳回本身。 (偏移量適用於已增加的程序計數器。)

+0

非常感謝您的回答。 我在這裏有一張表,裏面寫着所有的字節,我們可以在我們的考試中加入。 我正在使用「MCU 8051 IDE來查看我的結果是否正確 答案你給了我幫助,但是我在哪裏獲得UP的絕對地址?我對此沒有任何線索,我很抱歉,我只是一個初學者所以請不要嘲笑我「哈哈」 非常感謝 –

+0

你一開始並不知道,所以發出一個佔位符'XX'並繼續組裝,一旦你到達'UP',你就會知道地址並可以回去填寫它。 – Jester

+1

OMG im感覺很愚蠢,所以我開始第一個按鍵,並注意到地址'0D',其中'UP'完全指向推動工作。 無論如何,很多謝謝我坐在這裏幾個小時試圖弄清楚。謝謝SIR –