2016-07-05 13 views
-3

Ich habe den Code auf der linken Seite gegeben und ich werde gefragt, was in den Adressen von 0H ... 15H gespeichert ist. Ich fand es sehr einfach alle Antworten bis 0AH kam. Ich habe keine Ahnung, woher die "0D" oder "08" oder "FE" kommen. hier ist der Code:MC8051 Microcontroller Adressierung

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 

Was in den Adressen des physikalischen Speichers ist von 00h bis 15h gespeichert? Ich habe alle bis 0AH beantwortet, ich habe keine Ahnung, wie es eine 80H geben kann.

Screenshot

+0

Links tun uns hier nicht gut, müssen das Problem in der Frage, so dass alle Informationen auf dieser Website und nicht an anderen Stellen, die in defekten Links enden können . –

+0

Ich habe den Code in Text eingegeben. Ich hoffe du kannst mich jetzt hüpfen. Entschuldigung mein Englisch ist nicht am besten. –

+0

@ WeatherVane 8051 Stack wächst auf. Es ist auch Harvard-Architektur, also haben Code und Daten unterschiedliche Adressräume, also keine Überlappung. – Jester

Antwort

2

Wie Sie die ersten paar Bytes herauszufinden haben? Ich nehme an, Sie haben einen Hinweis auf einen Anweisungssatz konsultiert. Welches Problem sind Sie mit den Werten begegnet, nach denen Sie fragen?

Der Opcode für ACALL ist 11, die absolute Adresse von UP ist 0D, so das ist, wie Sie 11 0D bekommen.

ähnlich der Opcode für SJMP ist 80 und springt zurück zu sich selbst mit einem relativen Versatz von -2 verwendet, die in FE hex ist. (Der Offset gilt für den bereits inkrementierten Programmzähler.)

+0

Vielen Dank für Ihre Antwort. Ich habe eine Tabelle hier vor mir, in die alle Bytes geschrieben sind, und wir können sie in unsere Prüfung aufnehmen. Ich benutze die "MCU 8051 IDE, um zu sehen, ob meine Ergebnisse korrekt sind. Die Antwort, die du mir gegeben hast, half, aber wo bekomme ich die absolute Adresse von UP? Ich habe keine Ahnung. Es tut mir leid, ich bin nur ein Anfänger in diesem Also bitte nicht über mich lachen "Haha". Vielen Dank nochmal. –

+0

Sie wissen es nicht zuerst, also emittieren Sie einen Platzhalter 'XX' und fahren Sie mit der Montage fort. Sobald Sie die' UP' erreichen, werden Sie die Adresse kennen und kann zurückgehen, um es zu füllen. – Jester

+1

OMG ich fühle mich so dumm, so so begann ich das erste PUSH und bemerkte die Adresse '0D' wo' UP' unbedingt zeigen muss, um zur Arbeit zu drücken. trotzdem vielen Dank ich sitze hier für ungefähr Stunden versuchen, es herauszufinden. Danke SIR –