-         

Ergebnis 1 bis 4 von 4

Thema: Zugriff auf Array mit Assembler

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.03.2005
    Ort
    OWL
    Beiträge
    216

    Zugriff auf Array mit Assembler

    Anzeige

    Hallo,
    ich Suche in Bascom eine Möglichkeit, auf ein Array an bestimmter Stelle zuzugreifen.
    Das Array besteht aus Bytes und ist 65 Byte lang. Wie lade ich nun einen Wert des Arrays von X-beliebiger Stelle in ein Register? Es gibt ja die Möglicheit, mit "lds Register, {Variable}" den Wert in ein Register zu laden, das funktioniert jedoch nicht bei einem Array!
    Kennt jemand eine Möglichkeit?

    Ruppi

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo Ruppi,
    Wie lade ich nun einen Wert des Arrays von X-beliebiger Stelle in ein Register?
    Ich habs noch nicht ausprobiert, aber würde es mit dem Z-Pointer versuchen:

    Loadadr Variable , Z ; Pointer Für SRAM
    Ld Register, Z + Konstante

    Über Konstante kannst du dann ja alle Stellen des Arrays adressieren.

    Oder?

    Gruß Dirk

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Eine Möglichkeit
    Code:
    DIM Wert as byte
    DIM index as byte
    DIM array(65) as byte
    
        index = 23
        loadadr array(index) , X       ' addresse nach X
        $asm
        LD r24, X                         ' tabellen wert nach R24
        sts  {Wert}, r24                ' speichern
        $end asm
    Ich muß nur sagen, daß Bascom bei
    Code:
       Wert = array(index)
    auch nicht viel mehr macht, also wenn nicht weitere Tricks dazukommen, bringt's der Assembler da auch nicht wirklich
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.03.2005
    Ort
    OWL
    Beiträge
    216
    Hallo,
    erstmal Danke euch beiden. PickNick, ich nutze zur Zeit dein erstes Beispiel, so weit war ich schon. Allerdings benötigt die Funktion "LoadAdr" relativ viele Takte. Ich dachte, ich könnte direkt aus einer bestimmten Speicherstelle laden. Ich hatte mir das in etwa so vorgestellt:
    Lds R16, {&H60 + Offset}

    Dann werde ich wohl bei meiner jetzigen Variante bleiben müssen. Trotzdem aber vielen Dank!

    Ruppi

Berechtigungen

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