Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » PLZ/ASM - irgendwer? » Themenansicht

Autor Thread - Seiten: -1-
000
19.06.2006, 23:30 Uhr
Olli

Avatar von Olli

Hallo,

waerend ich so das UDOS Mikroprozessor Software Buch abtippe bin ich gerade auf der U880-ASM Seite wo ja im Grunde PLZ/ASM beschrieben wird.

Gleich vorneweg - das ist das 1. Mal das ich mich mit Assembler auseinandersetze, also bitte ich um etwas Ruecksicht

Bei der Erklaerung von Rekursiven Makros steht als Beispielcode:


Quellcode:
MACR1:    MACRO #A #B
     SYMB:     DEFL #B
               MACR2     '#A'      ;Rekursiv-Makro "MACR2"
               ENDM
    
     MACR2:    MACRO #A
               COND SYMB.GT.0
     SYMB:     DEFL SYMB-1
               MACR2     '#A-'
               #A
               ENDC
               ENDM
    
     Makroaufruf:
    
     MACR1     RLA  3
     SYMB:     DEFL 3
               MACR2     'RLA'
               COND SYMB.GT.0
     SYMB:     DEFL SYMB-1
               MACR2     'RLA'
               COND SYMB.GT.0
     SYMB:     DEFL SYMB-1
               MACR2     'RLA'
               COND SYMB.GT.0
     SYMB:     DEFL SYMB-1
               MACR2     'RLA'
               COND SYMB.GT.0
     SYMB:     DEFL SYMB-1
               MACR2     'RLA'
               COND SYMB.GT.0
               RLA
               ENDC
               RLA
               ENDC
               RLA
               ENDC
               RLA
               ENDC

Soweit so gut. Ich schreib jetzt erstmal was ich bis datu verstanden habe. Macro 1 wird definiert mit 2 Uebergabeparametern A und B. SYMB wird der Wert aus B zugeiwsen. Danach wird Macro 2 mit dem 1. Parameter von Macro 1 aufgerugen. Macro2 ruft jetzt so lange den 1. Parameter von Macro 1 auf, bis SYMB kleiner/gleich 0 ist.
Im Anwendungsbeispiel wird als 3 mal RLA aufgerufen, weil ich Macro 1 RLA als 1. Parameter angegeben habe, und 3 als 2.

Meine Frage nun - RLA (bitverschiebung - rotate left accumulator) wird hier ohne Parameter aufgerufen - wird dann autom. 1 als Argument um wieviel Bits der Zwischenspeicher (accumulator) verschoben wird angenommen?

Kann mir einer bestaetigen das ich das richtig verstanden habe, oder mir nur Mist zusammmengefiebert habe? Wie gesagt, das 1. Mal was Assembler aehnliches, also schoen fuer Assembler-Neulinge erklaeren
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
20.06.2006, 00:09 Uhr
Enrico
Default Group and Edit


Mit dem Assembler kenne ich mich nicht aus.
Normalerweise steht RLA allein in einer Zeile da.
Und macht nichts weiter als den Inhalt des Akkus durchs Carry-Bit hindurch um 1 Bit nach links zu verschieben. Also so:

Quellcode:
--------------------
|                  |
- {CY}---{7-<---0}<-
              A


Also eigentlich nur so, wie es am Ende Deines Codes steht.

Auf der KC-HP könntest Du dir auch das Handbuch vom M027 Development Modul runter laden. Da steht die Befehlsliste drin. Oder beim Original-Hersteller.
--
MFG
Enrico

Dieser Beitrag wurde am 20.06.2006 um 00:16 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
20.06.2006, 02:09 Uhr
Z1013



RLA verschiebt pro Aufruf nur ein Bit nach links. An RLA werden keine Parameter übergeben. www.U880.de
--
Viele Grüße
Holger

Dieser Beitrag wurde am 20.06.2006 um 02:11 Uhr von Z1013 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
20.06.2006, 06:12 Uhr
Olli

Avatar von Olli

Ok, ich nahm an das man RLA uebergeben koenne wieviel bit nach links.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
20.06.2006, 08:02 Uhr
Olli

Avatar von Olli

Achja, noch was


Quellcode:
MACR2     '#A-'

Wiso wird MACR2 mit einem "-" hinter #A aufgerufen? Was bewirkt das?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
20.06.2006, 11:54 Uhr
Olli

Avatar von Olli

GT ist "groesser als" aber nicht "groesser als/gleich" oder?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
20.06.2006, 14:00 Uhr
Olli

Avatar von Olli

Wiso haette ich vier Durchlaeufe?

Start mit 3
Pruefung auf 3 > 0 -> TRUE
1. Durchlauf
Decrementierung 3 auf 2

Start mit 2
Pruefung auf 2 > 0 -> TRUE
2. Durchlauf
Decrementierung 2 auf 1

Start mit 1
Pruefung auf 1 > 0 -> TRUE
3. Durchlauf
Decrementierung 1 auf 0

Start mit 0
Pruefung auf 0 > 0 -> FALSE
kein Durchlauf
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 20.06.2006 um 14:00 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
20.06.2006, 16:49 Uhr
Olli

Avatar von Olli

GT ist laut der Doku "groesser als" - das 1. RLA wird nicht ausgefuehrt

mein code oben war falsch abgeschrieben richtig waere:


Quellcode:
MACR1     RLA  3
     SYMB:     DEFL 3
               MACR2     'RLA'
               COND SYMB.GT.0
     SYMB:     DEFL SYMB-1
               MACR2     'RLA'
               COND SYMB.GT.0
     SYMB:     DEFL SYMB-1
               MACR2     'RLA'
               COND SYMB.GT.0
     SYMB:     DEFL SYMB-1
               MACR2     'RLA'
               COND SYMB.GT.0
     SYMB:     DEFL SYMB-1
               MACR2     'RLA'
               RLA
               ENDC
               RLA
               ENDC
               RLA
               ENDC
               RLA
               ENDC

und das 1. RLA wird gar nicht ausgefuehrt, da zu diesem Zeitpunkt SYMB schon 0 ist somit werden nur die letzten 3 RLAs ausgefuehrt. Wuerde er das 1. RLA ausfuehren, wuerde er ja auch nochmal MACR2 aufrufen (was nochmal diesen code generiert haette) - es steht also immer ein RLA mehr da als tatsaechlich ausgefuehrt wird (weil es halt mit in der condition steht)
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 20.06.2006 um 16:51 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek