📄 18f_can.lst
字号:
_cinit; C:\MCC18\src\traditional\startup\c018i.c
C:\MCC18\src\traditional\startup\c018i.c
#pragma code _cinit_scn C:\MCC18\src\traditional\startup\c018i.c
void C:\MCC18\src\traditional\startup\c018i.c
_do_cinit (void) C:\MCC18\src\traditional\startup\c018i.c
{ C:\MCC18\src\traditional\startup\c018i.c
/* we'll make the assumption in the following code that these statics C:\MCC18\src\traditional\startup\c018i.c
000110 0e2a MOVLW 0x2a * will be allocated into the same bank. C:\MCC18\src\traditional\startup\c018i.c
000112 6ef6 MOVWF 0xf6,0x0
000114 0e00 MOVLW 0x0
000116 6ef7 MOVWF 0xf7,0x0
000118 0e00 MOVLW 0x0
00011a 6ef8 MOVWF 0xf8,0x0
*/ C:\MCC18\src\traditional\startup\c018i.c
00011c 0100 MOVLB 0x0 static short long prom; C:\MCC18\src\traditional\startup\c018i.c
00011e 0009 TBLRDPOSTINC static unsigned short curr_byte; C:\MCC18\src\traditional\startup\c018i.c
000120 50f5 MOVF 0xf5,0x0,0x0 static unsigned short curr_entry; C:\MCC18\src\traditional\startup\c018i.c
000122 6f65 MOVWF 0x65,0x1 static short long data_ptr; C:\MCC18\src\traditional\startup\c018i.c
000124 0009 TBLRDPOSTINC C:\MCC18\src\traditional\startup\c018i.c
000126 50f5 MOVF 0xf5,0x0,0x0 // Initialized data... C:\MCC18\src\traditional\startup\c018i.c
000128 6f66 MOVWF 0x66,0x1 TBLPTR = (short long)&_cinit; C:\MCC18\src\traditional\startup\c018i.c
_asm C:\MCC18\src\traditional\startup\c018i.c
movlb data_ptr C:\MCC18\src\traditional\startup\c018i.c
tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c
movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c
movwf curr_entry, 1 C:\MCC18\src\traditional\startup\c018i.c
00012a e103 BNZ 0x132 tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c
00012c 6765 TSTFSZ 0x65,0x1 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c
00012e d001 BRA 0x132 movwf curr_entry+1, 1 C:\MCC18\src\traditional\startup\c018i.c
_endasm C:\MCC18\src\traditional\startup\c018i.c
000130 d03d BRA 0x1ac //while (curr_entry) C:\MCC18\src\traditional\startup\c018i.c
//{ C:\MCC18\src\traditional\startup\c018i.c
test: C:\MCC18\src\traditional\startup\c018i.c
_asm C:\MCC18\src\traditional\startup\c018i.c
bnz 3 C:\MCC18\src\traditional\startup\c018i.c
tstfsz curr_entry, 1 C:\MCC18\src\traditional\startup\c018i.c
bra 1 C:\MCC18\src\traditional\startup\c018i.c
_endasm C:\MCC18\src\traditional\startup\c018i.c
goto done; C:\MCC18\src\traditional\startup\c018i.c
/* Count down so we only have to look up the data in _cinit C:\MCC18\src\traditional\startup\c018i.c
000132 0009 TBLRDPOSTINC * once. C:\MCC18\src\traditional\startup\c018i.c
000134 50f5 MOVF 0xf5,0x0,0x0 * C:\MCC18\src\traditional\startup\c018i.c
000136 6f60 MOVWF 0x60,0x1 * At this point we know that TBLPTR points to the top of the current C:\MCC18\src\traditional\startup\c018i.c
000138 0009 TBLRDPOSTINC * entry in _cinit, so we can just start reading the from, to, and C:\MCC18\src\traditional\startup\c018i.c
00013a 50f5 MOVF 0xf5,0x0,0x0 * size values. C:\MCC18\src\traditional\startup\c018i.c
00013c 6f61 MOVWF 0x61,0x1 */ C:\MCC18\src\traditional\startup\c018i.c
00013e 0009 TBLRDPOSTINC _asm C:\MCC18\src\traditional\startup\c018i.c
000140 50f5 MOVF 0xf5,0x0,0x0 /* read the source address */ C:\MCC18\src\traditional\startup\c018i.c
000142 6f62 MOVWF 0x62,0x1 tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c
movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c
000144 0009 TBLRDPOSTINC movwf prom, 1 C:\MCC18\src\traditional\startup\c018i.c
tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c
000146 0009 TBLRDPOSTINC movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c
000148 50f5 MOVF 0xf5,0x0,0x0 movwf prom+1, 1 C:\MCC18\src\traditional\startup\c018i.c
00014a 6ee9 MOVWF 0xe9,0x0 tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c
00014c 0009 TBLRDPOSTINC movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c
00014e 50f5 MOVF 0xf5,0x0,0x0 movwf prom+2, 1 C:\MCC18\src\traditional\startup\c018i.c
000150 6eea MOVWF 0xea,0x0 /* skip a byte since it's stored as a 32bit int */ C:\MCC18\src\traditional\startup\c018i.c
tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c
000152 0009 TBLRDPOSTINC /* read the destination address directly into FSR0 */ C:\MCC18\src\traditional\startup\c018i.c
000154 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c
movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c
000156 0009 TBLRDPOSTINC movwf FSR0L, 0 C:\MCC18\src\traditional\startup\c018i.c
000158 50f5 MOVF 0xf5,0x0,0x0 tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c
00015a 6f63 MOVWF 0x63,0x1 movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c
00015c 0009 TBLRDPOSTINC movwf FSR0H, 0 C:\MCC18\src\traditional\startup\c018i.c
00015e 50f5 MOVF 0xf5,0x0,0x0 /* skip two bytes since it's stored as a 32bit int */ C:\MCC18\src\traditional\startup\c018i.c
000160 6f64 MOVWF 0x64,0x1 tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c
tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c
000162 0009 TBLRDPOSTINC /* read the destination address directly into FSR0 */ C:\MCC18\src\traditional\startup\c018i.c
000164 0009 TBLRDPOSTINC tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c
movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c
movwf curr_byte, 1 C:\MCC18\src\traditional\startup\c018i.c
tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c
movf TABLAT, 0, 0 C:\MCC18\src\traditional\startup\c018i.c
movwf curr_byte+1, 1 C:\MCC18\src\traditional\startup\c018i.c
/* skip two bytes since it's stored as a 32bit int */ C:\MCC18\src\traditional\startup\c018i.c
tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c
tblrdpostinc C:\MCC18\src\traditional\startup\c018i.c
000166 cff6 MOVFF 0xff6,0x67 _endasm C:\MCC18\src\traditional\startup\c018i.c
000168 f067
00016a cff7 MOVFF 0xff7,0x68
00016c f068
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -