In der Beschreibung des Assemblers vom AVR steht, daß man 2 Befehle in eine Zeile schreiben kann. Womit werden diese Befehle getrennt? Das steht nicht da. mfg Quehl
Wo steht das mit den 2 Befehlen pro Zeile?
Datei AVRASM.CHM AVR Assembler 2 Syntax ganz unten Multiple Instruktions per line mfg Quehl
Gast
#564478
Hallo, wie es aussieht mindestens ein Leerzeichen und dann eben der nächste Befehl. Zumindest hat er bei mir so nicht gemault und das Programm sah noch genauso aus. PS: sowas habe ich zu 64er Basic-Zeiten gemacht, konnte man 2 Byte sparen. :-) Freiwillig würde ich sowas heute nicht mehr machen, hat keinen Nutzen und erzeugt wunderbar unlesbaren Code. Über die erwähnte Problematik mit Macros bin ich bisher noch nicht gestolpert. Gruß aus Berlin Michael
Im allgemeinen mache ich das auch nicht. Aber ich habe in der Interrupttabelle ORG davorgesetzt, damit die Interrupts auch bei einem Controllerwechsel richtig stehen. Und ORG und den nachstehenden Sprungbefehl wollte ich auf eine Zeile setzen. Man sieht gleich, was zusammengehört und die Programmliste wird kürzer. Somit weniger zu scrollen. mfg Quehl
Gast
#564563
Hallo, wenn Du vertrauen zu Deinen Programmen hast ;)
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
ich schreibe nur die Vektoren rein, die ich benutzte. INT_VECTORS_SIZE ist den AVR-Includes mit der Länge der Vaektortabelle belegt. Ich zerlege meine Projekte sowieso in mehrere Files, dann wird nichts so lang zum Scrollen. Gruß aus Berlin Michael
.ORG und Rjmp wollte ich in eine Zeile schreiben, weil ich das übersichtlicher finde. In mehreren Dateien aufteilen sehe ich auch Probleme. Da kann ich nicht sehen, welche Register schon vergeben sind, wie die zeitl. Abläufe sind u.s.w.. Ich hatte nämlich auch daran gedacht, für jede Aufgabe eine Include Datei zu verwenden, aber die Überlagerungen können dann auch zu Fehlern führen. Ein Fehler taucht in einer Datei auf, deren Ursache in einer anderen Datei liegt. Da kann man aber lange suchen. mfg Quehl
Gast
#565485
Hallo, wird sicher jeder seine Version finden müssen. Alle Definitionen sind bei mir in einem include, da gibt es feste Blöcke, die ich immer benutze und die eben leer bleiben, wenn ich sie nicht brauche. Ich habe immer 4 Temp-Register auf r16...r19, von denen nur sicher ist, daß in denen nichts sicher ist. ;) Überschneidungen in dem Sinn kann es nicht geben, weil auch ein µC nur an einer Programmstelle zu einer Zeit sein kann. Daten, die über längere Programmstrecken gültig sind, werden je nach Zugriffshäufigkeit auf die restlichen Register oder in das SRAM gelegt. Wenn ich dann wirklich mal davon abweiche (Subroutine benutzt die Temp-Register, aufrufende Routienen aber braucht die noch), gibt es eben push vor dem Aufruf und pop nach der Rückkehr. Gruß aus Berlin Michael
Wolfram Quehl wrote: > In mehreren Dateien aufteilen sehe ich auch Probleme. Ich nicht. > Da kann ich nicht > sehen, welche Register schon vergeben sind, wie die zeitl. Abläufe sind > u.s.w.. Das geht schon. Nur die Register werden zentral definiert, der Code kriegt aber seine eigenen Unterfunktionen. Hier mal ein Beispiel: Beitrag "Zeit + Temperatur auf LCD mit AVR" Monsterdateien sind irgendwann nicht mehr lesbar. Peter
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.