Data-EndData
Dient der Definition einer objektbasierten Datenstruktur im Programmsegment (Flash).
Syntax:
- Data Bezeichner [at Adresskonstante]1)
- Daten
- EndData
Methoden (nur lesbar) | ||
---|---|---|
Name | Beschreibung | Rückgabetyp |
.ByteValue(offset) | Byte lesen | byte |
.WordValue(offset) | Word lesen | word |
.IntegerValue(offset) | Integer lesen | integer |
.LongValue(offset) | Long lesen | long |
.SingleValue(offset) | Single lesen | single |
.StringValue(offset,bytes) | String lesen mit Längenvorgabe | string |
.PString(offset) | Pascal-String lesen (Start-Byte ist Länge) | string |
.CString(offset) | C-String lesen (Nullterminiert) | string |
.Addr | Adresse der Datenstruktur im Flash | word |
.SizeOf | Vom Objekt belegte Anzahl Bytes lesen. | byte |
- offset: Byte-Position innerhalb der Daten mit Basis Null.
Anm.: Greift man zu Beispiel auf nacheinanderliegende Word-Daten zu (16-Bit-Werte), dann ist der Offset mit 2 zu multiplizieren. - bytes: Anzahl zu lesender Bytes.
Daten an fester Adresse
Das Setzen der Daten ab der angegebenen Word-Adresse im Flash. Eine falsche oder fehlerhafte Adresse wird mit einer Assembler-Fehlermeldung quittiert. Achten sie darauf das es sich hier um eine Word-Adresse handelt, wie z.B. die Bootloaderadresse FIRSTBOOTSTART. Die Byte-Adresse wäre (wordAddresse*2)
Mit dieser Funktionalität ist es möglich Daten an einer ganz bestimmten, festen Position im Programmspeicher (Flash) abzulegen. Wird das kompilierte Programm größer oder gleich dieser Adresse, werden die Daten überschrieben. Daher ist über die Speicherbelegung zu prüfen ob genügend Freiraum vorhanden ist.
Datenablage
Die Direktiven zur Ablage von Daten innerhalb eines Datenobjektes.
- .db - (byte) 8 Bit Werte inkl. Zeichenketten
- .dw - (word) 16 Bit Werte
- .dt - (triple) 24 Bit Werte
- .dl - (long) 32 Bit Werte
Hinweis
Der Zugriff über die Objektgrenzen hinaus ist möglich und wird nicht geprüft.
SuperImposing
Bei Datenobjekten können Strukturdeklarationen für eine vereinfachte Ablage und auch Zugriff verwendet werden. Siehe hierzu: Pointer, Absatz "SuperImpose"
Beispiel
' Initialisierung [..] ' Hauptprogramm dim a as byte dim s as string a=tabelle1.ByteValue(4) ' Byte lesen von tabelle1 + 4, Ergebnis: 5 s=tabelle1.CString(11) ' C-String lesen, Ergebnis: "Hallo" s=tabelle1.StringValue(11,2) ' String lesen mit Längenvorgabe: Ergebnis: "Ha" s=tabelle1.PString(17) ' Pascal-String lesen, erstes Byte ist Länge(10). Ergebnis: "i love you" Print "&h"+Hex(tabelle1.Addr) ' Adresse der Datenstruktur im Flash anzeigen do loop ' Datenstruktur im Flash definieren data tabelle1 .db 1,2,3,4,5 .dw &h4af1,&hcc55,12345 .db "Hallo",0 .db 10,"i love you",0 enddata
Strukturen
Daten ablegen anhand einer Strukturdeklaration.
Beispiel:
struct ENTRY word fnAddr string text[12] endstruct [..] data table ENTRY { myfunc1, "Menu Nr. 1" } ENTRY { myfunc2, "Menu Nr. 2" } ENTRY { myfunc3, "Menu Nr. 3" } enddata