The adress pointer in the 44780 is incremented automatically so if you set it to $40 and send 5 bytes of data they will end up at adress $40-$44 automatically. Just as they would when you write to the DDRAM, you (for example) clear the screen which sets the adress pointer to 0 (first char on first line). Each byte received from there on will end up at "the next" location, right? There's no difference in writing to CGRAM. So if you prefer your idealistic way over using the STR modifer
Code:
LCDOUT $FE, $40  ' Set adress pointer to first location of CGRAM
For i = 0 to 7        ' Send 8 bytes of CG data
  LCDOUT Graph[i]
NEXT
At least give it a try and see if it does what you're asking.

/Henrik.