Step 7 Pointer

00alex

Level-1
Beiträge
345
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
POINTER --> {P#Byte.bit}


Code:
 L  P#0.1  (Speicherindirekt)     -> T MD3 /  S    A[MD3]
 L  P#1.2                         -> T LD6 /  =    M[LD6]


 L  P#2.3  (Bereichsintern)      -> LAR1  / O    E[AR1.P#0.0] / =  DBX[AR1.P#0.4]
 L  P#3.4                        -> LAR2  / U  DBX[AR2.P#0.0] / U    M[AR2.P#1.5]

 AUF DBxxx
 L P#DBX5.6 (Bereichsübergreifend) -> LAR1  / S   [AR1.P#0.0] /  =    [AR1.P#2.6]
 L P#E6.7                          -> LAR2  / U   [AR2.P#0.0] /  R    [AR2.P#3.7]




L  P#Byte.Bit                // L ... T ...  
L  P#(Bereich?)Byte.Bit   //  LAR1(2) ... +AR1(2) ... TAR1(2)

Die Speicherindirekte Adressierung kann man völlig durch die (kompaktere) Bereichsinterne ersetzen, oder ?

Code:
      AUF   DB     1
//Adressregister1
      LAR1  P#DBX 1.7
      +AR1  P#1.1
      +AR1  P#1.7
      +AR1  P#1.2
      TAR1  MD     0
//Akkumulator1,2
      L     P#DBX 1.7
      L     P#1.1
      +D    
      L     P#1.7
      +D    
      L     P#1.2
      +D    
      T     MD     4
 
Zuletzt bearbeitet:
sry ich verstehe die frage/aufgabe nicht. was willst du da machen bzw welchen sinn soll
LAR1 P#DBX 1.7
+AR1 P#1.1
+AR1 P#1.7
+AR1 P#1.2
TAR1 MD 0

haben?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
sry ich verstehe die frage/aufgabe nicht. was willst du da machen bzw welchen sinn soll
LAR1 P#DBX 1.7
+AR1 P#1.1
+AR1 P#1.7
+AR1 P#1.2
TAR1 MD 0

haben?

Don't feed the Troll!

Geniale Menschen stellen nur den Zustand ihrer Genialität da und fragen nichts wirklich!!! Also nicht füttern! :ROFLMAO:
 
Code:
      L     W#16#800     
      T     DB2.DBW    0
      L     W#16#8
      T     DB1.DBW    0


      U     E      0.0                  // alternativ drücken!
      SPB   o1


      L     W#16#800
      T     DB2.DBW    0




o1:   NOP   0
      LAR1  P#DBX 1.3
      TAR1  MD     0
      U      [AR1,P#0.0]
      =     M      8.7                  //DBNr ?
      U     A [AR1,P#0.0]
      =     M      8.6                  //M


      LAR1  P#DBX 0.3
      TAR1  MD     4
      U      [AR1,P#0.0]                //DBNr ?
      =     M      8.5
      U     A [AR1,P#0.0]
      =     M      8.4                  //M

Woher weis der Compiler die DB-Nr ??? :ROFLMAO:;):p
 
Ich möchte als Übung ein Algorithmus zum sortieren in AWL S7 implementieren (zB. INTEGER sortieren).
Was ist gebräuchlich wenn überhaupt : QUICKSORT ? ... RADIXSORT usw.

Das "praktische" daran sei mal dahintergestellt Hauptsache ich übe Strategien ... ( unter andern wie man Algorithmen auf mehrere BS Zyklen aufteilt und mit den Pointer "jongliert").
RADIXSORT wäre zeitlich abschätzbar und unschlagbar für ga...anz grosse (lexikographisch-geordnete) Datenmengen .
PS: Sortiert/ordnet man in der Praxis mit der SPS ?

... jede Anregung wäre willkommen :)
 
Könnte man dieses Programmchen nicht mit speicherindirekter sondern mit registerindirekter Pointer schreiben?
Code:
      U     E      0.0                  //Schalten
      FP    M      4.0
      SPBN  o1
      R     A [MD 0]
      L     MD     0
      L     1
      +I    
      T     MD     0
      S     A [MD 0]

o1:   U     E      0.1                  //Initialisieren
      FP    M      4.1
      SPBN  o2
      L     L#0
      T     MD     0

o2:   BE
... ich hab's versucht , es wird aber komplizierter ... !
 
Zuletzt bearbeitet:
Zurück
Oben