Anfängerfragen - Assambler



  • Hallo,

    in der Schule haben wir geraden angefangen mit Assambler.

    Wir lerne gerade die 8051er Befehle, also die vom Mikroprozessor(controller) 8051(80C51).

    Bsp:

    Die Frage ist: Welchen Wert hat A?

    Gegeben ist:
    1 - 10 im internen RAM = 0
    11 - 20 = 1

    MOV R3, #5 ; hier wird die Zahl 5 in R3 gespeichert
    MOV R1, 17 ; hier wird der Inhalt(im dem Fall 1 -> siehe oben) in R1 kopiert bzw. gespeichert
    MOV A, @R1 ; das verstehe ich nun nicht ganz... der Inhalt von R1 ist 1, wäre das @ nicht da wäre auch A 1, aber das @ ist nun mal hier. Was tut den dieser Befehl mit dem @ genau?
    

    Und was ist mit externer Datenspeicher(externes RAM?) oder interne Datenspeicher(internes RAM?) gemeint? Gibt es interne und externe Programmspeicher, oder einfach nur Programmspeicher?

    Was ist den der genaue Unterschied zwischen Datenspeicher und Programmspeicher?

    mfg Spider



  • Naja, es gibt ja nun mehrere Möglichkeiten:

    Handy klarmachen, Mitschüler fragen, kann man sogar Freunde finden.
    Handy klarmachen, LehrerIn anrufen, fragen, was überhört worden ist, dann weiß LehrerIn vermutlich gleich ein bißchen besser, wo die wahren Lücken sind.
    Selbernachdenken, macht nicht unbedingt dümmer:
    Z.B. Wieviel unterschiedliche Möglichkeiten gibt es?

    A ist wenn...->Tabelle machen.

    Oder bei einer Internetsuchmaschinenseite wie www.google.de oder www.metager.de könnte man ein Suchwort eingeben, oder man schaut bei einem Internetkatalog wie dmoz.org per Sucheingabe vorbei und schaut sich dort nach brauchbaren gelinkten Seiten um.
    Viel Spaß 😉



  • ja ja, Lehrer Anrufen ... und dann noch um die Uhrzeit!



  • Assembler richtig schreiben wäre auch schon mal ein Schritt in die richtige Richtung. 😉



  • http://mcls-modular.de/DE/helpsys/t_as2.htm

    MOV A,@Ri
    Lade den Akkumulator mit dem Inhalt der internen Speicherzelle , die durch Ri adressiert wird.

    Beachte dazu noch:

    Ri - Register (R0 oder R1) der aktuellen Registerbank



  • Ah ok, jetzt versteh ich es.

    Danke! 🙂

    Nun ein kniffigleres Bsp :):
    1 Byte soll von Programmspeicher(4000hex) auf den externen Datenspeicher(6000hex) übertragen werden.

    Ich kapier die Aufgabenstellung nicht...

    Steht im Programmspeicher jetzt die Zahl 4000hex? Und im externen Datenspeicher 6000hex?

    Bitte erklärt mir genau die Aufgabenstellung, wäre euch sehr dankbar 🙂



  • Die Frage ist doch eher die, welche Befehle gibt es, um einen Speicherinhalt von A nach B zu befördern?
    (oder was macht man, wenn man eine CD gebrannt hat, und die kleine Schwester die CD bei einem Kumpel vorbeibringen soll?)



  • ( 0x = Hex )
    Speicheradresse: 0x4000 Wert an der Adresse: A ( A = 1 Byte groß )
    Speicheradresse: 0x6000 Wert an der Adresse: Hier steht noch nix

    mov register,[0x4000]   ;Der Wert an Speicheradresse 0x4000
                            ;Soll in Register geschoben werden
                            ; Ka welche Register es alle bei deinem 
                            ; Prozessor gibt deswegen habe ich geschrieben
                            ; register^^
    mov [0x6000],register
    

    Ok schauen wir uns nochmal die Speicheradresse an:
    Speicheradresse: 0x4000 Wert an der Adresse: A ( A = 1 Byte groß )
    Speicheradresse: 0x6000 Wert an der Adresse: A

    An Speicheradresse 0x6000 ist jetzt das A zu finden.

    Ich kenne zwar nicht diesen 8051 Mikroprozessor.
    Aber ich denke das was ich geschrieben haben sollte in etwas passen.



  • mover schrieb:

    Ich kenne zwar nicht diesen 8051 Mikroprozessor.
    Aber ich denke das was ich geschrieben haben sollte in etwas passen.

    Leider geht es aber hier genau um den Unterschied zwischen Programmspeicher
    (4000hex) auf den externen Datenspeicher ...

    Goggle meint dazu 😉

    Standard-8051-Architektur nutzt Read-Only-Memory-Chip fuer Programmcode und
    Flashspeicher fuer Daten. Getrennter Zugriff durch drei Leitungen: PSEN
    (Program Store Enable) und RD, WR fuer Datenspeicher.

    PSEN und RD/WR werden durch zwei verschiedene Varianten des MOV-Maschinenbefehls
    gesteuert: MOVC fuer Code und MOVX fuer externen Datenspeicher.


Anmelden zum Antworten