Archiv verlassen und diese Seite im Standarddesign anzeigen : Zugriff auf Array mit Assembler
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
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
Eine Möglichkeit
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
Wert = array(index)
auch nicht viel mehr macht, also wenn nicht weitere Tricks dazukommen, bringt's der Assembler da auch nicht wirklich
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.