www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Speicherstellen µC


Autor: andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Peter R. (pnu)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Winfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.