Z80 ASM , mein Plan geht nicht auf.

OP #7601588

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

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
OP #7601626

Danke funktioniert super.

Dieses habe ich noch umgestellt nach dem Z80-Buch ,weil es noch nicht lief. ex hl, de nach ex de,hl

Wie kann ich jetzt bitte bei einer beliebigen Adresse vom M2Y anfangen die ich als Anfang vorgebe?

Danke.

#7601633

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

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:
Gast #7603755

woaaa, ein CPC:-) Der steht hier neben mir der gute 6128:-) Die CPC Gemeinde ist, denke ich, größer als die Linux Fanbase:-) Der CPC macht einfach Spaß mit seinem hervorragenden Basic

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 2 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.