.CSEG - Frage

Gast #2519399
Im AVR-Tutorial unter EEPROM fangen die Beispielprogramme alle so an wie 
am Ende dieser Message:


Meine Frage - muss man unbedingt .CSEG in das Programm schreiben und 
wenn man später noch "Variablen" für .ESEG definiert?

Beispielprogramm
/*********************************/

include "m8def.inc"

.def temp = r16
.def temp1 = r17

.equ CLOCK = 4000000                ; Frequenz des Quarzes
.equ BAUD = 9600                    ; Baudrate
.equ UBRRVAL = CLOCK/(BAUD*16)-1    ; Baudratenteiler

; hier geht das Programmsegment los

.CSEG
.org 0
    ldi     r16, low(RAMEND)            ; Stackpointer initialisieren
    out     SPL, r16
    ldi     r16, high(RAMEND)
    out     SPH, r16
Gast
Hi

>Sinnvollerweise kommt DSEG zuerst, dann ESEG, und dann CSEG

Ist eigentlich egal.

Aber so etwas

>.def temp = r16

>ldi     r16, low(RAMEND)

sollte man sich gar nicht erst angewöhnen. Entweder symbolische Namen 
oder Registernamen. Das Vermischen ist eine absolut sichere 
Fehlerquelle.

MfG Spess
Gast
spess53 schrieb:
> sollte man sich gar nicht erst angewöhnen. Entweder symbolische Namen
> oder Registernamen. Das Vermischen ist eine absolut sichere
> Fehlerquelle.

Das Beispiel stammt ja aus dem Tutorial. Mich hatte es zunächst 
verwirrt, warum man .cseg geschrieben hatte und später .eseg und bei 
anderen Beispielen hatte man das .cseg nicht geschrieben, also hab ich 
vielleicht gedacht, dass der Assembler es automatisch in .cseg schreibt 
den Programmablauf.
Gast
Hi

Der Assembler benutzt, wenn es kein .cseg-, .dseg- oder .eseg-Direktive 
gibt, den ersten Assemblerbefehl als Programmstart. Von der Seite her 
also entbehrlich aber .cseg oder/und .org $0000 am Programmstart sind 
auch kein Fehler.

Wenn aber .dseg oder .eseg vor dem Programmstart benutzt wird, ist .cseg 
absolut notwendig. Gibt beim Fehlen auch eine Fehlermeldung.

MfG Spess

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.