Forum: Mikrocontroller und Digitale Elektronik Speicherstellen µC


von andi (Gast)


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.

: Verschoben durch User
von Peter R. (pnu)


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.

von andi (Gast)


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.

von Winfried (Gast)


Lesenswert?

Gibts keinen, der meine Hausaufgaben für mich macht? ;-)

Sinn solcher Aufgaben ist doch, dass du dich mal etwas in die Grundlagen 
einliest und das hast du offensichtlich noch nicht gemacht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.