⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 output.lss

📁 AT89C51 MP3源程序AT89C51 MP3源程序 SD AT89C51 MP3源程序AT89C51 MP3源程序 SD
💻 LSS
📖 第 1 页 / 共 5 页
字号:

output.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         000000be  00800100  000014dc  00001570  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  1 .text         000014dc  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .bss          0000022c  008001be  008001be  0000162e  2**0
                  ALLOC
  3 .noinit       00000000  008003ea  008003ea  0000162e  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  0000162e  2**0
                  CONTENTS
  5 .stab         000030a8  00000000  00000000  00001630  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      0000134a  00000000  00000000  000046d8  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
       0:	0c 94 46 00 	jmp	0x8c
       4:	0c 94 63 00 	jmp	0xc6
       8:	0c 94 63 00 	jmp	0xc6
       c:	0c 94 63 00 	jmp	0xc6
      10:	0c 94 63 00 	jmp	0xc6
      14:	0c 94 63 00 	jmp	0xc6
      18:	0c 94 63 00 	jmp	0xc6
      1c:	0c 94 63 00 	jmp	0xc6
      20:	0c 94 63 00 	jmp	0xc6
      24:	0c 94 63 00 	jmp	0xc6
      28:	0c 94 63 00 	jmp	0xc6
      2c:	0c 94 63 00 	jmp	0xc6
      30:	0c 94 63 00 	jmp	0xc6
      34:	0c 94 63 00 	jmp	0xc6
      38:	0c 94 63 00 	jmp	0xc6
      3c:	0c 94 63 00 	jmp	0xc6
      40:	0c 94 63 00 	jmp	0xc6
      44:	0c 94 63 00 	jmp	0xc6
      48:	0c 94 63 00 	jmp	0xc6
      4c:	0c 94 63 00 	jmp	0xc6
      50:	0c 94 63 00 	jmp	0xc6
      54:	0c 94 63 00 	jmp	0xc6
      58:	0c 94 63 00 	jmp	0xc6
      5c:	0c 94 63 00 	jmp	0xc6
      60:	0c 94 63 00 	jmp	0xc6
      64:	0c 94 63 00 	jmp	0xc6
      68:	0c 94 63 00 	jmp	0xc6
      6c:	0c 94 63 00 	jmp	0xc6
      70:	0c 94 63 00 	jmp	0xc6
      74:	0c 94 63 00 	jmp	0xc6
      78:	0c 94 63 00 	jmp	0xc6
      7c:	0c 94 63 00 	jmp	0xc6
      80:	0c 94 63 00 	jmp	0xc6
      84:	0c 94 63 00 	jmp	0xc6
      88:	0c 94 63 00 	jmp	0xc6

0000008c <__ctors_end>:
      8c:	11 24       	eor	r1, r1
      8e:	1f be       	out	0x3f, r1	; 63
      90:	cf ef       	ldi	r28, 0xFF	; 255
      92:	d0 e1       	ldi	r29, 0x10	; 16
      94:	de bf       	out	0x3e, r29	; 62
      96:	cd bf       	out	0x3d, r28	; 61

00000098 <__do_copy_data>:
      98:	11 e0       	ldi	r17, 0x01	; 1
      9a:	a0 e0       	ldi	r26, 0x00	; 0
      9c:	b1 e0       	ldi	r27, 0x01	; 1
      9e:	ec ed       	ldi	r30, 0xDC	; 220
      a0:	f4 e1       	ldi	r31, 0x14	; 20
      a2:	00 e0       	ldi	r16, 0x00	; 0
      a4:	0b bf       	out	0x3b, r16	; 59
      a6:	02 c0       	rjmp	.+4      	; 0xac

000000a8 <.__do_copy_data_loop>:
      a8:	07 90       	elpm	r0, Z+
      aa:	0d 92       	st	X+, r0

000000ac <.__do_copy_data_start>:
      ac:	ae 3b       	cpi	r26, 0xBE	; 190
      ae:	b1 07       	cpc	r27, r17
      b0:	d9 f7       	brne	.-10     	; 0xa8

000000b2 <__do_clear_bss>:
      b2:	13 e0       	ldi	r17, 0x03	; 3
      b4:	ae eb       	ldi	r26, 0xBE	; 190
      b6:	b1 e0       	ldi	r27, 0x01	; 1
      b8:	01 c0       	rjmp	.+2      	; 0xbc

000000ba <.do_clear_bss_loop>:
      ba:	1d 92       	st	X+, r1

