cblock and EQU can both used to define your user registers, although cblock is much easier to use if you want to define several.
You just have to specify the start address of the block of regs eg.
cblock 0x20
myreg
myreg1
myreg2
endc
This is the same as:
myreg equ 0x20
myreg1 equ 0x21
myreg2 equ 0x22
It saves you having to specify the address for each reg defined.
For your direction variables, I think you just need to read individual bits of a reg eg.
direction equ 0x20 ; setup a reg to hold the direction bits
; *** variable EQUATES ***
up equ 0 ; bits for direction
down equ 1
left equ 2
right equ 3
then in your program you test the appropriate bit in the direction reg:
Btfsc direction, right
Call Move_Down ; IT IS WAS MOVING Right NOW MOVE Down
Btfsc direction, left
Call Move_Up ; IT IS WAS MOVING Left NOW MOVE UP
Btfsc direction, down
Call Move_Left ; IT IS WAS MOVING Down NOW MOVE Left
Btfsc direction, up
Call Move_Right ; IT IS WAS MOVING Up NOW MOVE Right