Schneider / Amstrad CPC Forum

Amstrad / Schneider CPC => Programmierung => Topic started by: oobdoo on 08. February 2015, 18:14:13

Title: 16-Bit Vergleich
Post by: oobdoo on 08. February 2015, 18:14:13
Wie kann man denn ein oder zwei 16-Werte vergleichen?

Also ein

A>HL

DE<>HL

BC=HL

DE>BC

und ähnliches???

Plödes Bitgefummel, bekomm ich nich in die Birne rein. Ich werd alt...  :(
Title: Re: 16-Bit Vergleich
Post by: oobdoo on 08. February 2015, 20:45:22
Hab mal rumgefummelt und es scheint zu laufen im Test.

org 4444

ld hl,(_hl)
ld de,(_de)

ld a,h
cp d
jr z,nichtgroesser
jr c,nichtgroesser

ld a,l
cp e
jr z,nichtgroesser
jr c,nichtgroesser

nop
ret

.nichtgroesser
nop
ret



._hl defb 12341
._de defb 12342


org 4000

ld hl,(_hl)
ld de,(_de)

ld a,d
cp h
jr nz,ungleich1
.gleich1
ld a,l
cp e
jr nz,ungleich2
.gleich2
nop
ret

.ungleich2
.ungleich1
nop
ret


._hl
defw 16386

._de
defw 16385   
Title: Re: 16-Bit Vergleich
Post by: TFM on 09. February 2015, 00:25:59
Ja, stimmt, da musst Du zweimal einen 8 Bit Wert vergleichen.

Bei Koordinaten z.B. ist es gut erst die unteren 8 Bits zu vergleichen, da die nicht so oft gleich sind (statistisch), man spaart sich dann den Rest.