如何在 16 位 MASM 中使用 int 13h 格式化可移动设备(闪存驱动器)?

Posted

技术标签:

【中文标题】如何在 16 位 MASM 中使用 int 13h 格式化可移动设备(闪存驱动器)?【英文标题】:How to format a removable device (flash drive) with int 13h in 16-bit MASM? 【发布时间】:2014-06-16 05:03:07 【问题描述】:

有人记得如何使用 int 13h service 5 格式化硬盘或可移动设备吗?我只需要一个如何做的例子。

谢谢。

【问题讨论】:

【参考方案1】:

你面临两个问题:

闪存驱动器和硬盘通常不会像(曾经)格式化软盘那样格式化。软盘必须经过格式化才能在非结构化的“磁性”表面上创建扇区和磁道。

这种格式称为低级格式(INT 13h、AH=5 或 AH=6)。

闪存设备永远不会以这种方式格式化,因为它们没有非结构化的“磁性”表面。

现代硬盘(1980 年代 ESDI 技术之后出现的所有硬盘)在工厂进行格式化,并且没有标准化或记录在案的方法如何在家中重新格式化这些磁盘。用于格式化硬盘的 INT 13h 函数通常不适用于 IDE、SCSI 或 SATA 硬盘。

“格式化 USB 驱动器”时所做的只是将扇区(INT 13h、AH=3 或 AH=43h)写入尚未包含文件系统信息的磁盘,或覆盖现有文件系统信息.

您面临的第二个问题是大多数 Bios 不管理 USB 存储设备。

如果您使用此类 BIOS 从 USB 设备启动,您可以使用 INT 13h、AH=2 或 AH=42h 读取此设备(并且仅此设备)。也许您也可以编写设备(AH=3 或 AH=43h)。但是,您并没有真正尝试格式化您正在启动的设备?

【讨论】:

不,我将使用 Windows XP 进行格式化。编写一个 .com 程序集来做到这一点。 在 Windows XP 下?我认为 Windows XP 不允许 DOS 程序直接访问磁盘(int 013h)!无论如何:格式化 USB 驱动器只不过是将扇区写入驱动器(除非您使用 3.5" USB 软盘驱动器)。

以上是关于如何在 16 位 MASM 中使用 int 13h 格式化可移动设备(闪存驱动器)?的主要内容,如果未能解决你的问题,请参考以下文章

MASM 程序集将 8 位寄存器移动到 16 位寄存器(即 mov cx,ch)[重复]

使用 Int 13H 读取磁盘参数

MASM 32位汇编 32与16汇编区别

MASM 32位汇编 32与16汇编区别

masm 16位汇编语法

masm 16位汇编语法