000000bc <.do_clear_bss_start>:
      bc:	aa 3e       	cpi	r26, 0xEA	; 234
      be:	b1 07       	cpc	r27, r17
      c0:	e1 f7       	brne	.-8      	; 0xba
      c2:	0c 94 94 09 	jmp	0x1328

000000c6 <__bad_interrupt>:
      c6:	0c 94 00 00 	jmp	0x0

000000ca <_Z10Cache_Initv>:
;*****************************************************************************************************
;*/
void Cache_Init(void)
{
	cache.Index		= (uint32)(-1);		/* 缓冲无效扇区			*/
      ca:	8f ef       	ldi	r24, 0xFF	; 255
      cc:	9f ef       	ldi	r25, 0xFF	; 255
      ce:	af ef       	ldi	r26, 0xFF	; 255
      d0:	bf ef       	ldi	r27, 0xFF	; 255
      d2:	80 93 be 01 	sts	0x01BE, r24
      d6:	90 93 bf 01 	sts	0x01BF, r25
      da:	a0 93 c0 01 	sts	0x01C0, r26
      de:	b0 93 c1 01 	sts	0x01C1, r27
	cache.WbFlag	= 0;				/* 无需回写				*/
      e2:	10 92 c2 01 	sts	0x01C2, r1
      e6:	08 95       	ret

000000e8 <_Z10OpenSectorm>:
}	

/*
;*****************************************************************************************************
;* 函数名称 : OpenSector
;* 描    述 : 打开指定扇区
;* 输 	 入 : SecIndex: 扇区号
;*        
;* 输 	 出 : 扇区读写地址
;*****************************************************************************************************
;*/
uint8 *OpenSector(uint32 SecIndex)
{
      e8:	ef 92       	push	r14
      ea:	ff 92       	push	r15
      ec:	0f 93       	push	r16
      ee:	1f 93       	push	r17
      f0:	cf 93       	push	r28
      f2:	df 93       	push	r29
      f4:	7b 01       	movw	r14, r22
      f6:	8c 01       	movw	r16, r24
	if (cache.Index != SecIndex)		/* 当前不是缓冲该扇区	*/
      f8:	a0 91 be 01 	lds	r26, 0x01BE
      fc:	b0 91 bf 01 	lds	r27, 0x01BF
     100:	c0 91 c0 01 	lds	r28, 0x01C0
     104:	d0 91 c1 01 	lds	r29, 0x01C1
     108:	a6 17       	cp	r26, r22
     10a:	b7 07       	cpc	r27, r23
     10c:	c8 07       	cpc	r28, r24
     10e:	d9 07       	cpc	r29, r25
     110:	69 f1       	breq	.+90     	; 0x16c
	{
		if (cache.WbFlag)				/* 缓冲的扇区需要回写	*/
     112:	80 91 c2 01 	lds	r24, 0x01C2
     116:	88 23       	and	r24, r24
     118:	51 f0       	breq	.+20     	; 0x12e
		{
			/* 回写缓冲区的内容到物理扇区 */
			if (!WriteIDESector(cache.Index, cache.Buf))
     11a:	43 ec       	ldi	r20, 0xC3	; 195
     11c:	51 e0       	ldi	r21, 0x01	; 1
     11e:	bd 01       	movw	r22, r26
     120:	ce 01       	movw	r24, r28
     122:	0e 94 bf 08 	call	0x117e
     126:	88 23       	and	r24, r24
     128:	b1 f0       	breq	.+44     	; 0x156
			{
				return ((uint8 *)0);
			}
			cache.WbFlag = 0;			/* 无需再回写			*/
     12a:	10 92 c2 01 	sts	0x01C2, r1
		}
		if (!ReadIDESector(SecIndex, cache.Buf))
     12e:	43 ec       	ldi	r20, 0xC3	; 195
     130:	51 e0       	ldi	r21, 0x01	; 1
     132:	c8 01       	movw	r24, r16
     134:	b7 01       	movw	r22, r14
     136:	0e 94 5d 08 	call	0x10ba
     13a:	88 23       	and	r24, r24
     13c:	79 f4       	brne	.+30     	; 0x15c
		{
			cache.Index = (uint32)(-1);	/* 缓冲区的内容可能已脏 */
     13e:	8f ef       	ldi	r24, 0xFF	; 255
     140:	9f ef       	ldi	r25, 0xFF	; 255
     142:	af ef       	ldi	r26, 0xFF	; 255
     144:	bf ef       	ldi	r27, 0xFF	; 255
     146:	80 93 be 01 	sts	0x01BE, r24
     14a:	90 93 bf 01 	sts	0x01BF, r25
     14e:	a0 93 c0 01 	sts	0x01C0, r26
     152:	b0 93 c1 01 	sts	0x01C1, r27
			return ((uint8 *)0);
     156:	80 e0       	ldi	r24, 0x00	; 0
     158:	90 e0       	ldi	r25, 0x00	; 0
     15a:	0a c0       	rjmp	.+20     	; 0x170
		}
		cache.Index = SecIndex;			/* 当前缓冲该扇区		*/
     15c:	e0 92 be 01 	sts	0x01BE, r14
     160:	f0 92 bf 01 	sts	0x01BF, r15
     164:	00 93 c0 01 	sts	0x01C0, r16
     168:	10 93 c1 01 	sts	0x01C1, r17
	}
	return cache.Buf;					/* 返回缓冲区地址		*/
     16c:	83 ec       	ldi	r24, 0xC3	; 195
     16e:	91 e0       	ldi	r25, 0x01	; 1
     170:	df 91       	pop	r29
     172:	cf 91       	pop	r28
     174:	1f 91       	pop	r17
     176:	0f 91       	pop	r16
     178:	ff 90       	pop	r15
     17a:	ef 90       	pop	r14
     17c:	08 95       	ret

0000017e <_Z11WriteSectorv>:
}

/*
;*****************************************************************************************************
;* 函数名称 : WriteSector
;* 描    述 : 写已打开的扇区
;* 输 	 入 : 无
;*        
;* 输 	 出 : 无
;*****************************************************************************************************
;*/	
void WriteSector(void)
{
	cache.WbFlag = 1;					/* 切换时需回写扇区		*/
     17e:	81 e0       	ldi	r24, 0x01	; 1
     180:	80 93 c2 01 	sts	0x01C2, r24
     184:	08 95       	ret

00000186 <_Z14CacheWriteBackv>:
}

/*
;*****************************************************************************************************
;* 函数名称 : CacheWriteBack
;* 描    述 : 回写已打开的扇区
;* 输 	 入 : 无
;*        
;* 输 	 出 : TRUE OR FALSE
;*****************************************************************************************************
;*/		
uint8 CacheWriteBack(void)
{
	if (cache.WbFlag)					/* 需回写扇区			*/			
     186:	80 91 c2 01 	lds	r24, 0x01C2
     18a:	88 23       	and	r24, r24
     18c:	99 f0       	breq	.+38     	; 0x1b4
	{
		/* 回写缓冲区的内容到物理扇区 */
		if (!WriteIDESector(cache.Index, cache.Buf))
     18e:	43 ec       	ldi	r20, 0xC3	; 195
     190:	51 e0       	ldi	r21, 0x01	; 1
     192:	60 91 be 01 	lds	r22, 0x01BE
     196:	70 91 bf 01 	lds	r23, 0x01BF
     19a:	80 91 c0 01 	lds	r24, 0x01C0
     19e:	90 91 c1 01 	lds	r25, 0x01C1
     1a2:	0e 94 bf 08 	call	0x117e
     1a6:	88 23       	and	r24, r24
     1a8:	19 f4       	brne	.+6      	; 0x1b0
		{
			return FALSE;
     1aa:	80 e0       	ldi	r24, 0x00	; 0
     1ac:	90 e0       	ldi	r25, 0x00	; 0
     1ae:	08 95       	ret
		}
		cache.WbFlag = 0;				/* 无需再回写			*/
     1b0:	10 92 c2 01 	sts	0x01C2, r1
	}
	return TRUE;
     1b4:	81 e0       	ldi	r24, 0x01	; 1
     1b6:	90 e0       	ldi	r25, 0x00	; 0
}
     1b8:	08 95       	ret
     1ba:	08 95       	ret

