www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Brauche Hilfe! Mikrocontroller HCS12


Autor: Thomas E. (bolv-1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich beginne grade mit der programmierung von Mikrocontrollern.
Bei uns wird der Mikrocontroller HCS12 verwendet.
Ich habe ein problem bei einer Übungsaufgabe:
Ich möchte ein Programm schreiben das ab Adresse $2000 im Speicher steht 
und die Tabelle in den Speicher ab Adresse $3000 umkopiert. Das Programm 
soll enden sobald eine Null in der Tabelle auftaucht.
Das habe ich noch hinbekommen:

; free ram:  $3000 - $3FFF
; program:  $2000 - $2FFF
; monitor:  $1000 - $1FFF
; stack:  $0800 - $0FFE

org $2000
ldx #tab1
ldy #$3000
loop: tst 0,x
beq ende
movb 1,x+,1,y+
bra loop

ende: nop


tab1: dc.b $1111
dc.b $2222
dc.b $3333
dc.b $4444
dc.b $5555
dc.b $6666
dc.b $0000

end

dieses Programm funktioniert auch aber nur eben bis zur 0
die weitere Aufgabe besteht darin das programm umzuschreiben sodas die 
null a)Mitkopiert wird und b)nicht mitkopiert wird

hier liegt mein problem ich hab leider keine idee wie das klappen 
könnte.
Hat jemand eine Idee?

vielen Dank im Vorraus

Autor: APW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gehts hier um Wort oder Byte-Werte ?
Musst du auf $00 oder $0000 testen ?

Übrigens,
nicht   "ende: nop"
sondern "ende: bra ende"

sonst läuft dir das Programm in die Tabelle rein.

Autor: Thomas E. (bolv-1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es sollen Word-Werte sein
dann muss ich
dc.b durch dc.w ersetzen oder?

Autor: APW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matt Hias schrieb:
> .. dc.b durch dc.w ersetzen oder?

würde ich auch vermuten. Sollte aber der Assembler schon reklamieren.
Du sagst es sind 2-Byte Werte, brichst aber bei einem 0-Byte ab.
Was wäre da z.B. mit einem Wert von $0012 oder $1200 ?


2-Byte Werte kopieren ohne letztes 0-Wort:

org $2000
ldx #tab1
ldy #$3000
loop: ldd 2,x+
beq ende
std 2,y+
bra loop

ende: bra ende


2-Byte Werte kopieren mit letztem 0-Wort:

org $2000
ldx #tab1
ldy #$3000
loop: ldd 2,x+
std 2,y+
bne loop

ende: bra ende

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.