Re: Assembler einbinden Kategorie: Programmierung (von TManiac - 4.05.2006 15:08) | ||
Als Antwort auf Assembler einbinden von Erich - 2.05.2006 13:37 | ||
| ||
N'Abend (und zwei Tage später) Wo hast du den Begriff "Offset" her? ich weis nicht genau was du versuchst zu erfahren, aber ich denke du könntest die Funktion der Interrupt-Tabelle meinen. Damit ist der allererste Bereich des ROMs gemeint. Dort stehen im Abstand von 2 Word (4 Byte) die Interruptvektoren. Das ist im grunde ganznormaler Programmspeicher, nur das auf die Stellen per Ereignis (Interrupt) gesprungen werden kann. Dann steht dort im Normalfall ein Jump Befehl, der in die Interrupt-Routinen verzweigt. Es gibt für jeden definierten Interrupt ein fest gelegt Adresse für die Interrupt-Vektor. Da die ALLE gleich gro� sind kann man auch die Adresse als 'Nummer des Interruptes' * 4 berechnen. Das ist aber bei der Benutzung des HOOK befehls in C2 alles nicht so wichtig. Das andere "Offset" welches Andre auch im Buch beschreibt ist die Start Adresse der ASM Routine im jeweiligen Segment. Wobei man für ASM als Zusatz für C2 in die Segmente 1-3 speichern sollte, das sind auch die Segmente welche du im Downloadtool einstellen kannst. Im MSR-Buch steht auch drin das es keine Möglichkeit gibt auf die Variablen aus C2 in ASM zu zugreifen, Weil das OS die selber sortiert. Im Buch wird werden auch verschieden Möglichkeiten beschrieben. Das Beispiel mit der �bergabe mit T3 ist aber auch mit anderen Registern möglich welche nicht vom OS genutzt werden. Wenn du einen anderen Controller möchtest, muss du in C programmieren weil das C2 nunmal eine Conrad-Erfindung ist. Wenn du C programmierst kannst du auch die C-Control2 nehmen und das OS weglassen. Der Keil Compiler ist erstmal kostenlos und ich bin noch nicht an die Begrenzung gesto�en und ich nutze nicht das C2-OS. Also bleib bei der C-C2 und lerne C oder ASM, ist auch bis zu 1000mal schneller. Noch viel Mut zum Probieren TManiac CB00 > Mahlzeit, > > da es mir ein Rätsel ist, was es mit diesem "Offset" bei den interrupt-Routinen auf sich hat, bitte ich > euch um Rat. Wie komme ich auf die Adresse einer Variable, damit ich sie in einer Assembler-Routine > inkrementieren kann? Wie schaffe ich mehr als nur eine Interrupt-Assembler-Routine? Dass man das > mischen muss ist ja wirklich eine Schwäche am ganzen C-Control-System. Sollte man vielleicht einen > anderen Controller wählen? Ich bin etwas verzweifelt, muss ich sagen. > > Erich | ||
Antwort schreiben Antworten: Re: Assembler einbinden (von Erich - 9.05.2006 19:44) Re: Assembler einbinden (von André H. - 7.05.2006 22:08) Re: Assembler einbinden (von Erich - 8.05.2006 12:43) Re: Assembler einbinden (von André H. - 8.05.2006 16:51) Re: Assembler einbinden (von krassos - 8.05.2006 15:45) Re: Assembler einbinden (von Erich - 8.05.2006 17:25) Re: Assembler einbinden (von André H. - 14.05.2006 15:49) |