You've already added a short assembler routine in your C function, so why not do ALL the EEPROM write in assembler?, there's an example in the datasheet, and it seems pointless writing part of it in C and part in assembler?.
please post up your working code, and note what compiler it is for. then other people can make use of the code if they find this thread by searching, or if someone links them to it