One at a time.
AFAIK, SirCmpwn never actually released it. What you're probably talking about is just a bit he wrote up so we could give feedback on formatting.
As for larger sprites, you have two options. The first one is to use the Bitmap( command, which is a bit slower (being an OS call) and somewhat inflexible. Your other option is two draw multiple sprites, though, for 32*32, that would be 16 8*8 sprites.
Now to your main question.
First of all, the subroutine DR you have should be at the end of your code, because otherwise your program will right after drawing the sprite once. Also, you need to erase the sprite at its original location when you move it because the edges get left behind. Depending on what else you're doing, you could erase the whole screen, backup the entire screen to the backbuffer, or you might have some other option that I can't think of right now.
Also, that said, are you sure it's exactly 8 pixels? That shouldn't happen. If you haven't realized yet, the direct key commands (of the form getkey(9)) are much faster than just using getkey, and it's probably just moving very quickly.
(Note that some of my criticisms of your code may not be valid, as I'm unsure if what you posted is just an example)
Good luck in Axe!