Forum: Mikrocontroller und Digitale Elektronik 2 Befehle in ASM des AVR


von Wolfram Q. (quehl)


Lesenswert?

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

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Wo steht das mit den 2 Befehlen pro Zeile?

von Wolfram Q. (quehl)


Lesenswert?

Datei AVRASM.CHM
AVR Assembler 2 Syntax
ganz unten Multiple Instruktions per line

mfg
Quehl

von Michael U. (Gast)


Lesenswert?

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

von Wolfram Q. (quehl)


Lesenswert?

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

von Michael U. (Gast)


Lesenswert?

Hallo,

wenn Du vertrauen zu Deinen Programmen hast ;)
1
;*************** Verktor-Liste ************************
2
3
.CSEG
4
      rjmp    Reset
5
6
.ORG  OC0Aaddr
7
      rjmp    irq_1ms
8
            
9
;*************** Programm-Beginn **********************
10
11
;******************************************************
12
;  Initialisierungsroutine
13
;******************************************************
14
15
.ORG  INT_VECTORS_SIZE
16
17
; Hardware initialisieren
18
19
Reset:
20
      ldi    TEMP_A,low(RAMEND)    ; Stack an das interne Ram-Ende
21
      out    SPL,TEMP_A

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


von Wolfram Q. (quehl)


Lesenswert?

.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

von Michael U. (Gast)


Lesenswert?

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


von Peter D. (peda)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.