📄 main.lst
字号:
1126 054a 9FE7 ldi r25,lo8(127)
1127 054c 8091 3200 lds r24,50
1128 0550 8923 and r24,r25
1129 0552 8093 3200 sts 50,r24
404:main.c **** break;
1131 .LM146:
1132 0556 72C0 rjmp .L40
1133 .L43:
405:main.c **** case _Err_Features:
406:main.c **** Set_Bit(PORTD,DA0);
1135 .LM147:
1136 0558 8091 3200 lds r24,50
1137 055c 8062 ori r24,lo8(32)
1138 055e 8093 3200 sts 50,r24
407:main.c **** Clr_Bit(PORTD,DA1);
1140 .LM148:
1141 0562 8091 3200 lds r24,50
1142 0566 8F7B andi r24,lo8(-65)
1143 0568 8093 3200 sts 50,r24
408:main.c **** Clr_Bit(PORTD,DA2);
1145 .LM149:
1146 056c 9FE7 ldi r25,lo8(127)
1147 056e 8091 3200 lds r24,50
1148 0572 8923 and r24,r25
1149 0574 8093 3200 sts 50,r24
409:main.c **** break;
1151 .LM150:
1152 0578 61C0 rjmp .L40
1153 .L44:
410:main.c **** case _SecCount:
411:main.c **** Clr_Bit(PORTD,DA0);
1155 .LM151:
1156 057a 8091 3200 lds r24,50
1157 057e 8F7D andi r24,lo8(-33)
1158 0580 8093 3200 sts 50,r24
412:main.c **** Set_Bit(PORTD,DA1);
1160 .LM152:
1161 0584 8091 3200 lds r24,50
1162 0588 8064 ori r24,lo8(64)
1163 058a 8093 3200 sts 50,r24
413:main.c **** Clr_Bit(PORTD,DA2);
1165 .LM153:
1166 058e 9FE7 ldi r25,lo8(127)
1167 0590 8091 3200 lds r24,50
1168 0594 8923 and r24,r25
1169 0596 8093 3200 sts 50,r24
414:main.c **** break;
1171 .LM154:
1172 059a 50C0 rjmp .L40
1173 .L45:
415:main.c **** case _SecNum:
416:main.c **** Set_Bit(PORTD,DA0);
1175 .LM155:
1176 059c 8091 3200 lds r24,50
1177 05a0 8062 ori r24,lo8(32)
1178 05a2 8093 3200 sts 50,r24
417:main.c **** Set_Bit(PORTD,DA1);
1180 .LM156:
1181 05a6 8091 3200 lds r24,50
1182 05aa 8064 ori r24,lo8(64)
1183 05ac 8093 3200 sts 50,r24
418:main.c **** Clr_Bit(PORTD,DA2);
1185 .LM157:
1186 05b0 9FE7 ldi r25,lo8(127)
1187 05b2 8091 3200 lds r24,50
1188 05b6 8923 and r24,r25
1189 05b8 8093 3200 sts 50,r24
419:main.c **** break;
1191 .LM158:
1192 05bc 3FC0 rjmp .L40
1193 .L46:
420:main.c **** case _CylinderL:
421:main.c **** Clr_Bit(PORTD,DA0);
1195 .LM159:
1196 05be 8091 3200 lds r24,50
1197 05c2 8F7D andi r24,lo8(-33)
1198 05c4 8093 3200 sts 50,r24
422:main.c **** Clr_Bit(PORTD,DA1);
1200 .LM160:
1201 05c8 8091 3200 lds r24,50
1202 05cc 8F7B andi r24,lo8(-65)
1203 05ce 8093 3200 sts 50,r24
423:main.c **** Set_Bit(PORTD,DA2);
1205 .LM161:
1206 05d2 8091 3200 lds r24,50
1207 05d6 8068 ori r24,lo8(-128)
1208 05d8 8093 3200 sts 50,r24
424:main.c **** break;
1210 .LM162:
1211 05dc 2FC0 rjmp .L40
1212 .L47:
425:main.c **** case _CylinderH:
426:main.c **** Set_Bit(PORTD,DA0);
1214 .LM163:
1215 05de 8091 3200 lds r24,50
1216 05e2 8062 ori r24,lo8(32)
1217 05e4 8093 3200 sts 50,r24
427:main.c **** Clr_Bit(PORTD,DA1);
1219 .LM164:
1220 05e8 8091 3200 lds r24,50
1221 05ec 8F7B andi r24,lo8(-65)
1222 05ee 8093 3200 sts 50,r24
428:main.c **** Set_Bit(PORTD,DA2);
1224 .LM165:
1225 05f2 8091 3200 lds r24,50
1226 05f6 8068 ori r24,lo8(-128)
1227 05f8 8093 3200 sts 50,r24
429:main.c **** break;
1229 .LM166:
1230 05fc 1FC0 rjmp .L40
1231 .L48:
430:main.c **** case _DeviceAndHead:
431:main.c **** Clr_Bit(PORTD,DA0);
1233 .LM167:
1234 05fe 8091 3200 lds r24,50
1235 0602 8F7D andi r24,lo8(-33)
1236 0604 8093 3200 sts 50,r24
432:main.c **** Set_Bit(PORTD,DA1);
1238 .LM168:
1239 0608 8091 3200 lds r24,50
1240 060c 8064 ori r24,lo8(64)
1241 060e 8093 3200 sts 50,r24
433:main.c **** Set_Bit(PORTD,DA2);
1243 .LM169:
1244 0612 8091 3200 lds r24,50
1245 0616 8068 ori r24,lo8(-128)
1246 0618 8093 3200 sts 50,r24
434:main.c **** break;
1248 .LM170:
1249 061c 0FC0 rjmp .L40
1250 .L49:
435:main.c **** case _Status_AND_Command:
436:main.c **** Set_Bit(PORTD,DA0);
1252 .LM171:
1253 061e 8091 3200 lds r24,50
1254 0622 8062 ori r24,lo8(32)
1255 0624 8093 3200 sts 50,r24
437:main.c **** Set_Bit(PORTD,DA1);
1257 .LM172:
1258 0628 8091 3200 lds r24,50
1259 062c 8064 ori r24,lo8(64)
1260 062e 8093 3200 sts 50,r24
438:main.c **** Set_Bit(PORTD,DA2);
1262 .LM173:
1263 0632 8091 3200 lds r24,50
1264 0636 8068 ori r24,lo8(-128)
1265 0638 8093 3200 sts 50,r24
1266 .L40:
1267 /* epilogue: frame size=3 */
1268 063c 2396 adiw r28,3
1269 063e 0FB6 in __tmp_reg__,__SREG__
1270 0640 F894 cli
1271 0642 DEBF out __SP_H__,r29
1272 0644 0FBE out __SREG__,__tmp_reg__
1273 0646 CDBF out __SP_L__,r28
1274 0648 DF91 pop r29
1275 064a CF91 pop r28
1276 064c 0895 ret
1277 /* epilogue end (size=9) */
1278 /* function RegAddrChangePhysics size 218 (199) */
1280 .Lscope11:
1282 .global Read_HD_ID
1284 Read_HD_ID:
439:main.c **** break;
440:main.c **** }
441:main.c **** }
442:main.c **** /************************************************************
443:main.c **** *函数名称:void Read_HD_ID(void) *
444:main.c **** *用途:读硬盘ID *
445:main.c **** ************************************************************/
446:main.c **** void Read_HD_ID(void)
447:main.c **** {
1286 .LM174:
1287 /* prologue: frame size=4 */
1288 064e CF93 push r28
1289 0650 DF93 push r29
1290 0652 CDB7 in r28,__SP_L__
1291 0654 DEB7 in r29,__SP_H__
1292 0656 2497 sbiw r28,4
1293 0658 0FB6 in __tmp_reg__,__SREG__
1294 065a F894 cli
1295 065c DEBF out __SP_H__,r29
1296 065e 0FBE out __SREG__,__tmp_reg__
1297 0660 CDBF out __SP_L__,r28
1298 /* prologue end (size=10) */
1299 .L52:
448:main.c **** uint i,b;
449:main.c **** do
450:main.c **** {
451:main.c **** HDstate=ReadReg(_Status_AND_Command);
1301 .LM175:
1302 0662 87E0 ldi r24,lo8(7)
1303 0664 0E94 0000 call ReadReg
1304 0668 8093 0000 sts HDstate,r24
452:main.c **** }while(BSY);
1306 .LM176:
1307 066c 8091 0000 lds r24,HDstate
1308 0670 8823 tst r24
1309 0672 0CF4 brge .L53
1311 .LM177:
1312 0674 F6CF rjmp .L52
1313 .L53:
453:main.c **** WriteReg(_Status_AND_Command,0xec);
1315 .LM178:
1316 0676 6CEE ldi r22,lo8(-20)
1317 0678 87E0 ldi r24,lo8(7)
1318 067a 0E94 0000 call WriteReg
1319 .L55:
454:main.c **** do
455:main.c **** {
456:main.c **** HDstate=ReadReg(_Status_AND_Command);
1321 .LM179:
1322 067e 87E0 ldi r24,lo8(7)
1323 0680 0E94 0000 call ReadReg
1324 0684 8093 0000 sts HDstate,r24
457:main.c **** }while((!DRQ)||BSY);
1326 .LM180:
1327 0688 8091 0000 lds r24,HDstate
1328 068c 9927 clr r25
1329 068e 9695 lsr r25
1330 0690 8795 ror r24
1331 0692 9695 lsr r25
1332 0694 8795 ror r24
1333 0696 9695 lsr r25
1334 0698 8795 ror r24
1335 069a 8170 andi r24,lo8(1)
1336 069c 9070 andi r25,hi8(1)
1337 069e 0097 sbiw r24,0
1338 06a0 71F3 breq .L55
1339 06a2 8091 0000 lds r24,HDstate
1340 06a6 8823 tst r24
1341 06a8 54F3 brlt .L55
458:main.c **** for(i=0;i<256;i++)
1343 .LM181:
1344 06aa 1982 std Y+1,__zero_reg__
1345 06ac 1A82 std Y+2,__zero_reg__
1346 .L59:
1347 06ae 8981 ldd r24,Y+1
1348 06b0 9A81 ldd r25,Y+2
1349 06b2 8F3F cpi r24,255
1350 06b4 9105 cpc r25,__zero_reg__
1351 06b6 09F0 breq .+2
1352 06b8 58F5 brsh .L51
459:main.c **** {
460:main.c **** WaitDRQ();
1354 .LM182:
1355 06ba 0E94 0000 call WaitDRQ
461:main.c **** ReadData();
1357 .LM183:
1358 06be 0E94 0000 call ReadData
462:main.c **** HDSectorDATA[b++]=HDDATAL;
1360 .LM184:
1361 06c2 DE01 movw r26,r28
1362 06c4 1396 adiw r26,3
1363 06c6 2D91 ld r18,X+
1364 06c8 3C91 ld r19,X
1365 06ca 1197 sbiw r26,1
1366 06cc C901 movw r24,r18
1367 06ce FC01 movw r30,r24
1368 06d0 E050 subi r30,lo8(-(HDSectorDATA))
1369 06d2 F040 sbci r31,hi8(-(HDSectorDATA))
1370 06d4 8091 0000 lds r24,HDDATAL
1371 06d8 8083 st Z,r24
1372 06da 2F5F subi r18,lo8(-(1))
1373 06dc 3F4F sbci r19,hi8(-(1))
1374 06de 2D93 st X+,r18
1375 06e0 3C93 st X,r19
463:main.c **** HDSectorDATA[b++]=HDDATAH;
1377 .LM185:
1378 06e2 DE01 movw r26,r28
1379 06e4 1396 adiw r26,3
1380 06e6 2D91 ld r18,X+
1381 06e8 3C91 ld r19,X
1382 06ea 1197 sbiw r26,1
1383 06ec C901 movw r24,r18
1384 06ee FC01 movw r30,r24
1385 06f0 E050 subi r30,lo8(-(HDSectorDATA))
1386 06f2 F040 sbci r31,hi8(-(HDSectorDATA))
1387 06f4 8091 0000 lds r24,HDDATAH
1388 06f8 8083 st Z,r24
1389 06fa 2F5F subi r18,lo8(-(1))
1390 06fc 3F4F sbci r19,hi8(-(1))
1391 06fe 2D93 st X+,r18
1392 0700 3C93 st X,r19
1393 0702 1197 sbiw r26,1
1395 .LM186:
1396 0704 8981 ldd r24,Y+1
1397 0706 9A81 ldd r25,Y+2
1398 0708 0196 adiw r24,1
1399 070a 8983 std Y+1,r24
1400 070c 9A83 std Y+2,r25
1401 070e CFCF rjmp .L59
1402 .L51:
1403 /* epilogue: frame size=4 */
1404 0710 2496 adiw r28,4
1405 0712 0FB6 in __tmp_reg__,__SREG__
1406 0714 F894 cli
1407 0716 DEBF out __SP_H__,r29
1408 0718 0FBE out __SREG__,__tmp_reg__
1409 071a CDBF out __SP_L__,r28
1410 071c DF91 pop r29
1411 071e CF91 pop r28
1412 0720 0895 ret
1413 /* epilogue end (size=9) */
1414 /* function Read_HD_ID size 106 (87) */
1420 .Lscope12:
1422 .global HDRunningActivation
1424 HDRunningActivation:
464:main.c **** }
465:main.c **** }
466:main.c **** /************************************************************
467:main.c **** *函数名称:void HDRunningActivation(void) *
468:main.c **** *用途:激活硬盘(转动) *
469:main.c **** ************************************************************/
470:main.c **** void H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -