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
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.
es sollen Word-Werte sein dann muss ich dc.b durch dc.w ersetzen oder?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.