Forum: Mikrocontroller und Digitale Elektronik Brauche Hilfe! Mikrocontroller HCS12


von Thomas E. (bolv-1)


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

von APW (Gast)


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.

von Thomas E. (bolv-1)


Lesenswert?

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

von APW (Gast)


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

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.