Assembler umständliche Auswertung

Dieses Thema im Forum "Informatik" wurde erstellt von perceptron, 17 Juni 2007.

  1. Hallo,

    ich arbeite gerade bei den MIKR das LM2 durch. Bei einem Assemblerbeispiel soll festegestellt werden, ob eine Speicherstelle kleiner, gleich oder größer 5 ist. Dazu wird der Speicher um 5 verkleinert, und das Z-Bit ausgelesen, welches aussagt ob der Wert kleiner, gleich oder größer Null ist.
    Ich finde das ein bischen umständlich, weshalb kann man da nicht direkt abfragen ob der Wert kleiner, gleich oder größer 5 ist?

    Mir ist auch aufgefallen dass manchmal bei den Befehlen die Version mit dem I(Immediately) verwendet wird, z.B. MVI statt einfach MOV, oder CPI statt CMP. Würde das mit dem jeweils anderen Befehl nicht funktionieren?

    Woher weiß ich wann ich welche Variante benutzen muss?

    Mfg, Martin.
     
  2. AW: Assembler umständliche Auswertung

    HI!

    Mit welchem Befehl aus dem gegebenen Befehlssatz?

    cu
    Volker
     
  3. AW: Assembler umständliche Auswertung

    Hallo,

    Es wäre schön, wenn du uns noch die Information geben würdest, um welche Art Assembler es sich handeln soll (Prozessortyp).
     
  4. AW: Assembler umständliche Auswertung

    Z.B. mit dem Befehlt CJNE --> CompareJumpNotEqual
    Springe wenn der Wert nicht gleich dem anderen Wert ist.

    Es handelt sich übrigens umd den µC-8051.

    Mfg, Martin.
     
  5. AW: Assembler umständliche Auswertung

    HI!

    und wie unterscheidest Du dann größer/kleiner als der angegebene Wert?
    Beim Abziehen z.B. der 5 greifst du danach doch auf die Flags zurück - und da gibt es dann sowohl die Abfrage auf 0 (Gleichheit) oder negativ(größer/kleiner).

    cu
    Volker
     
  6. AW: Assembler umständliche Auswertung

    Folgendes Programm hatten wir im Seminar:

    Vergleich

    mov A,P0
    clr C
    jz gleich
    jc kleiner
    setb P1,7
    jmp weiter
    gleich: setp P1,3
    jmp weiter
    kleiner:setb P1,0
    weiter:mov

    Das läuft doch dann ähnlich, hier wird doch der Akku von sich selber abgezogen, und dann auf noch ein Bit abgezogen. Danach wird dann der Zero und Carry-Bit abgefragt. Habe ich das so richtig verstanden?
    Ist der das übliche Weg bei Assembler?

    Wo gibt es gute Beispielprogramme, am besten mit Erklärugen dazu?

    Mfg, Martin.
     
  7. AW: Assembler umständliche Auswertung

    Hallo perceptron,

    wo wird denn der Akku von sich selber abgezogen?



    MOV A, P0 -schreibe Inhalt Register Port 0 in Akku
    CLR C -lösche Carry-Flag
    JZ gleich -springe, wenn Akku Null ist, zu "gleich"
    JC kleiner -springe wenn Carry-Flag gesetzt ist
    SETB P1,7 -setze Bit 7 vom Port 1
    .
    .
    .

    Der Programm-Code macht so eigentlich wenig Sinn. Zuerst wird das Carry-Flag gelöscht und zwei Zeilen später wird abgefragt. Ja welchen Zustand soll es wohl in der Zwischenzeit haben? Dazwischen passiert doch nichts mit dem Carry. Kann es sein, dass da irgend etwas fehlt oder aus dem Zusammenhang gerissen wurde?



    Carry-Flag: Wird bei einem Übertrag des Ergebnisses gesetzt. Der Übertrag tritt bei einer Addition auf, wenn das Ergebnis größer 8 Bit ist. Er tritt bei eriner Subtraktion auf, wenn das Ergebnis negativ wird (Borrow).

    Du scheinst es mit einem Sonderfall des 8051 zu tun zu haben. Die Befehle MVI, CMP und CPI sind mir nicht bekannt. Sie stammen nicht aus dem Standard-Befehlssatz. In diesem Fall hilft wohl nur ein Blick ins Datenblatt des Controllers.
     
    #7 Anubis1974, 18 Juni 2007
    Zuletzt bearbeitet: 18 Juni 2007
  8. AW: Assembler umständliche Auswertung

    SUBB A,#07H hatte ich vergessen.

    In den Unterlagen steht nur 8051 und nichts besonders dabei.
    Was den MVI-Befehl angeht, steht dabei dass man den benutzt um in ein beliebiges Register zu kopieren.

    Mfg, Martin.
     
  9. AW: Assembler umständliche Auswertung

    HI!

    in LM 2 geht es aber nicht um den 8051 - taucht kein einziges mal auf - dafür in LM 3 - und beim Befehlssatz des 8051 gibt es dann eben auch kein mvi.

    die 2 Lernmodule behandeln unterschiedliche Dinge!

    cu
    Volker
     
  10. AW: Assembler umständliche Auswertung

    Hast recht, ich ging davon aus dass sich alles auf den 8051 bezieht, von einem anderen µC steht aber auch nix drin. Ich versuche krampfhaft irgendwie ein System reinzubringen, so dass ich einigermaßen vernünftig lernen kann. Wie hast Du Dich auf die MIKR - Prüfung vorbereitet?
    Btw das gleiche gilt auch für die Automatisierungsprüfung, wenn wir schon dabei sind. ;-)

    Mfg, Martin.
     
  11. AW: Assembler umständliche Auswertung

    Hallo,

    versuchs doch mal mit Google. Es gibt ettliche Seiten zum Thema 8051. Besonders die Seiten der Unis und FHs sind zu empfehlen.
    z.B. http://www.weblearn.hs-bremen.de/lehrenden/simon/mpr/script/kap3.pdf
     
Schlagworte:

Diese Seite empfehlen