Re: A86: Re: Efficiency Problem


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

Re: A86: Re: Efficiency Problem




In a message dated 12/10/98 8:39:19 PM Pacific Standard Time,
assets@eden.rutgers.edu writes:

> >>  then do this:
>  >>   ld a,(Weapon)
>  >>   ld hl, table
>  >
>  >I don't understand from here...
>  >>   add a,a
>  >>   ld e,a
>  >>   ld d,0
>  >>   add hl,de
>  >to here. What does this do? I'm guessing it has something to do with
>  getting
>  >the pointer into hl? But why is de in there?
>  >
>  >>   call _ldhlind
>  >
>  >
>  >>
>  >>  and hl will point to the right string
>  >>
>  
>  you have a table of pointers, each pointer being two bytes each, so you
>  multiply the weapon number by two (add a,a) and put it into de to add it to
>  hl (the table pointer).  Then you have a pointer to the pointer of the
>  string in hl so you call _ldhlind, which does, effectually: ld hl,(hl)

Dang! Assembly makes some glorious sense sometimes! It all makes sense when
you know what it all means. :) BTW, what *IS* the difference between call
_ldhlind and ld hl,(hl)? Is it just that there is no opcode for ld hl,(hl)?