中断号13 (ah=48) - 无法工作

4

我想获取我的硬盘参数。使用这里描述的技术。

  • This is code showing normal parameters of floppy disk:

    mov dl,00h
    mov ah,08h
    int 13h
    
  • This is code, showing not valid parameters of hard disk (may be, my hard disk space is big (LBA)):

    mov dl,80h 
    mov ah,08h 
    int 13h
    
  • And I've written this code:

    mov dl,80h
    mov ah,48h
    int 13h
    
代码出现了错误,cf = 1。我该如何修复它?
2个回答

5

当出现错误时,AH 应包含错误代码。它是什么?

Ralf Brown的(极好的)中断列表详细列出了它们:

 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。是否已正确设置?


根据您的评论:

01h表示AH中的无效函数或无效参数。

请检查您的BIOS是否可用INT13扩展。AH = 41h,DL = 80h(第一驱动器),BX = 55AAh,INT13,在返回时如果有扩展,则进位将被清除。


01h AH 中的无效函数或无效参数。我做错了什么? - Glebka
你的BIOS支持扩展吗?Int13/Ah=41应该能告诉你。 - paxdiablo
@paxdiablo,您能否添加一个链接到Ralf Brown的(非常好的,我相信!)中断列表详细信息,以便人们知道您的来源? - Oddthinking
在那个屏幕截图中,您的进位标志被设置为1。因此,您的BIOS不支持这些扩展。这就是您的原始调用出问题的原因。AH=08h调用到底哪里出了问题?您可能需要找到另一种方法来实现您想要的功能。 - paxdiablo

0
一些计算机未能正确保存您的ds和es寄存器,因此在从int-13函数48返回时应该还原它们,同时根据版本检查缓冲区大小为1A、1E或42。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接