Brauche Hilfe! Mikrocontroller HCS12

OP #1915541
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
Gast #1915745
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren