📄 main.lss
字号:
564: 09 f4 brne .+2 ; 0x568
566: 61 c0 rjmp .+194 ; 0x62a
568: 2a 81 ldd r18, Y+2 ; 0x02
56a: 3b 81 ldd r19, Y+3 ; 0x03
56c: 24 30 cpi r18, 0x04 ; 4
56e: 31 05 cpc r19, r1
570: 84 f4 brge .+32 ; 0x592
572: 8a 81 ldd r24, Y+2 ; 0x02
574: 9b 81 ldd r25, Y+3 ; 0x03
576: 81 30 cpi r24, 0x01 ; 1
578: 91 05 cpc r25, r1
57a: a9 f1 breq .+106 ; 0x5e6
57c: 2a 81 ldd r18, Y+2 ; 0x02
57e: 3b 81 ldd r19, Y+3 ; 0x03
580: 22 30 cpi r18, 0x02 ; 2
582: 31 05 cpc r19, r1
584: 0c f0 brlt .+2 ; 0x588
586: 40 c0 rjmp .+128 ; 0x608
588: 8a 81 ldd r24, Y+2 ; 0x02
58a: 9b 81 ldd r25, Y+3 ; 0x03
58c: 00 97 sbiw r24, 0x00 ; 0
58e: d1 f0 breq .+52 ; 0x5c4
590: 9c c0 rjmp .+312 ; 0x6ca
592: 2a 81 ldd r18, Y+2 ; 0x02
594: 3b 81 ldd r19, Y+3 ; 0x03
596: 25 30 cpi r18, 0x05 ; 5
598: 31 05 cpc r19, r1
59a: 09 f4 brne .+2 ; 0x59e
59c: 67 c0 rjmp .+206 ; 0x66c
59e: 8a 81 ldd r24, Y+2 ; 0x02
5a0: 9b 81 ldd r25, Y+3 ; 0x03
5a2: 85 30 cpi r24, 0x05 ; 5
5a4: 91 05 cpc r25, r1
5a6: 0c f4 brge .+2 ; 0x5aa
5a8: 51 c0 rjmp .+162 ; 0x64c
5aa: 2a 81 ldd r18, Y+2 ; 0x02
5ac: 3b 81 ldd r19, Y+3 ; 0x03
5ae: 26 30 cpi r18, 0x06 ; 6
5b0: 31 05 cpc r19, r1
5b2: 09 f4 brne .+2 ; 0x5b6
5b4: 6b c0 rjmp .+214 ; 0x68c
5b6: 8a 81 ldd r24, Y+2 ; 0x02
5b8: 9b 81 ldd r25, Y+3 ; 0x03
5ba: 87 30 cpi r24, 0x07 ; 7
5bc: 91 05 cpc r25, r1
5be: 09 f4 brne .+2 ; 0x5c2
5c0: 75 c0 rjmp .+234 ; 0x6ac
5c2: 83 c0 rjmp .+262 ; 0x6ca
{
case _Data:
Clr_Bit(PORTD,DA0);
5c4: 80 91 32 00 lds r24, 0x0032
5c8: 8f 7d andi r24, 0xDF ; 223
5ca: 80 93 32 00 sts 0x0032, r24
Clr_Bit(PORTD,DA1);
5ce: 80 91 32 00 lds r24, 0x0032
5d2: 8f 7b andi r24, 0xBF ; 191
5d4: 80 93 32 00 sts 0x0032, r24
Clr_Bit(PORTD,DA2);
5d8: 9f e7 ldi r25, 0x7F ; 127
5da: 80 91 32 00 lds r24, 0x0032
5de: 89 23 and r24, r25
5e0: 80 93 32 00 sts 0x0032, r24
break;
5e4: 72 c0 rjmp .+228 ; 0x6ca
case _Err_Features:
Set_Bit(PORTD,DA0);
5e6: 80 91 32 00 lds r24, 0x0032
5ea: 80 62 ori r24, 0x20 ; 32
5ec: 80 93 32 00 sts 0x0032, r24
Clr_Bit(PORTD,DA1);
5f0: 80 91 32 00 lds r24, 0x0032
5f4: 8f 7b andi r24, 0xBF ; 191
5f6: 80 93 32 00 sts 0x0032, r24
Clr_Bit(PORTD,DA2);
5fa: 9f e7 ldi r25, 0x7F ; 127
5fc: 80 91 32 00 lds r24, 0x0032
600: 89 23 and r24, r25
602: 80 93 32 00 sts 0x0032, r24
break;
606: 61 c0 rjmp .+194 ; 0x6ca
case _SecCount:
Clr_Bit(PORTD,DA0);
608: 80 91 32 00 lds r24, 0x0032
60c: 8f 7d andi r24, 0xDF ; 223
60e: 80 93 32 00 sts 0x0032, r24
Set_Bit(PORTD,DA1);
612: 80 91 32 00 lds r24, 0x0032
616: 80 64 ori r24, 0x40 ; 64
618: 80 93 32 00 sts 0x0032, r24
Clr_Bit(PORTD,DA2);
61c: 9f e7 ldi r25, 0x7F ; 127
61e: 80 91 32 00 lds r24, 0x0032
622: 89 23 and r24, r25
624: 80 93 32 00 sts 0x0032, r24
break;
628: 50 c0 rjmp .+160 ; 0x6ca
case _SecNum:
Set_Bit(PORTD,DA0);
62a: 80 91 32 00 lds r24, 0x0032
62e: 80 62 ori r24, 0x20 ; 32
630: 80 93 32 00 sts 0x0032, r24
Set_Bit(PORTD,DA1);
634: 80 91 32 00 lds r24, 0x0032
638: 80 64 ori r24, 0x40 ; 64
63a: 80 93 32 00 sts 0x0032, r24
Clr_Bit(PORTD,DA2);
63e: 9f e7 ldi r25, 0x7F ; 127
640: 80 91 32 00 lds r24, 0x0032
644: 89 23 and r24, r25
646: 80 93 32 00 sts 0x0032, r24
break;
64a: 3f c0 rjmp .+126 ; 0x6ca
case _CylinderL:
Clr_Bit(PORTD,DA0);
64c: 80 91 32 00 lds r24, 0x0032
650: 8f 7d andi r24, 0xDF ; 223
652: 80 93 32 00 sts 0x0032, r24
Clr_Bit(PORTD,DA1);
656: 80 91 32 00 lds r24, 0x0032
65a: 8f 7b andi r24, 0xBF ; 191
65c: 80 93 32 00 sts 0x0032, r24
Set_Bit(PORTD,DA2);
660: 80 91 32 00 lds r24, 0x0032
664: 80 68 ori r24, 0x80 ; 128
666: 80 93 32 00 sts 0x0032, r24
break;
66a: 2f c0 rjmp .+94 ; 0x6ca
case _CylinderH:
Set_Bit(PORTD,DA0);
66c: 80 91 32 00 lds r24, 0x0032
670: 80 62 ori r24, 0x20 ; 32
672: 80 93 32 00 sts 0x0032, r24
Clr_Bit(PORTD,DA1);
676: 80 91 32 00 lds r24, 0x0032
67a: 8f 7b andi r24, 0xBF ; 191
67c: 80 93 32 00 sts 0x0032, r24
Set_Bit(PORTD,DA2);
680: 80 91 32 00 lds r24, 0x0032
684: 80 68 ori r24, 0x80 ; 128
686: 80 93 32 00 sts 0x0032, r24
break;
68a: 1f c0 rjmp .+62 ; 0x6ca
case _DeviceAndHead:
Clr_Bit(PORTD,DA0);
68c: 80 91 32 00 lds r24, 0x0032
690: 8f 7d andi r24, 0xDF ; 223
692: 80 93 32 00 sts 0x0032, r24
Set_Bit(PORTD,DA1);
696: 80 91 32 00 lds r24, 0x0032
69a: 80 64 ori r24, 0x40 ; 64
69c: 80 93 32 00 sts 0x0032, r24
Set_Bit(PORTD,DA2);
6a0: 80 91 32 00 lds r24, 0x0032
6a4: 80 68 ori r24, 0x80 ; 128
6a6: 80 93 32 00 sts 0x0032, r24
break;
6aa: 0f c0 rjmp .+30 ; 0x6ca
case _Status_AND_Command:
Set_Bit(PORTD,DA0);
6ac: 80 91 32 00 lds r24, 0x0032
6b0: 80 62 ori r24, 0x20 ; 32
6b2: 80 93 32 00 sts 0x0032, r24
Set_Bit(PORTD,DA1);
6b6: 80 91 32 00 lds r24, 0x0032
6ba: 80 64 ori r24, 0x40 ; 64
6bc: 80 93 32 00 sts 0x0032, r24
Set_Bit(PORTD,DA2);
6c0: 80 91 32 00 lds r24, 0x0032
6c4: 80 68 ori r24, 0x80 ; 128
6c6: 80 93 32 00 sts 0x0032, r24
6ca: 23 96 adiw r28, 0x03 ; 3
6cc: 0f b6 in r0, 0x3f ; 63
6ce: f8 94 cli
6d0: de bf out 0x3e, r29 ; 62
6d2: 0f be out 0x3f, r0 ; 63
6d4: cd bf out 0x3d, r28 ; 61
6d6: df 91 pop r29
6d8: cf 91 pop r28
6da: 08 95 ret
000006dc <Read_HD_ID>:
break;
}
}
/************************************************************
*函数名称:void Read_HD_ID(void) *
*用途:读硬盘ID *
************************************************************/
void Read_HD_ID(void)
{
6dc: cf 93 push r28
6de: df 93 push r29
6e0: cd b7 in r28, 0x3d ; 61
6e2: de b7 in r29, 0x3e ; 62
6e4: 24 97 sbiw r28, 0x04 ; 4
6e6: 0f b6 in r0, 0x3f ; 63
6e8: f8 94 cli
6ea: de bf out 0x3e, r29 ; 62
6ec: 0f be out 0x3f, r0 ; 63
6ee: cd bf out 0x3d, r28 ; 61
uint i,b;
do
{
HDstate=ReadReg(_Status_AND_Command);
6f0: 87 e0 ldi r24, 0x07 ; 7
6f2: 0e 94 a0 01 call 0x340
6f6: 80 93 63 02 sts 0x0263, r24
}while(BSY);
6fa: 80 91 63 02 lds r24, 0x0263
6fe: 88 23 and r24, r24
700: 0c f4 brge .+2 ; 0x704
702: f6 cf rjmp .-20 ; 0x6f0
WriteReg(_Status_AND_Command,0xec);
704: 6c ee ldi r22, 0xEC ; 236
706: 87 e0 ldi r24, 0x07 ; 7
708: 0e 94 34 02 call 0x468
do
{
HDstate=ReadReg(_Status_AND_Command);
70c: 87 e0 ldi r24, 0x07 ; 7
70e: 0e 94 a0 01 call 0x340
712: 80 93 63 02 sts 0x0263, r24
}while((!DRQ)||BSY);
716: 80 91 63 02 lds r24, 0x0263
71a: 99 27 eor r25, r25
71c: 96 95 lsr r25
71e: 87 95 ror r24
720: 96 95 lsr r25
722: 87 95 ror r24
724: 96 95 lsr r25
726: 87 95 ror r24
728: 81 70 andi r24, 0x01 ; 1
72a: 90 70 andi r25, 0x00 ; 0
72c: 00 97 sbiw r24, 0x00 ; 0
72e: 71 f3 breq .-36 ; 0x70c
730: 80 91 63 02 lds r24, 0x0263
734: 88 23 and r24, r24
736: 54 f3 brlt .-44 ; 0x70c
for(i=0;i<256;i++)
738: 19 82 std Y+1, r1 ; 0x01
73a: 1a 82 std Y+2, r1 ; 0x02
73c: 89 81 ldd r24, Y+1 ; 0x01
73e: 9a 81 ldd r25, Y+2 ; 0x02
740: 8f 3f cpi r24, 0xFF ; 255
742: 91 05 cpc r25, r1
744: 09 f0 breq .+2 ; 0x748
746: 58 f5 brcc .+86 ; 0x79e
{
WaitDRQ();
748: 0e 94 78 02 call 0x4f0
ReadData();
74c: 0e 94 d1 01 call 0x3a2
HDSectorDATA[b++]=HDDATAL;
750: de 01 movw r26, r28
752: 13 96 adiw r26, 0x03 ; 3
754: 2d 91 ld r18, X+
756: 3c 91 ld r19, X
758: 11 97 sbiw r26, 0x01 ; 1
75a: c9 01 movw r24, r18
75c: fc 01 movw r30, r24
75e: ef 59 subi r30, 0x9F ; 159
760: ff 4f sbci r31, 0xFF ; 255
762: 80 91 61 02 lds r24, 0x0261
766: 80 83 st Z, r24
768: 2f 5f subi r18, 0xFF ; 255
76a: 3f 4f sbci r19, 0xFF ; 255
76c: 2d 93 st X+, r18
76e: 3c 93 st X, r19
HDSectorDATA[b++]=HDDATAH;
770: de 01 movw r26, r28
772: 13 96 adiw r26, 0x03 ; 3
774: 2d 91 ld r18, X+
776: 3c 91 ld r19, X
778: 11 97 sbiw r26, 0x01 ; 1
77a: c9 01 movw r24, r18
77c: fc 01 movw r30, r24
77e: ef 59 subi r30, 0x9F ; 159
780: ff 4f sbci r31, 0xFF ; 255
782: 80 91 62 02 lds r24, 0x0262
786: 80 83 st Z, r24
788: 2f 5f subi r18, 0xFF ; 255
78a: 3f 4f sbci r19, 0xFF ; 255
78c: 2d 93 st X+, r18
78e: 3c 93 st X, r19
790: 11 97 sbiw r26, 0x01 ; 1
792: 89 81 ldd r24, Y+1 ; 0x01
794: 9a 81 ldd r25, Y+2 ; 0x02
796: 01 96 adiw r24, 0x01 ; 1
798: 89 83 std Y+1, r24 ; 0x01
79a: 9a 83 std Y+2, r25 ; 0x02
79c: cf cf rjmp .-98 ; 0x73c
79e: 24 96 adiw r28, 0x04 ; 4
7a0: 0f b6 in r0, 0x3f ; 63
7a2: f8 94 cli
7a4: de bf out 0x3e, r29 ; 62
7a6: 0f be out 0x3f, r0 ; 63
7a8: cd bf out 0x3d, r28 ; 61
7aa: df 91 pop r29
7ac: cf 91 pop r28
7ae: 08 95 ret
000007b0 <HDRunningActivation>:
}
}
/************************************************************
*函数名称:void HDRunningActivation(void) *
*用途:激活硬盘(转动) *
************************************************************/
void HDRunningActivation(void)
{
7b0: cf 93 push r28
7b2: df 93 push r29
7b4: cd b7 in r28, 0x3d ; 61
7b6: de b7 in r29, 0x3e ; 62
7b8: 21 97 sbiw r28, 0x01 ; 1
7ba: 0f b6 in r0, 0x3f ; 63
7bc: f8 94 cli
7be: de bf out 0x3e, r29 ; 62
7c0: 0f be out 0x3f, r0 ; 63
7c2: cd bf out 0x3d, r28 ; 61
byte temp;
temp=WaitBSY();
7c4: 0e 94 65 02 call 0x4ca
7c8: 89 83 std Y+1, r24 ; 0x01
//if(temp==1)
WriteReg(_Status_AND_Command,0xE1);
7ca: 61 ee ldi r22, 0xE1 ; 225
7cc: 87 e0 ldi r24, 0x07 ; 7
7ce: 0e 94 34 02 call 0x468
7d2: 21 96 adiw r28, 0x01 ; 1
7d4: 0f b6 in r0, 0x3f ; 63
7d6: f8 94 cli
7d8: de bf out 0x3e, r29 ; 62
7da: 0f be out 0x3f, r0 ; 63
7dc: cd bf out 0x3d, r28 ; 61
7de: df 91 pop r29
7e0: cf 91 pop r28
7e2: 08 95 ret
000007e4 <HDStop>:
}
/************************************************************
*函数名称:void HDStop(void) *
*用途:让硬盘休眠(停转) *
************************************************************/
void HDStop(void)
{
7e4: cf 93 push r28
7e6: df 93 push r29
7e8: cd b7 in r28, 0x3d ; 61
7ea: de b7 in r29, 0x3e ; 62
7ec: 21 97 sbiw r28, 0x01 ; 1
7ee: 0f b6 in r0, 0x3f ; 63
7f0: f8 94 cli
7f2: de bf out 0x3e, r29 ; 62
7f4: 0f be out 0x3f, r0 ; 63
7f6: cd bf out 0x3d, r28 ; 61
byte temp;
temp=WaitBSY();
7f8: 0e 94 65 02 call 0x4ca
7fc: 89 83 std Y+1, r24 ; 0x01
//if(temp==1)
WriteReg(_Status_AND_Command,0xE0);
7fe: 60 ee ldi r22, 0xE0 ; 224
800: 87 e0 ldi r24, 0x07 ; 7
802: 0e 94 34 02 call 0x468
806: 21 96 adiw r28, 0x01 ; 1
808: 0f b6 in r0, 0x3f ; 63
80a: f8 94 cli
80c: de bf out 0x3e, r29 ; 62
80e: 0f be out 0x3f, r0 ; 63
810: cd bf out 0x3d, r28 ; 61
812: df 91 pop r29
814: cf 91 pop r28
816: 08 95 ret
00000818 <LBA>:
}
/************************************************************
*函数名称:void LBA(unsigned long lba) *
*用途:LBA寻址 *
************************************************************/
void LBA(unsigned long lba)
{
818: cf 93 push r28
81a: df 93 push r29
81c: cd b7 in r28, 0x3d ; 61
81e: de b7 in r29, 0x3e ; 62
820: 24 97 sbiw r28, 0x04 ; 4
822: 0f b6 in r0, 0x3f ; 63
824: f8 94 cli
826: de bf out 0x3e, r29 ; 62
828: 0f be out 0x3f, r0 ; 63
82a: cd bf out 0x3d, r28 ; 61
82c: 69 83 std Y+1, r22 ; 0x01
82e: 7a 83 std Y+2, r23 ; 0x02
830: 8b 83 std Y+3, r24 ; 0x03
832: 9c 83 std Y+4, r25 ; 0x04
WriteReg(6,0xe0+(lba>>24));
834: 89 81 ldd r24, Y+1 ; 0x01
836: 9a 81 ldd r25, Y+2 ; 0x02
838: ab 81 ldd r26, Y+3 ; 0x03
83a: bc 81 ldd r27, Y+4 ; 0x04
83c: 8b 2f mov r24, r27
83e: 99 27 eor r25, r25
840: aa 27 eor r26, r26
842: bb 27 eor r27, r27
844: 80 52 subi r24, 0x20 ; 32
846: 68 2f mov r22, r24
848: 86 e0 ldi r24, 0x06 ; 6
84a: 0e 94 34 02 call 0x468
WriteReg(5,(lba>>16));
84e: 89 81 ldd r24, Y+1 ; 0x01
850: 9a 81 ldd r25, Y+2 ; 0x02
852: ab 81 ldd r26, Y+3 ; 0x03
854: bc 81 ldd r27, Y+4 ; 0x04
856: cd 01 movw r24, r26
858: aa 27 eor r26, r26
85a: bb 27 eor r27, r27
85c: 68 2f mov r22, r24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -