2010-06-16 58 views
3

我想獲取硬盤的參數。使用描述的技術here中斷№13(ah = 48) - 不能正常工作

  • 這是代碼顯示軟盤的正常參數:

    mov dl,00h 
    mov ah,08h 
    int 13h 
    
  • 這是代碼,顯示出硬盤的無效參數(可能是,我的硬盤空間大(LBA)) :

    mov dl,80h 
    mov ah,08h 
    int 13h 
    
  • 而且我寫這個代碼:

    mov dl,80h 
    mov ah,48h 
    int 13h 
    

代碼給出了cf = 1(錯誤)。我如何解決它?

回答

4

出錯時,AH應該包含錯誤代碼。它以前如何?

Ralf Brown's (excellent) interrupt list詳細介紹他們:

00h successful completion 
01h invalid function in AH or invalid parameter 
02h address mark not found 
03h disk write-protected 
04h sector not found/read error 
05h reset failed (hard disk) 
05h data did not verify correctly (TI Professional PC) 
06h disk changed (floppy) 
07h drive parameter activity failed (hard disk) 
08h DMA overrun 
09h data boundary error (attempted DMA across 64K boundary or >80h sectors) 
0Ah bad sector detected (hard disk) 
0Bh bad track detected (hard disk) 
0Ch unsupported track or invalid media 
0Dh invalid number of sectors on format (PS/2 hard disk) 
0Eh control data address mark detected (hard disk) 
0Fh DMA arbitration level out of range (hard disk) 
10h uncorrectable CRC or ECC error on read 
11h data ECC corrected (hard disk) 
20h controller failure 
31h no media in drive (IBM/MS INT 13 extensions) 
32h incorrect drive type stored in CMOS (Compaq) 
40h seek failed 
80h timeout (not ready) 
AAh drive not ready (hard disk) 
B0h volume not locked in drive (INT 13 extensions) 
B1h volume locked in drive (INT 13 extensions) 
B2h volume not removable (INT 13 extensions) 
B3h volume in use (INT 13 extensions) 
B4h lock count exceeded (INT 13 extensions) 
B5h valid eject request failed (INT 13 extensions) 
B6h volume present but read protected (INT 13 extensions) 
BBh undefined error (hard disk) 
CCh write fault (hard disk) 
E0h status register error (hard disk) 
FFh sense operation failed (hard disk) 

您還沒有指定你的DS:SI設置爲以recive的信息。這個設置是否正確?


從您的評論:

01H無效功能在AH或無效的參數。

檢查INT13擴展是否可用於您的BIOS。 AH = 41h,DL = 80h(第一個驅動器),BX = 55AAh,INT13,進位將在返回時清除。

+0

01h AH或無效參數中的函數無效。 我不做什麼? – GLeBaTi 2010-06-16 13:25:33

+0

您的BIOS是否支持擴展? Int13/Ah = 41應該能夠告訴你。 – paxdiablo 2010-06-16 13:30:02

+0

@paxdiablo,請問您可以添加一個鏈接到Ralf Brown's(很好,我確定!)中斷列表詳細信息,讓人們知道您的來源? – Oddthinking 2010-06-16 13:31:45

0

某些計算機不能正確保存您的ds和es寄存器,因此應在從int-13函數返回時恢復這些函數-48還根據版本檢查緩衝區大小爲1A 1E或42。