Int 13H AH=00h的作用是什么?虚拟软盘场景下的重置含义
Int 13H AH=00h 指令作用与“重置”含义解析
你通过命令copy amorce.com/B+programme.com/B disk.img /Y创建了虚拟软盘镜像disk.img,镜像包含512字节的引导扇区(来自amorce.com,位于第1扇区)和占用第2至7扇区的程序,将其放入无操作系统的VirtualBox虚拟机中直接运行引导扇区程序,其中引导扇区包含这段代码:
initialise_disque: mov dl, 0 xor ax, ax int 0x13 jc initialise_disque
针对你提出的疑问,以下是具体解析:
一、Int 13H AH=00h 的核心作用
Int 13H AH=00h是BIOS提供的软盘控制器重置指令,这里的“重置”和软盘数据完全无关,它的作用是将软盘控制器(FDC)的硬件状态恢复到初始就绪状态:
- 终止当前正在执行的所有磁盘操作(比如中途中断的读/写任务)
- 清除控制器内部的错误标记、状态寄存器中的异常位
- 让软盘驱动器回到默认就绪状态,确保后续调用
Int 13H的磁盘操作(如读扇区、写扇区)能正常执行
二、移除代码后程序运行无变化的原因
你的测试场景是虚拟机中的虚拟软盘,环境本身处于理想状态:
- 虚拟软盘控制器没有残留的错误状态或未完成的操作
- 引导扇区运行时,驱动器已经处于就绪状态
这种情况下,重置操作不会产生可见的效果。但在真实的老式硬件环境中,软盘驱动器可能出现临时异常(比如磁头偏移、操作中断),此时AH=00h的重置是必需的——如果跳过这一步,后续的磁盘操作大概率会失败,比如无法读取后续的programme.com程序。
三、“重置”的具体含义
这里的“重置”仅针对软盘控制器硬件,和软盘上存储的数据没有任何关联:
- 不会删除软盘内的程序
- 无法恢复被覆盖的内容
- 只是让控制器回到能正确响应后续磁盘命令的初始状态
内容的提问来源于stack exchange,提问作者Bastien Portigo
相关产品推荐
相关产品推荐

