如何使用BIOS中断读取第二张软盘

时间:2016-06-01 16:56:54

标签: io operating-system bios floppy

我需要制作一个可以写/读软盘B的迷你操作系统(从软盘A启动)。

环境是vmware工作站。软盘是A.img和B.img。

在A.img中,我设置了一个MBR程序和一个func.bin。我需要在func.bin中实现上面的功能。以下是其中的代码段。

...             ; set es:bx
mov ah, 0x03    ; read sectors
mov al, 0x01    ; 1 sector
mov ch, 0x00    ; cylinder
mov cl, 0x03    ; sector
mov dh, 0x00    ; head
mov dl, 0x01    ; B.img
int 0x13

然后我得到了返回码:啊= 0x01。这意味着"非法命令"但我不知道是什么造成的。

我尝试将mov dl, 0x01更改为mov dl, 0x00(A.img)或mov dl, 0x80(硬盘),它们都成功了。所以我想知道如何解决它。

更新我的问题:
当vm运行时,B.img已设置为"自动连接。

A的大小:31.5KB B的大小:1.44MB

1 个答案:

答案 0 :(得分:1)

我自己已经解决了这个问题。

这是因为我不知道VM的配置。

  

默认情况下,虚拟机的BIOS中只启用了一个软盘驱动器。如果要向虚拟机添加第二个软盘驱动器,请在虚拟机窗口内单击,然后在虚拟机引导时按F2进入BIOS设置实用程序。在主屏幕上,选择Legacy Diskette B:并使用数字键盘上的加号(+)和减号( - )键选择要使用的软盘驱动器类型。然后按F10保存更改并关闭BIOS设置实用程序。

https://www.vmware.com/support/ws5/doc/ws_disk_add_floppy.html