Schneider / Amstrad CPC Forum
Amstrad / Schneider CPC => Programmierung => Thema gestartet von: oobdoo am 17. Februar 2017, 20:20:49
-
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? :(
-
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