Re: Variablen in Assembler Kategorie: Progr. Assembler, TaskingTools, OS (von Cris, http://www.crisullmann.de - 15.07.2004 9:48) | ||
Als Antwort auf Variablen in Assembler von Thomas - 14.07.2004 22:00 | ||
| ||
Hallo Thomas, ich habe mir die Funktion zum Schreiebn von Text angeschaut. Wenn ich alles richtig verstehe, bekommt diese Prozedur die Adresse des anzuzeigenden Textes in R12 übergeben. Diese Adresse bezeiht sich jedoch immer auf das Speichersegment 0. Du hast also keine Möglichkeit ein anderes Segment aus- zuwählen. Somit kannst Du nur Texte anzeigen, die im Segment 0 (Betriebssystem) hinterlegt sind. Vereinbarung von Variablen in ASM: Variablen werden über ihre Speicheradresse angesprochen. So eine Adresse kannst Du wie folgt festlegen: PS2_Buffer EQU 0002H ;Datenspeicher PS2 Du siehst schon, da� es sich um eine 16 Bit-Adresse handelt. Längere Adressen kann der Prozessor der CC2 nur über das zugehörige Speichersegment verwalten. Du kannst für Deine Anwendungen zum Lesen und Schreiben nur das RAM-Segment (Segment 8) benutzen. Dort musst Du Dir eine freie Stelle suchen. Die Meldung > E 356: expression result out of range for use in an instruction sagt Dir, da� das Ergebnis Deines Ausdruckes nicht in ein 16Bit-Register passt. Du hast nämlich die Segmentadresse einfach vor die Speicheradresse gesetzt. Der richtige Zugriff würde lauten: MOV R12,#00000H ; 16bit-Adresse setzen EXTS #8,#1 ;der nächste Befehl bezieht sich auf Segment 8 MOV R1,[R12] ; lade R1 mit dem Inhalt von 80000H Die Aufteilung und Nutzung der Speichersegmente ist im Handbuch der CC2 beschrieben. Grü�e Cris Meine Seite: http://www.crisullmann.de | ||
Antwort schreiben Antworten: Re: Variablen in Assembler (von Thomas - 15.07.2004 20:19) Re: Variablen in Assembler (von Cris - 16.07.2004 9:04) |