最近糟心事太多,影响太甚,所以进展不大。汇编器(assembler)有了最出版,下面是汇编后的结果。估计STATUS寄存器与MICROCHIP的定义有差异,但没有资料对照,暂且照抄吧。
00001 ;**************************************************************** 00002 ; HR6P C Compiler (HR6CC), v0.01 00003 ; Sat Mar 14 08:32:08 2009 00004 ;**************************************************************** 00005 .device hr6p77, 8192 00006 .dgroup 0, 0x10102020, 0x6F6F6F7F 00007 00008 .segment BANK0 (REL) 0000: (A) 00009 data:: .rs 10 00010 00011 00012 .segment CODE2 (REL), func:0x4 00013 func_1_n .equ func_$data$ + 0 00014 ; ::: 'e1.c' #18: void func () 0000: 00015 func:: 00016 ; ::: 'e1.c' #20: if ( data.buf[2] == 2 ) 0000: 5C02 00017 movi 2 0001: 6D83 00018 clr STATUS 0002: r6A00 00019 xor data+2 0003: 4103 00020 jbs STATUS, 2 0004: r1000 00021 goto L3 00022 ; ::: 'e1.c' #21: data.st.b = 10; 0005: 5C0A 00023 movi 10 0006: r6C80 00024 mova data+1 0007: r6D80 00025 clr data+2 0008: 00026 L3: 00027 ; ::: 'e1.c' #22: long n = data.st; 0008: 6D83 00028 clr STATUS 0009: r6400 00029 mov data 000A: r6C80 00030 mova func_1_n 000B: r6400 00031 mov data+1 000C: r6C80 00032 mova func_1_n+1 000D: r6400 00033 mov data+2 000E: r6C80 00034 mova func_1_n+2 000F: r6400 00035 mov data+3 0010: r6C80 00036 mova func_1_n+3 00037 ; ::: 'e1.c' #23: PA = PB ^ PC; 0011: 6406 00038 mov 6 0012: 6A07 00039 xor 7 0013: 6C85 00040 mova 5 0014: 6C08 00041 ret 00042 00043 00044 .segment CODE0 (ABS, =13) 000D: r6C80 00045 mova _$$ 000E: 6203 00046 swap STATUS 000F: r6C80 00047 mova _$$-1 0010: 640A 00048 mov PCLATH 0011: 6D8A 00049 clr PCLATH 0012: r1000 00050 goto interrupt_13 00051 00052 .segment CODE1 (REL), interrupt_13:0x4 0000: 00053 interrupt_13: 0000: 6D83 00054 clr STATUS 0001: r6C80 00055 mova interrupt_13_$data$+0 0002: 6404 00056 mov FSR 0003: r6C80 00057 mova interrupt_13_$data$+1 0004: r6400 00058 mov _$acc0$ 0005: r6C80 00059 mova interrupt_13_$data$+2 0006: r6400 00060 mov _$acc1$ 0007: r6C80 00061 mova interrupt_13_$data$+3 00062 00063 ; ::: 'e1.c' #30: PA = PB & PC; 0008: 6406 00064 mov 6 0009: 6907 00065 and 7 000A: 6C85 00066 mova 5 000B: r6400 00067 mov interrupt_13_$data$+3 000C: r6C80 00068 mova _$acc1$ 000D: r6400 00069 mov interrupt_13_$data$+2 000E: r6C80 00070 mova _$acc0$ 000F: r6400 00071 mov interrupt_13_$data$+1 0010: 6C84 00072 mova FSR 0011: r6400 00073 mov interrupt_13_$data$+0 0012: 6C8A 00074 mova PCLATH 0013: r6200 00075 swap _$$-1 0014: 6C83 00076 mova STATUS 0015: r6280 00077 swap _$$, F 0016: r6200 00078 swap _$$ 0017: 6C09 00079 retie 00080 00081 00082 .end
|