Tan solo tienes que multiplicar curhp por 3 y ver si es mayor que maxhp o no.
Algo del estilo a:
ld a,(curhphigh)
ld b,a
ld a,(curhplow)
ld c,a ; bc = curhp
push bc
sla c
rl b ; 2*bc
pop hl
add hl,bc ; bc + 2*bc
ld a,(maxhphigh)
cp h
jr z .comprobarlowbyte
jr nc .menosde33%hp
.comprobarlowbyte:
ld a,(maxhplow)
jr nc .menosde33%hp
; codigo de masde33%hp
;(...)
.menosde33%hp:
;(...)