Z80 ASM , mein Plan geht nicht auf.

OP #7601588
Lesenswert?
• ▲
▼

Hallo, guten Tag. Ich bekomme folgende Aufgabe nicht hin.

Ich möchte bitte 190x den Wert 255 an die aufsteigende Adressen übergeben von M2Y. Die neue Adresse soll immer an scraddr übergeben werden und dann nach HL.

Wo ist bitten der Fehler?

Danke.


scr:

ld hl,M2Y ld (scraddr),HL

ld c,255 ld a,0 mache: inc a cp 190 ld hl,(scraddr) ld (hl),c

inc HL inc hl ld (scraddr),hl jr nz,mache

ret

scraddr: DW &0000

;M2 Y-Tabelle M2Y: DW &C000, &C800, &D000, &D800, &E000, &E800, &F000, &F800 DW &C050, &C850, &D050, &D850, &E050, &E850, &F050, &F850 DW &C0A0, &C8A0, &D0A0, &D8A0, &E0A0, &E8A0, &F0A0, &F8A0 DW &C0F0, &C8F0, &D0F0, &D8F0, &E0F0, &E8F0, &F0F0, &F8F0 DW &C140, &C940, &D140, &D940, &E140, &E940, &F140, &F940 DW &C190, &C990, &D190, &D990, &E190, &E990, &F190, &F990 ....... .......

#7601599
Lesenswert?
• ▲
▼

Die zweite Indirektion fehlt, d.h. Du musst erst die Adresse aus der Tabelle lesen und auf die gelesene Adresse das 0xFF schreiben. Obiges Programm überschreibt nur die Adresstabelle. Also ungefähr so:

1
mache:
2
 ld hl,(scraddr)
3
 ld e, (hl)
4
 inc hl
5
 ld d, (hl)
6
 inc hl
7
 ld (scraddr),hl
8
 ex hl, de
9
 ld (hl),c
10
 inc a
11
 cp 190
12
 jr nz,mache
#7601633
Lesenswert?
• ▲
▼

Indem Du z.B. den Index an die Funktion übergibst.

1
; a = Index
2
scr:
3
 ld hl, M2Y
4
 ld e, a
5
 ld d, 0
6
 add hl, de
7
 add hl, de
8
 ld (scraddr), hl
9

10
mache:
11
 ld hl,(scraddr)
12
 ld e, (hl)
13
 inc hl
14
 ld d, (hl)
15
 inc hl
16
 ld (scraddr),hl
17
 ld l, e  ; statt ex de, hl
18
 ld h, d
19
 ld (hl),c
20
 inc a
21
 cp 190
22
 jr nz,mache
23
 ret
OP #7601684
Lesenswert?
• ▲
▼

Du kennst dich Super aus.

Diese Tabelle ist für den CPC um die Linien untereinander zu Zeichnen. Es wird senkrecht nach unten gezeichnet ab der Adresse &C000 , &c800 usw. Siehe Bild. Es sind 199 Byte nach unten bei X=0

In der x-Richtung sind es 80 Byte. Um die x-Richtung zu ändern muss zu jeden Wert von der Tabelle die anzahl vom x festgelegt werden Beim Wert &C000 + 79 wird in x-Richtung-79 das Byte ganz rechts gezeichnet.

x=45 Wie kann ich jetzt das Byte &c000 + 45 , &c800 + 45 festlegen. Wie wird jetzt bitte der der Wert x=45 zu jeder Adresse zugerechnet bei deinem Beispiel?

Danke


scr:

ld hl,M2Y ld (scraddr),HL

ld c,255 ld a,0 mache: ld hl,(scraddr) ld e, (hl) inc hl ld d, (hl) inc hl ld (scraddr),hl ex de,hl ld (hl),c

inc a cp 199

jr nz,mache ret

scraddr: DW &0000

;M2 Y-Tabelle M2Y: DW &C000, &C800, &D000, &D800, &E000, &E800, &F000, &F800 DW &C050, &C850, &D050, &D850, &E050, &E850, &F050, &F850 DW &C0A0, &C8A0, &D0A0, &D8A0, &E0A0, &E8A0, &F0A0, &F8A0 DW &C0F0, &C8F0, &D0F0, &D8F0, &E0F0, &E8F0, &F0F0, &F8F0 DW &C140, &C940, &D140, &D940, &E140, &E940, &F140, &F940 DW &C190, &C990, &D190, &D990, &E190, &E990, &F190, &F990 DW &C1E0, &C9E0, &D1E0, &D9E0, &E1E0, &E9E0, &F1E0, &F9E0 DW &C230, &CA30, &D230, &DA30, &E230, &EA30, &F230, &FA30 DW &C280, &CA80, &D280, &DA80, &E280, &EA80, &F280, &FA80 DW &C2D0, &CAD0, &D2D0, &DAD0, &E2D0, &EAD0, &F2D0, &FAD0 ..... ....

Angehängte Dateien:

Antwort schreiben

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.

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.