2016-07-05 93 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 –