Creating a delay using TIMER0 module on PIC16F1939
First off, you should read the MPASM user guide to find out about features which can make your code easier to write and follow. Use cblock or res to allocate variables, and skpz in place of btfss STATUS, Z. Wherever possible use #define to give  symbolic names to 'magic' numbers, and use the predefined symbols for hardware registers and bits (eg. bsf LATA, RA0 instead of bsf LATA, 0). Put radix dec at the start so you don't have to explicitly specify decimal numbers. I also recommend adding a colon at the end of address labels so they can be easily identified. Give each label a descriptive name, indent opcodes, and comment everything!   


  I get some strange results, the RA0 pin doesn't even go to HIGH!


This may be because you haven't set the port up properly. At Reset all I/O pins are set to input and (if capable) analog mode. Before using a pin for output you must clear the associated bit in the TRIS register. 

The PIC16F1939 has a lot of registers - too many to be addressed linearly - so they are split into banks. TRISA is in Bank 1, so you must select Bank 1 before accessing it. The BANKSEL directive is provided to do this painlessly. So to make RA0 an output you would write:-

  BANKSEL TRISA
  BCF     TRISA,RA0   ; RA0 is output
  .
  .
  BANKSEL xxx         ; for next register not in same bank     


You have bsf BSR, BSR1 in a couple of places. Normally you should use BANKSEL or MOVLB to manipulate the Bank Select register. Your code would change to Bank 2 if it was previously set to Bank 0, but not if it was any other bank.