slope
01.02.2005, 14:14
Hallo,
ich bin noch recht neu in der Materie, deshalb bitte ich um Entschuldigung, sollte dieses Thema gar nicht hier rein passen. Ich hoffe trotzdem, dass mir jemand helfen kann:
Ich benutze das AVRStudio, um ein paar Dinge in Assembler mit dem ATmega16 Befehlssatz zu schreiben. Ich möchte nun eine Art "Array" anlegen, ein Label welches dann im Programm als "Platzhalter" verwendet wird. Um das deutlich zu machen, hier der Code, welcher leider nicht so funktioniert, wie ich es mir vorstelle:
.include "m16def.inc"
.def TEMP = R16
.SET array = $02a
.CSEG
CLR TEMP
LDI TEMP, 0x3f
STS array, TEMP
LDI TEMP, 0x06
STS array+1, TEMP
START: CLR R17
LDS R17, array
Ich hoffe es wird klar, was ich vor habe. Ich möchte einfach mit "array+1" oder "array+2" dann entsprechend die Werte abrufen, welche ich zuvor gespeichert habe.
In der letzte Zeile steht "LDS R17, array" - und dies funktioniert auch, d.h. der Wert 0x3f steht danach im Register R17. Leider klappt aber ""LDS R17, array+1" nicht, was ich mir nicht erklären kann.
Ich hoffe jemand kann mir helfen. Falls das da oben der falsche Ansatz ist, dann bitte ich um ein paar Vorschläge, wie man sowas wie ein Array (entsprechend mit +1, +2 darauf zugreifen) realisieren kann.
Vielen Dank!
ich bin noch recht neu in der Materie, deshalb bitte ich um Entschuldigung, sollte dieses Thema gar nicht hier rein passen. Ich hoffe trotzdem, dass mir jemand helfen kann:
Ich benutze das AVRStudio, um ein paar Dinge in Assembler mit dem ATmega16 Befehlssatz zu schreiben. Ich möchte nun eine Art "Array" anlegen, ein Label welches dann im Programm als "Platzhalter" verwendet wird. Um das deutlich zu machen, hier der Code, welcher leider nicht so funktioniert, wie ich es mir vorstelle:
.include "m16def.inc"
.def TEMP = R16
.SET array = $02a
.CSEG
CLR TEMP
LDI TEMP, 0x3f
STS array, TEMP
LDI TEMP, 0x06
STS array+1, TEMP
START: CLR R17
LDS R17, array
Ich hoffe es wird klar, was ich vor habe. Ich möchte einfach mit "array+1" oder "array+2" dann entsprechend die Werte abrufen, welche ich zuvor gespeichert habe.
In der letzte Zeile steht "LDS R17, array" - und dies funktioniert auch, d.h. der Wert 0x3f steht danach im Register R17. Leider klappt aber ""LDS R17, array+1" nicht, was ich mir nicht erklären kann.
Ich hoffe jemand kann mir helfen. Falls das da oben der falsche Ansatz ist, dann bitte ich um ein paar Vorschläge, wie man sowas wie ein Array (entsprechend mit +1, +2 darauf zugreifen) realisieren kann.
Vielen Dank!