Re: A86: comparing strings


[Prev][Next][Index][Thread]

Re: A86: comparing strings




This first one is pretty close to what I thought to use.  Thanks.

Robert Niedziela wrote:

> There are two procedures to compare strings: first tests if strings are
> equal, second tests, which is "greater"
>
> ;---------------------------------------------------------------------------
>
> ;Compare strings with addresses given in HL and DE
> ;Returns:       A=1 if strings equal, otherwise 0
> IS_DE_HL_STR_EQ:
>         push    de
>         push    hl
>         push    bc
> IDHSE_Loop:
>         ld      a, (de)
>         cp      (hl)
>         jr      nz, IDHSE_Not
>         inc     de
>         inc     hl
>         djnz    IDHSE_Loop
>         ld      a, 1                    ;equal
>         jr      IDHSE_End
> IDHSE_Not:
>         xor     a                       ;not equal
> IDHSE_End:
>         pop     bc
>         pop     hl
>         pop     de
>         ret
>
> ;---------------------------------------------------------------------------
>
> ;is string with addr in DE is greater than string with addr in HL ?
> ;If greater then A=1, otherwise A=0
> IS_DE_GR_HL_STR:
>         ld      a, (de)
>         cp      (hl)
>         jr      nz, IDGHS_Test
>         inc     de
>         inc     hl
>         djnz    IS_DE_GR_HL_STR
>         jr      IDGHS_Not
> IDGHS_Test:
>         jr      c, IDGHS_Not
>         ld      a, 1
>         ret
> IDGHS_Not:
>         xor     a
>         ret




References: