The original message hints at two different problems.
1. Even though the 'year' constant is in the $00-$FF range the poster indicates that his assembler is generating an absolute rather than zero-page instruction.
Quote:
the confusion appeared.after compiled,the instruction opcode is "9c e5 00" rather than "64 e5"
This suggests assembler in use is in error or some other factor not visible in the short code sample is misdirecting the assembler.
2. The code appears to be being executed in some kind of emulator that does not support 65C02 opcodes. If this is the case then the poster should stick to the 6502 opcode set and configure his assembler to reject extended instructions.
Quote:
So when the program runs to this step stop will inevitably happen and notify "Error instruction (opcode)at address ....".
More information about the assembler and emulator in use might help determine what is going on here.