?? main.lss
字號:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000b3a 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00800060 00000b3a 00000bce 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000204 00800060 00800060 00000bce 2**0
ALLOC
3 .noinit 00000000 00800264 00800264 00000bce 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000bce 2**0
CONTENTS
5 .stab 00001164 00000000 00000000 00000bd0 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 000009ad 00000000 00000000 00001d34 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54
4: 0c 94 45 00 jmp 0x8a
8: 0c 94 45 00 jmp 0x8a
c: 0c 94 45 00 jmp 0x8a
10: 0c 94 45 00 jmp 0x8a
14: 0c 94 45 00 jmp 0x8a
18: 0c 94 45 00 jmp 0x8a
1c: 0c 94 45 00 jmp 0x8a
20: 0c 94 45 00 jmp 0x8a
24: 0c 94 45 00 jmp 0x8a
28: 0c 94 45 00 jmp 0x8a
2c: 0c 94 47 00 jmp 0x8e
30: 0c 94 45 00 jmp 0x8a
34: 0c 94 45 00 jmp 0x8a
38: 0c 94 45 00 jmp 0x8a
3c: 0c 94 45 00 jmp 0x8a
40: 0c 94 45 00 jmp 0x8a
44: 0c 94 45 00 jmp 0x8a
48: 0c 94 45 00 jmp 0x8a
4c: 0c 94 45 00 jmp 0x8a
50: 0c 94 45 00 jmp 0x8a
00000054 <__ctors_end>:
54: 11 24 eor r1, r1
56: 1f be out 0x3f, r1 ; 63
58: cf e5 ldi r28, 0x5F ; 95
5a: d4 e0 ldi r29, 0x04 ; 4
5c: de bf out 0x3e, r29 ; 62
5e: cd bf out 0x3d, r28 ; 61
00000060 <__do_copy_data>:
60: 10 e0 ldi r17, 0x00 ; 0
62: a0 e6 ldi r26, 0x60 ; 96
64: b0 e0 ldi r27, 0x00 ; 0
66: ea e3 ldi r30, 0x3A ; 58
68: fb e0 ldi r31, 0x0B ; 11
6a: 02 c0 rjmp .+4 ; 0x70
0000006c <.do_copy_data_loop>:
6c: 05 90 lpm r0, Z+
6e: 0d 92 st X+, r0
00000070 <.do_copy_data_start>:
70: a0 36 cpi r26, 0x60 ; 96
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c
00000076 <__do_clear_bss>:
76: 12 e0 ldi r17, 0x02 ; 2
78: a0 e6 ldi r26, 0x60 ; 96
7a: b0 e0 ldi r27, 0x00 ; 0
7c: 01 c0 rjmp .+2 ; 0x80
0000007e <.do_clear_bss_loop>:
7e: 1d 92 st X+, r1
00000080 <.do_clear_bss_start>:
80: a4 36 cpi r26, 0x64 ; 100
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e
86: 0c 94 62 00 jmp 0xc4
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0
0000008e <__vector_11>:
byte HDSectorDATA[512]; //硬盤扇區數據
//******************************************************************************
//UART接收中斷
SIGNAL(SIG_UART_RECV)
{
8e: 1f 92 push r1
90: 0f 92 push r0
92: 0f b6 in r0, 0x3f ; 63
94: 0f 92 push r0
96: 11 24 eor r1, r1
98: 8f 93 push r24
9a: cf 93 push r28
9c: df 93 push r29
9e: cd b7 in r28, 0x3d ; 61
a0: de b7 in r29, 0x3e ; 62
uartdata=UDR;//調試用的,不用管它
a2: 80 91 2c 00 lds r24, 0x002C
a6: 80 93 60 00 sts 0x0060, r24
nop();
aa: 00 00 nop
UDR=uartdata;
ac: 80 91 60 00 lds r24, 0x0060
b0: 80 93 2c 00 sts 0x002C, r24
b4: df 91 pop r29
b6: cf 91 pop r28
b8: 8f 91 pop r24
ba: 0f 90 pop r0
bc: 0f be out 0x3f, r0 ; 63
be: 0f 90 pop r0
c0: 1f 90 pop r1
c2: 18 95 reti
000000c4 <main>:
}
//******************************************************************************
int main(void)
{
c4: c9 e5 ldi r28, 0x59 ; 89
c6: d4 e0 ldi r29, 0x04 ; 4
c8: de bf out 0x3e, r29 ; 62
ca: cd bf out 0x3d, r28 ; 61
ulong t1=0;
cc: 19 82 std Y+1, r1 ; 0x01
ce: 1a 82 std Y+2, r1 ; 0x02
d0: 1b 82 std Y+3, r1 ; 0x03
d2: 1c 82 std Y+4, r1 ; 0x04
cli();
d4: f8 94 cli
//SP=0x45f; //WinAVR已經初始化堆棧
DDRC=0xc3;
d6: 83 ec ldi r24, 0xC3 ; 195
d8: 80 93 34 00 sts 0x0034, r24
PORTD=1<<PD0|1<<PD1;
dc: 83 e0 ldi r24, 0x03 ; 3
de: 80 93 32 00 sts 0x0032, r24
DDRD=0xfe;
e2: 8e ef ldi r24, 0xFE ; 254
e4: 80 93 31 00 sts 0x0031, r24
UCSRA=1<<U2X;
e8: 82 e0 ldi r24, 0x02 ; 2
ea: 80 93 2b 00 sts 0x002B, r24
UCSRB=1<<RXCIE|1<<RXEN|1<<TXEN;
ee: 88 e9 ldi r24, 0x98 ; 152
f0: 80 93 2a 00 sts 0x002A, r24
UBRRL=105; //f0/9615/8+1,9615
f4: 89 e6 ldi r24, 0x69 ; 105
f6: 80 93 29 00 sts 0x0029, r24
delay_ms(10);
fa: 8a e0 ldi r24, 0x0A ; 10
fc: 90 e0 ldi r25, 0x00 ; 0
fe: 0e 94 f0 00 call 0x1e0
Clr_Bit(PORTD,Rst); //硬盤復位
102: 80 91 32 00 lds r24, 0x0032
106: 8f 7e andi r24, 0xEF ; 239
108: 80 93 32 00 sts 0x0032, r24
delay_ms(40);
10c: 88 e2 ldi r24, 0x28 ; 40
10e: 90 e0 ldi r25, 0x00 ; 0
110: 0e 94 f0 00 call 0x1e0
Set_Bit(PORTD,Rst);
114: 80 91 32 00 lds r24, 0x0032
118: 80 61 ori r24, 0x10 ; 16
11a: 80 93 32 00 sts 0x0032, r24
delay_ms(10);
11e: 8a e0 ldi r24, 0x0A ; 10
120: 90 e0 ldi r25, 0x00 ; 0
122: 0e 94 f0 00 call 0x1e0
HDinit();
126: 0e 94 50 01 call 0x2a0
//Read_HD_ID();
sei();
12a: 78 94 sei
while(1)
{
switch(uartdata)
12c: 80 91 60 00 lds r24, 0x0060
130: 28 2f mov r18, r24
132: 33 27 eor r19, r19
134: 2d 83 std Y+5, r18 ; 0x05
136: 3e 83 std Y+6, r19 ; 0x06
138: 8d 81 ldd r24, Y+5 ; 0x05
13a: 9e 81 ldd r25, Y+6 ; 0x06
13c: 84 30 cpi r24, 0x04 ; 4
13e: 91 05 cpc r25, r1
140: 71 f1 breq .+92 ; 0x19e
142: 2d 81 ldd r18, Y+5 ; 0x05
144: 3e 81 ldd r19, Y+6 ; 0x06
146: 25 30 cpi r18, 0x05 ; 5
148: 31 05 cpc r19, r1
14a: 5c f4 brge .+22 ; 0x162
14c: 8d 81 ldd r24, Y+5 ; 0x05
14e: 9e 81 ldd r25, Y+6 ; 0x06
150: 82 30 cpi r24, 0x02 ; 2
152: 91 05 cpc r25, r1
154: 89 f0 breq .+34 ; 0x178
156: 2d 81 ldd r18, Y+5 ; 0x05
158: 3e 81 ldd r19, Y+6 ; 0x06
15a: 23 30 cpi r18, 0x03 ; 3
15c: 31 05 cpc r19, r1
15e: 89 f0 breq .+34 ; 0x182
160: 3d c0 rjmp .+122 ; 0x1dc
162: 8d 81 ldd r24, Y+5 ; 0x05
164: 9e 81 ldd r25, Y+6 ; 0x06
166: 85 30 cpi r24, 0x05 ; 5
168: 91 05 cpc r25, r1
16a: 39 f1 breq .+78 ; 0x1ba
16c: 2d 81 ldd r18, Y+5 ; 0x05
16e: 3e 81 ldd r19, Y+6 ; 0x06
170: 26 30 cpi r18, 0x06 ; 6
172: 31 05 cpc r19, r1
174: 59 f1 breq .+86 ; 0x1cc
176: 32 c0 rjmp .+100 ; 0x1dc
{
case 2:
Read_HD_ID();
178: 0e 94 6e 03 call 0x6dc
uartdata=0;
17c: 10 92 60 00 sts 0x0060, r1
break;
180: 2d c0 rjmp .+90 ; 0x1dc
case 3:
ReadSectorData(t1);
182: 69 81 ldd r22, Y+1 ; 0x01
184: 7a 81 ldd r23, Y+2 ; 0x02
186: 8b 81 ldd r24, Y+3 ; 0x03
188: 9c 81 ldd r25, Y+4 ; 0x04
18a: 0e 94 83 04 call 0x906
nop();
18e: 00 00 nop
UDR=uartdata;
190: 80 91 60 00 lds r24, 0x0060
194: 80 93 2c 00 sts 0x002C, r24
uartdata=0;
198: 10 92 60 00 sts 0x0060, r1
break;
19c: 1f c0 rjmp .+62 ; 0x1dc
case 4:
WriteSectorData(t1);
19e: 69 81 ldd r22, Y+1 ; 0x01
1a0: 7a 81 ldd r23, Y+2 ; 0x02
1a2: 8b 81 ldd r24, Y+3 ; 0x03
1a4: 9c 81 ldd r25, Y+4 ; 0x04
1a6: 0e 94 d9 04 call 0x9b2
nop();
1aa: 00 00 nop
UDR=uartdata;
1ac: 80 91 60 00 lds r24, 0x0060
1b0: 80 93 2c 00 sts 0x002C, r24
uartdata=0;
1b4: 10 92 60 00 sts 0x0060, r1
break;
1b8: 11 c0 rjmp .+34 ; 0x1dc
case 5:
HDStop();
1ba: 0e 94 f2 03 call 0x7e4
UDR=uartdata;
1be: 80 91 60 00 lds r24, 0x0060
1c2: 80 93 2c 00 sts 0x002C, r24
uartdata=0;
1c6: 10 92 60 00 sts 0x0060, r1
break;
1ca: 08 c0 rjmp .+16 ; 0x1dc
case 6:
HDRunningActivation();
1cc: 0e 94 d8 03 call 0x7b0
UDR=uartdata;
1d0: 80 91 60 00 lds r24, 0x0060
1d4: 80 93 2c 00 sts 0x002C, r24
uartdata=0;
1d8: 10 92 60 00 sts 0x0060, r1
break;
}
wdr();
1dc: a8 95 wdr
1de: a6 cf rjmp .-180 ; 0x12c
000001e0 <delay_ms>:
}
}
/************************************************************
*函數名稱:delay_ms(uint ms) *
*用途:延時 *
************************************************************/
void delay_ms(uint ms)//亂延時的,可能不準
{
1e0: cf 93 push r28
1e2: df 93 push r29
1e4: cd b7 in r28, 0x3d ; 61
1e6: de b7 in r29, 0x3e ; 62
1e8: 26 97 sbiw r28, 0x06 ; 6
1ea: 0f b6 in r0, 0x3f ; 63
1ec: f8 94 cli
1ee: de bf out 0x3e, r29 ; 62
1f0: 0f be out 0x3f, r0 ; 63
1f2: cd bf out 0x3d, r28 ; 61
1f4: 89 83 std Y+1, r24 ; 0x01
1f6: 9a 83 std Y+2, r25 ; 0x02
uint i,j;
for(j=0;j<ms;j++)
1f8: 1d 82 std Y+5, r1 ; 0x05
1fa: 1e 82 std Y+6, r1 ; 0x06
1fc: 2d 81 ldd r18, Y+5 ; 0x05
1fe: 3e 81 ldd r19, Y+6 ; 0x06
200: 89 81 ldd r24, Y+1 ; 0x01
202: 9a 81 ldd r25, Y+2 ; 0x02
204: 28 17 cp r18, r24
206: 39 07 cpc r19, r25
208: a8 f4 brcc .+42 ; 0x234
{
for(i=0;i<1140;i++)
20a: 1b 82 std Y+3, r1 ; 0x03
20c: 1c 82 std Y+4, r1 ; 0x04
20e: 8b 81 ldd r24, Y+3 ; 0x03
210: 9c 81 ldd r25, Y+4 ; 0x04
212: 24 e0 ldi r18, 0x04 ; 4
214: 84 37 cpi r24, 0x74 ; 116
216: 92 07 cpc r25, r18
218: 38 f4 brcc .+14 ; 0x228
wdr();
21a: a8 95 wdr
21c: 8b 81 ldd r24, Y+3 ; 0x03
21e: 9c 81 ldd r25, Y+4 ; 0x04
220: 01 96 adiw r24, 0x01 ; 1
222: 8b 83 std Y+3, r24 ; 0x03
224: 9c 83 std Y+4, r25 ; 0x04
226: f3 cf rjmp .-26 ; 0x20e
228: 8d 81 ldd r24, Y+5 ; 0x05
22a: 9e 81 ldd r25, Y+6 ; 0x06
22c: 01 96 adiw r24, 0x01 ; 1
22e: 8d 83 std Y+5, r24 ; 0x05
230: 9e 83 std Y+6, r25 ; 0x06
232: e4 cf rjmp .-56 ; 0x1fc
234: 26 96 adiw r28, 0x06 ; 6
236: 0f b6 in r0, 0x3f ; 63
238: f8 94 cli
23a: de bf out 0x3e, r29 ; 62
23c: 0f be out 0x3f, r0 ; 63
23e: cd bf out 0x3d, r28 ; 61
240: df 91 pop r29
242: cf 91 pop r28
244: 08 95 ret
00000246 <delay_us>:
}
}
/************************************************************
*函數名稱:delay_us(uint us) *
*用途:延時 *
************************************************************/
void delay_us(uint us)//亂延時的,可能不準
{
246: cf 93 push r28
248: df 93 push r29
24a: cd b7 in r28, 0x3d ; 61
24c: de b7 in r29, 0x3e ; 62
24e: 24 97 sbiw r28, 0x04 ; 4
250: 0f b6 in r0, 0x3f ; 63
252: f8 94 cli
254: de bf out 0x3e, r29 ; 62
256: 0f be out 0x3f, r0 ; 63
258: cd bf out 0x3d, r28 ; 61
25a: 89 83 std Y+1, r24 ; 0x01
25c: 9a 83 std Y+2, r25 ; 0x02
int j;
for (j=0;j<us;j++)
25e: 1b 82 std Y+3, r1 ; 0x03
260: 1c 82 std Y+4, r1 ; 0x04
262: 2b 81 ldd r18, Y+3 ; 0x03
264: 3c 81 ldd r19, Y+4 ; 0x04
266: 89 81 ldd r24, Y+1 ; 0x01
268: 9a 81 ldd r25, Y+2 ; 0x02
26a: 28 17 cp r18, r24
26c: 39 07 cpc r19, r25
26e: 78 f4 brcc .+30 ; 0x28e
{
wdr();
270: a8 95 wdr
...
282: 8b 81 ldd r24, Y+3 ; 0x03
284: 9c 81 ldd r25, Y+4 ; 0x04
286: 01 96 adiw r24, 0x01 ; 1
288: 8b 83 std Y+3, r24 ; 0x03
28a: 9c 83 std Y+4, r25 ; 0x04
28c: ea cf rjmp .-44 ; 0x262
28e: 24 96 adiw r28, 0x04 ; 4
290: 0f b6 in r0, 0x3f ; 63
292: f8 94 cli
294: de bf out 0x3e, r29 ; 62
296: 0f be out 0x3f, r0 ; 63
298: cd bf out 0x3d, r28 ; 61
29a: df 91 pop r29
29c: cf 91 pop r28
29e: 08 95 ret
000002a0 <HDinit>:
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
}
}
/************************************************************
*函數名稱:void HDinit(void) *
*用途:硬盤初始化 *
************************************************************/
void HDinit(void)
{
2a0: cf 93 push r28
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -