【问题标题】:Interrupt №13 (ah=48) - not working中断№13 (ah=48) - 不工作
【发布时间】:2010-08-10 10:02:07
【问题描述】:

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

  • 这是显示软盘正常参数的代码:

    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(error)。我如何解决它?

【问题讨论】:

    标签: assembly x86 interrupt bios


    【解决方案1】:

    出错时,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 设置为什么来接收信息。是否设置正确?


    来自您的评论:

    01h AH 中的功能无效或参数无效。

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

    【讨论】:

    • 01h AH 中的函数无效或参数无效。|我没有做什么?
    • 您的 BIOS 是否支持扩展? Int13/Ah=41 应该可以告诉你。
    • @paxdiablo,您能否添加一个指向 Ralf Brown(非常棒,我敢肯定!)中断列表详细信息的链接,以便人们知道您的来源?
    • 您的进位标志在该屏幕截图中设置为 1。因此,您的 BIOS 不支持扩展。因此,为什么您最初的电话会抱怨。 AH=08h 调用到底有什么问题?你可能必须找到另一种方法来做你想做的事。
    【解决方案2】:

    有些计算机没有正确保存你的 ds 和 es 寄存器,所以这些应该在从 int-13 函数返回时恢复 - 48 还检查缓冲区大小为 1A 1E 或 42,具体取决于版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-23
      • 2011-09-09
      • 2012-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-24
      相关资源
      最近更新 更多