Storing a 9 bit GPR/SFR address will require two bytes. When you use that address value for setting up an indirect address you will copy the least significant 8 bits of the address to the FSR register and copy the 9th most significant bit of the address to the IRP bit of the STATUS register. The IRP bit specifies if the 8-bit address in FSR is located in bank 0-1 or in bank 2-3.
bsf STATUS,IRP ;banks 2 & 3
movlw 0x10 ;start at 0x110
movwf FSR
ClrLoop clrf INDF ;clear bank 2
bsf FSR,7 ;move to back 3
clrf INDF ;clear bank 3
bcf FSR,7 ;back to bank 2
incf FSR,f ;move to next location
movlw 0x70 ;end of bank 2 & 3
xorwf FSR,w ;reached end yet?
btfss STATUS,Z
goto ClrLoop ;no, so loop
Is there any reason not to clear the "common" RAM area? The routine is smaller and faster even though it's clearing more RAM.
If Suraj is using a 12-bit core device it won't work because there's no addlw instruction. It would have to be rewritten using one additional word (10 words instead of 9 words)...