Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Pointerformat

  1. #11
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ... dann müßtest du deinen Index bloss immer mit 16 multiplizieren oder um 4 verschieben - also :
    Code:
    L #dein_Index
    SRD 4
    LAR1
    AUF DB81
    T DBW [AR1,P#0.0]
    Gruß
    LL

  2. #12
    Uwe16 ist offline Benutzer
    Themenstarter
    Registriert seit
    04.10.2008
    Ort
    Nürnberg
    Beiträge
    98
    Danke
    10
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    ... dann müßtest du deinen Index bloss immer mit 16 multiplizieren oder um 4 verschieben - also :
    Code:
    L #dein_Index
    SRD 4
    LAR1
    AUF DB81
    T DBW [AR1,P#0.0]
    Gruß
    LL

    und wann lade ich den Wert den ich in das DW schreiben will?
    L #dein_Index
    SRD 4
    LAR1
    AUF DB81
    l -1????
    T DBW [AR1,P#0.0][/CODE]

  3. #13
    Registriert seit
    27.07.2007
    Beiträge
    223
    Danke
    17
    Erhielt 42 Danke für 40 Beiträge

    Standard

    Zitat Zitat von Uwe16 Beitrag anzeigen
    und wann lade ich den Wert den ich in das DW schreiben will?
    L #dein_Index
    SRD 4
    LAR1
    AUF DB81
    l -1????
    T DBW [AR1,P#0.0][/CODE]
    Wenn dein Wert nicht aus einem anderen DB kommt funktioniert das so. Wenn die Quelle ein anderer DB ist musst du die Zeilen mit dem DB öffnen und dem Ladebefehl vertauschen.
    Code:
    l DB70.DBW 0
    AUF DB81
    T DBW [AR1,P#0.0]

  4. #14
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Ganz genau müßte der Code etwa so aussehen:
    Code:
    //Beispiel: DB81.DBB10 Datenfeld ARRAY[0..99] OF INT
    
          L     #dein_Index         // 0 .. 99 (0 .. Array_maxIndex)
          SLD   4                   // bei Byte: 3 / Word/Int: 4 / DWord/DInt: 5
          L     P#10.0              // Anfangsadresse Datenfeld im DB (DB81.DBB10)
          +D                        // dazuaddieren -> P#Datenfeld[dein_Index]
          LAR1                      // -> Pointer
    
          L     #dein_Wert
          AUF   DB    81
          T     DBW [AR1,P#0.0]     // in Datenfeld[dein_Index] schreiben
    
    // oder auch so:
          L     #dein_Index
          SLD   4
          LAR1
    
          L     #dein_Wert
          AUF   DB    81
          T     DBW [AR1,P#10.0]    // <- P#10.0 = Anfangsadresse Datenfeld im DB
    Je nachdem, wie groß die Struktur eines Datenfeldes ist, kann die Adressberechnung bis zum LAR1 auch anders gemacht werden.

    Gruß
    Harald

  5. #15
    Uwe16 ist offline Benutzer
    Themenstarter
    Registriert seit
    04.10.2008
    Ort
    Nürnberg
    Beiträge
    98
    Danke
    10
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also... es funzt... nur der Schiebebefehl ist SLD3. Da habe ich ein bisschen gerätselt.
    Danke an Alle!!!!

  6. #16
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    SLD3 ist korrekt, wenn du deinen Adress-Pointer immer um die richtige Anzahl von Bytes erhöhst - also um 1 erhöhen für Byte-Zugriffe, um 2 erhöhen für Wort-Zugriffe und um 4 erhöhen für Doppelwort-Zugriffe.
    Erhöhst du den Index aber immer nur um 1, so ist für Bytes wieder SLD3 richtig, für Wortes dann aber schon SLD4 und entsprechend für Doppelworte SLD5.

    Gruß
    LL

Ähnliche Themen

  1. IN-Typ wird in Pointerformat umgewandelt
    Von gingele im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 16.07.2010, 15:17
  2. Antworten: 7
    Letzter Beitrag: 17.10.2005, 10:54

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •