Ich überlege gerade wie man in Z80 ne Addition durchführt. :motz:
Beispiel:
ld hl,1000
ld d,255
ld b,77
Wie bekommt man ein HL+D+B hin und zwar so das in HL 1332 steht? :(
Quote from: oobdoo on 17. February 2017, 20:20:49
Ich überlege gerade wie man in Z80 ne Addition durchführt. Beispiel:
ld hl,1000
ld d,255
ld b,77
Wie bekommt man ein HL+D+B hin und zwar so das in HL 1332 steht? :(
LD HL,1000
LD DE,255
LD BC,77
ADD HL,DE
ADD HL,BC
In diesem Fall wird die 16 Bit Addition des Z80 benutzt. Das Ergebnis befindet sich in HL. :)
Mein Problem ist immer noch das ganze mit High/Low Byte, Carry usw.
Habe es jetzt so gelöst: :irre:
ld hl,1000
ld d,0
ld a,(XaltDurch8)
ld e,a
add hl,de
ld d,0
ld a,(YaltMal3)
ld e,a
add hl,de
Mit fehlt ein "ADD HL,wert" und ähnliches im Z80.
Es geht auch ein bischen schneller...
ld hl,1000
ld d,0
ld a,(XaltDurch8)
ld e,a
add hl,de
ld a,(YaltMal3)
ld e,a
add hl,de
Oder alternativ...
xor a,a ;A = 0 (doppelt so schnell wie ld a,0)
ld hl,1000
ld de,(XaltDurch8)
ld d,a ;D = 0 setzen
add hl,de
ld de,(YaltMal3)
ld d,a
add hl,de
Danke, werde ich mir demnächst genauer anschauen.
Hier noch ein paar Optimierungen:
http://z80-heaven.wikidot.com/optimization