000001bc <_Z9Disk_Initv>:
;* 输 	 出 : TRUE OR FALSE
;*****************************************************************************************************
;*/
uint8 Disk_Init(void)
{
     1bc:	8f 92       	push	r8
     1be:	9f 92       	push	r9
     1c0:	af 92       	push	r10
     1c2:	bf 92       	push	r11
     1c4:	df 92       	push	r13
     1c6:	ef 92       	push	r14
     1c8:	ff 92       	push	r15
     1ca:	0f 93       	push	r16
     1cc:	1f 93       	push	r17
     1ce:	cf 93       	push	r28
     1d0:	df 93       	push	r29
	uint8 *Buf;
	uint8  NumFATs;
	uint32 RootSecCnt;
	uint32 FATSz;
	uint32 TotSec;

	if (!Init_IDE())
     1d2:	0e 94 0a 08 	call	0x1014
     1d6:	88 23       	and	r24, r24
     1d8:	09 f4       	brne	.+2      	; 0x1dc
     1da:	fd c0       	rjmp	.+506    	; 0x3d6
	{
		return FALSE;
	}

	Buf = OpenSector(0);
     1dc:	60 e0       	ldi	r22, 0x00	; 0
     1de:	70 e0       	ldi	r23, 0x00	; 0
     1e0:	80 e0       	ldi	r24, 0x00	; 0
     1e2:	90 e0       	ldi	r25, 0x00	; 0
     1e4:	0e 94 74 00 	call	0xe8
     1e8:	7c 01       	movw	r14, r24
	if (Buf == NULL)
     1ea:	00 97       	sbiw	r24, 0x00	; 0
     1ec:	09 f4       	brne	.+2      	; 0x1f0
     1ee:	f8 c0       	rjmp	.+496    	; 0x3e0
	{
		return FALSE;
	}

	/* 每扇区字节数 */
	if (GET_UINT16(Buf, BPB_BytsPerSec) != 512)	/* 必须为512 */
     1f0:	fc 01       	movw	r30, r24
     1f2:	83 85       	ldd	r24, Z+11	; 0x0b
     1f4:	28 2f       	mov	r18, r24
     1f6:	33 27       	eor	r19, r19
     1f8:	84 85       	ldd	r24, Z+12	; 0x0c
     1fa:	99 27       	eor	r25, r25
     1fc:	98 2f       	mov	r25, r24
     1fe:	88 27       	eor	r24, r24
     200:	28 2b       	or	r18, r24
     202:	39 2b       	or	r19, r25
     204:	20 50       	subi	r18, 0x00	; 0
     206:	32 40       	sbci	r19, 0x02	; 2
     208:	09 f0       	breq	.+2      	; 0x20c
     20a:	e5 c0       	rjmp	.+458    	; 0x3d6
	{
		return FALSE;
	}

	/* 检查0扇区末尾是否为0xAA55 */
	if (GET_UINT16(Buf, 510) != 0xAA55)
     20c:	4e ef       	ldi	r20, 0xFE	; 254
     20e:	51 e0       	ldi	r21, 0x01	; 1
     210:	e4 0e       	add	r14, r20
     212:	f5 1e       	adc	r15, r21
     214:	f7 01       	movw	r30, r14
     216:	81 91       	ld	r24, Z+
     218:	7f 01       	movw	r14, r30
     21a:	28 2f       	mov	r18, r24
     21c:	33 27       	eor	r19, r19
     21e:	80 81       	ld	r24, Z
     220:	41 e0       	ldi	r20, 0x01	; 1
     222:	5e ef       	ldi	r21, 0xFE	; 254
     224:	e4 0e       	add	r14, r20
     226:	f5 1e       	adc	r15, r21
     228:	99 27       	eor	r25, r25
     22a:	98 2f       	mov	r25, r24
     22c:	88 27       	eor	r24, r24
     22e:	28 2b       	or	r18, r24
     230:	39 2b       	or	r19, r25
     232:	25 55       	subi	r18, 0x55	; 85
     234:	3a 4a       	sbci	r19, 0xAA	; 170
     236:	09 f0       	breq	.+2      	; 0x23a
     238:	ce c0       	rjmp	.+412    	; 0x3d6
	{
		return FALSE;
	}

	/* 保留扇区数 */
	/* 第一张FAT表开始扇区 */
	FS_FATStartSec		= GET_UINT16(Buf, BPB_RsvdSecCnt);
     23a:	f7 01       	movw	r30, r14
     23c:	d6 84       	ldd	r13, Z+14	; 0x0e
     23e:	d0 92 cd 03 	sts	0x03CD, r13

	/* FAT表数 */
	NumFATs				= Buf[BPB_NumFATs];
     242:	40 89       	ldd	r20, Z+16	; 0x10

	/* 每张FAT表占扇区数 */
	FATSz				= GET_UINT16(Buf, BPB_FATSz16);
     244:	86 89       	ldd	r24, Z+22	; 0x16
     246:	28 2f       	mov	r18, r24
     248:	33 27       	eor	r19, r19
     24a:	87 89       	ldd	r24, Z+23	; 0x17
     24c:	99 27       	eor	r25, r25
     24e:	98 2f       	mov	r25, r24
     250:	88 27       	eor	r24, r24
     252:	28 2b       	or	r18, r24

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -