Hallo, guten Tag. wie kann man dieses de bitte nach jeder Runde um 16 erhöhen? Danke. ------------------------- ld b,15 draw_loop4: push bc ld de,16..32..38..64..??? ld hl,$e000 add hl,de ld b,16 draw_loop3: push bc ld b,16 ld a,224 draw_loop2: ld (hl), a inc hl djnz draw_loop2 pop bc ld de,240 add hl,de djnz draw_loop3 pop bc djnz draw_loop4 ------------------------
Peter B. schrieb: > wie kann man dieses de bitte nach jeder Runde um 16 erhöhen? du setzt es vor draw_loop4 auf 0, statt "ld de,16..32..38..64..???" machst du ein "add ld,16" und innerhalb der draw_loop2, wo der Wert von de nochmal überschrieben wird, musst du es irgendwo zwischenspeichern, z.B. push/pop. Oder dort ein anderes register nehmen.
oder eine der Varialblen mit shl 4 mit 16 multiplizieren.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
"addr" muss als Variable im RAM angelegt sein, je nach Assembler als "dw ?" oder "ds 2" oder ähnlich.
Optimierte Version, ohne Stack- und Speichernutzung:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.