Speicherstellen µC

Gast #1945269
Lesenswert?
• ▲
▼
hallo,
ich bin kompletter µC neuling und habe eine frage.

Ich möchte in 20 speicherstellen (werden zuerst mit 20 byte allociert). 
20 zahlen reinschreiben (von 19 -0).
Ich verwende die Loop funktion und den Befehl JNZ (Jump not zero). Ich 
weis jz aber nicht wie ich das umsetzten soll welche werte nehm ich bei 
den 20 speicherstellen??. und das ganze soll indirekt adressiert werden 
mithilfe eines Registers.
#1945456
Lesenswert?
• ▲
▼
Zunächst einmal die Kristallkugel:

Da JNZ auftaucht, scheint es sich um einen 8051-Kontroller zu handeln.

Der Rest, eventuell ungenau, da nur aus dem Gedächtnis:

Da gibt es im Befehlsvorrat des Kontrollers einen Befehl  MOV @r0,A
und als Gegenbefehl ein MOV A,@r0
Der lässt sichh für diesen Zweck prima verwenden.

R0 mit max. Zahl (20) laden
schleife:

akku mit Datenwort laden
MOV @ro,a
djnz r0, schleife


bringt 20 Zahlen in die Speicherplätze des RAM, mit Adresse 20..1

Aber Achtung, das RAM wird auch vom Stack benutzt, da kann es zur 
Überlappung kommen.
Gast #1945647
Lesenswert?
• ▲
▼
danke für die schnelle antwort

ja der befehl MOV @R0,A ist genau der den ich brauche. Bei diesem befehl 
wird der inhalt des akkus ja in die Adresse geladen auf die R0 zeigt 
(stimmt das so)???

was mir einfach nicht eingeht is, von wo bis wo geht das Register R0?
ich habe ja R0-R7 zur verfügung. wie kann ich dann bei R0 20 
speicherstellen ansprechen und wie definiere ich das?

Hier die angabe für klares Verständnis

Verwenden Sie 20 Byte des Internen RAM des Prozessors um die folgenden 
Aufgaben zu losen.
{ Schreiben Sie in die 20 Speicherstellen (S) Zahlen absteigend von 19. 
Verwenden Sie die
indirekte Adressierung mit Hilfe eines Registers. Legen Sie am Anfang 
fest welche Register
und Speicherstellen verwendet werden mussen bzw. konnen. Verwenden Sie 
eine Schleife
zum Weitergehen von Speicherstelle zu Speicherstelle. Verwenden Sie JNZ 
als Sprungbefehl.
{ Nehmen Sie an, die 20 Speicherstellen sind 8 Bit Netzwerkadressen. 
Verwenden Sie die 20
Speicherstellen (S) um sie mit der Subnetzmaske 0xF0 zu maskieren und 
wieder auf die
Speicherstelle zu Schreiben. Legen Sie am Anfang fest welche Register 
und Speicherstellen
verwendet werden mussen bzw. konnen. Verwenden Sie JNZ als 
Sprungbefehl.
{ Finden Sie mit Hilfe einer Schleife jene Speicherstelle in S an der 
die Adressen des Subnetzes
1 beginnen. Speichern Sie die Adresse an der Stelle S1.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.