Посмотрел в HEX и тут вижу: в самом начале какой-то "2BFD" на 000. На "3e2" уже начинаются какие-то данные. Почему так произходит?
0x2BFD это команда 
goto 0x03FD, то есть безусловный переход по адресу 0x03FD.
Так как в исходном коде нет обработчика прерываний, кода по вектору 
0х0004 нет.
Размещение кода "снизу" флеша - стандартная фича микрочиповских компиляторов для 8-разрядных контроллеров. Сверху (младшие адреса) обычно размещаются таблицы констант. Даже тело обработчика прерываний размещается снизу, а на векторе 0004 тоже обычно goto.
PS. Далее исполнение выглядит так (в коде нет вызова калибровочной константы):
Код:
0x03FD  0x0183  clrf  STATUS
0x03FE  0x2BE2  goto 0x03E2
0x03E2  0x1683  bsf  STATUS, RP0
0x03E3  0x0195  clrf  WPU                        ; WPU=0x00
0x03E4  0x1781  bsf  OPTION_REG, GPPU
0x03E5  0x3007  movlw  0x07
0x03E6  0x1283  bcf  STATUS, RP0
0x03E7  0x0099  movwf  CMCON0             ; CMCON=0x07
0x03E8  0x1683  bsf  STATUS, RP0
0x03EA  0x0185  clrf  TRISIO                    ; TRISIO=0x00
0x03EB  0x1283  bcf  STATUS, RP0
0x03EC  0x0185  clrf  GPIO                       ; GPIO=0x00
0x03ED  0x1283  bcf  STATUS, RP0
0x03EE  0x3010  movlw  0x10
.....