注:本文为 “VMware 配置 DVD / CD-ROM 、软盘驱动器、DOS” 相关文章合辑。
VMware Workstation 配置 DVD、CD-ROM 和软盘驱动器
更新时间 2022 年 01 月 09 日
最多可以将 4 个 IDE 设备、60 个 SCSI 设备以及 120 个 SATA 设备(4 个控制器,每个控制器 30 个设备)添加到虚拟机中。其中的任意设备均可以连接到物理或虚拟 CD-ROM 或 DVD 设备。CD-ROM 和 DVD 设备无法连接到 NVMe 控制器。
虚拟机可以从 DVD 光盘中读取数据。Workstation Pro 不支持在虚拟机中播放 DVD 影片。如果使用的 DVD 播放器应用程序不需要在显卡中提供视频覆盖支持,您或许可以播放影片。
将 DVD 或 CD-ROM 驱动器添加到虚拟机
更新时间 2022 年 01 月 09 日
您可以将一个或多个 DVD 或 CD-ROM 驱动器添加到虚拟机中。您可以将虚拟 DVD 或 CD-ROM 驱动器连接到物理驱动器或 ISO 映像文件。
无论连接到何种类型的物理驱动器,您都可以将虚拟 DVD 或 CD-ROM 驱动器配置为 IDE、SCSI 或 SATA 设备。例如,如果主机具有 IDE CD-ROM 驱动器,您可以将虚拟机驱动器设置为 SCSI 或 IDE 并将其连接到主机驱动器。
除非在正常模式下遇到问题,否则,不要配置旧版模拟模式。有关详细信息,请参见为 DVD 或 CD-ROM 驱动器配置旧版仿真模式。
过程
- 选择该虚拟机,然后选择虚拟机>设置。
- 在硬件选项卡中,单击添加。
- 在添加硬件向导中,选择DVD/CD 驱动器。
- 单击完成以将驱动器添加到虚拟机中。
5.(可选)要更改用于驱动器的 SCSI、IDE 或 SATA 设备标识符,请选择驱动器,然后单击高级。 - 单击确定以保存所做的更改。
为 DVD 或 CD-ROM 驱动器配置旧版仿真模式
更新时间 2022 年 01 月 09 日
使用旧版仿真模式可解决客户机操作系统与 DVD 或 CD-ROM 驱动器之间的直接通信问题。
在旧版仿真模式中,您只能从 DVD 或 CD-ROM 驱动器的数据光盘中读取数据。旧版仿真模式不提供其他正常模式功能。在正常模式下,客户机操作系统可与 CD-ROM 或 DVD 驱动器直接通信。通过这种直接通信,您可以读取多会话 CD、执行数字音频提取、查看视频并使用 CD 和 DVD 刻录机刻录光盘。
如果一次运行多个虚拟机,且这些虚拟机的 CD-ROM 驱动器处于旧版仿真模式,则必须断开其 CD-ROM 驱动器连接才能开启虚拟机。通过断开虚拟机中连接的 CD-ROM 驱动器,可以避免多个虚拟机同时连接 CD-ROM 驱动器。
过程
-
选择该虚拟机,然后选择虚拟机>设置。
-
在硬件选项卡中,选择驱动器,然后单击高级。
-
选择旧版仿真,然后单击确定。
在 Windows 主机中,默认情况下未选择该选项。在配有 IDE 驱动器的 Linux 主机上,默认设置取决于内核中是否加载了 ide-scsi 模块。必须加载 ide-scsi 模块或使用物理 SCSI 驱动器才能直接连接到 DVD/CD-ROM 驱动器。
-
单击确定以保存所做的更改。
将软盘驱动器添加到虚拟机
更新时间 2022 年 01 月 09 日
您可以配置虚拟软盘驱动器以连接到物理软盘驱动器或现有 / 空软盘映像文件。您最多可以将两个软盘驱动器添加到虚拟机中。
前提条件
关闭虚拟机。
过程
-
选择该虚拟机,然后选择虚拟机>设置。
-
在硬件选项卡中,单击添加。
-
在添加硬件向导中,选择软盘驱动器。
-
单击完成以将驱动器添加到虚拟机中。
-
选择软盘介质类型。
选项 说明 使用物理软盘驱动器 虚拟机使用物理软盘驱动器。 使用软盘映像 驱动器连接到软盘映像 (.flp) 文件。 创建空软盘映像 驱动器连接到您创建的空软盘映像 (.flp) 文件。 -
如果选择了物理软盘驱动器介质类型,请选择一个特定的软盘驱动器,或选中自动检测以允许 Workstation Pro 自动检测要使用的驱动器。
-
如果选择了软盘映像或空软盘映像介质类型,请键入名称或浏览到软盘映像 (.flp) 文件位置。
-
要在虚拟机启动时将驱动器或软盘映像文件连接到虚拟机,请选择启动时连接。
-
单击确定以保存所做的更改。
-
如果将第二个软盘驱动器连接到虚拟机,请在虚拟机 BIOS 中启用该驱动器。
- 选择虚拟机,然后选择虚拟机>电源>启动时进入 BIOS。
- 选择传统软盘 B:,并使用数字键盘上的加号 (+) 和减号 (-) 键选择要使用的软盘驱动器类型。
- 按 F10 以保存设置。
使用 VMware 创建 DOS 虚拟机
Simon D. Guqiu 已于 2024-12-07 15:49:38 修改
搞个 VMware 虚拟机安装 DOS 怀个旧。
DOS 是 Disk Operating System 的缩写,磁盘操作系统,顾名思义,它就是操作磁盘文件的。
DOS 使用一种叫汇编的低级语言,和 Python、C++ 等等一样,它也是编程语言,但它更接近于底层,换句话说运行需要的资源更少,适合从前内存不满 16MB 的电脑。汇编就起到了操纵系统进行计算的作用,使它有了更复杂的操作。
好了,简单的介绍就到这里,接下来搞事开始……
第一步:下载 DOS 和 VMware,安装 VMware
过去的 PC 使用软盘,所以这里下载的 DOS 版本只能使用软盘。为了方便使用,我们就下载 MS-DOS 的最后一个版本。
实际上这个版本并不是由微软开发的,而是在停止开发新的 DOS 之后由中国 DOS 联盟维护的 7.1 版本。
- WinWorld: MS-DOS 7.1 (CDU) (winworldpc.com)
https://winworldpc.com/product/ms-dos/7x
向下拉,选择 Microsoft DOS 下载 :
| Download name | Version | Language | Architecture | File size | Downloads |
|---|---|---|---|---|---|
Microsoft DOS 7.1 (3.5) 💾 | 7.1 (China DOS Union) | English | ![]() | 2.74MB | 42 |
Microsoft DOS 7.1 (CD) 💿 | 7.1 (China DOS Union) | English | ![]() | 8.09MB | 90 |
选择两个服务器的链接中你看顺眼的那一个:
Microsoft DOS 7.1 (3.5)
Mirrors
- Server 2 (Click to Download) (Kansas City, US)
- Server 1 (Click to Download) (Quebec, CA)
然后静候下载即可,下一步就是下载 VMware 了
第二步:配置一个新的虚拟机

安装完成之后,需要重启,然后就进入了这个界面,点击创建虚拟机。

选择典型,下一步。

选择稍后安装操作系统,下一步。

选择其他,在版本里选择 MS-DOS,下一步。

这里就随便起个名字,然后选一个风水宝地放下来。

选择大小,其实 1G 不到就足够了,但是为了方便后续安装,还是分个 2G 吧,存成单文件。

最后直接点击完成即可。

随后,主界面上就出现了这个虚拟机。
然后就运行?想多了,我们还没有安装软盘呢。找到刚刚下载的那个压缩包,解压,拷过来。
在主界面上点击编辑虚拟机设置。

选择左边最下面的的添加。

再选择软盘驱动器,完成。
回到上个界面,点进软盘。

接下来选择使用软盘映像文件,再找到你刚刚拷过来的解压的文件,选择第一张盘(disc01.img), 然后点击最下面的确定。

好的,创建虚拟机的步骤就完成了!
第三步:运行 & 安装
点击主界面的开启此虚拟机。

然后便进入了安装界面。

继续 Next。

这个版本是 DOS 开源之后的,所以它的协议是 GPL(没想到吧)。当然得同意。

选择 Continue。

没有找到分区,那就选择前面一个,创建一个分区。

然后选择重启。

然后把前面的一堆再选一遍,直到进入这个界面,选择 Yes。

使用默认位置。

创建目录,选 Yes。

终于进入了安装界面,选择全部安装,也就是默认选项。

选择 Yes 安装 DOS 的图形界面。

没问题的话直接选择安装。

第一张盘很快就安装好了,接下来需要插入第二张盘……
咦,插槽呢?
想多了。这个时候我们点击右下角按钮里的 💾,选择设置,进入设置界面,选择 disc02.img。

点击确定,在虚拟机里点击 Continue。

进入 Add-On 安装界面,选择 Continue。

接下来选择插件安装盘,直接跳过,因为我们手上没有插件安装盘,有兴趣的同学可以自己找一找下载下来,这里就不演示了。
下一步是要不要显示 Logo,选择 Yes。

是否启用日志,选择 Yes。

是否启用直接读写,选择 Yes。

按照文字介绍,选择第一个选项。

同样直接选择第一个,到这里我也看不懂了……

选择 Use default(依然看不懂)。

接下来全部选择 Use default,因为作者也疯了,没截到图。
然后在重启之前,点击,选择断开连接。

选择 Yes。
重启之后,就是 DOS 界面啦!
【汇编语言】 安装虚拟机运行 dos 系统 教程
奶酪博士已于 2023-05-14 10:22:29 修改
前言
1. 问题背景
(1)学习王爽老师《汇编语言》(第四版) 第十七章时,需要编程来读写磁盘。因为书中讲解的软盘如今已很少被使用,如果买软盘及软驱,我不确定是否真的能运行,且学完这节课后就基本无用,实属资源浪费。起初我打算使用同样属于磁盘的 U 盘来作为替代。这些程序要使用 BIOS 的 13H 号中断例程,但是它们在我使用的(64 位 win10 系统)DosBox(虚拟 dos 环境的软件)中无法正确运行。
(2)我又将读写 U 盘改为读写笔记本里的固态硬盘,仍然无法读取,返回值一直是 FF。
(3)后来我尝试了使用 01F0H-0HF7H 硬盘端口读取硬盘数据,同样无法运行。
(4)再后来,尝试了在虚拟机中运行 dos 系统,然后在实模式下运行读写磁盘的程序,结果是仍然不行。
(5)最终,我无功而返。唯一能做的就是将这耗费整整五天得来的探索经验总结下来,后人可以少走弯路。
2. 小结
这几天的探索经验总结如下。
(1)无论是在 64 位 win10 系统下的 DosBox 中,还是在 dos 系统虚拟机中运行,都无法通过 01f0H-01f7H 端口 读写硬盘(包括 U 盘)的数据。
(2)无论是在 64 位 win10 系统下的 DosBox 中,还是在 dos 系统虚拟机中运行,都可以通过 BIOS 的 13H 中断例程 读取磁盘的数据,但不能写入数据(原因不明)。
(3)学会了如何在 64 位 win10 系统下,使用虚拟机运行 dos 系统,并运行汇编程序。(接下来详细介绍)
在虚拟机软件与 DOS 系统版本的选择方面,我认为比较好的方案是:
①. 使用 VMware 公司的虚拟机软件,因为它提供了官方的免费正版可供使用,比较稳定可靠;
②. 使用 FreeDos 这个开源 dos 操作系统,因为它开源且与微软的 MS-DOS 完全兼容;
3. 本文概述
本文按照操作顺序,详细介绍:
-
如何下载安装 VMware 虚拟机软件;
-
如何下载 DOS 操作系统的安装包;
-
如何创建虚拟机并安装 Dos 操作系统;
-
如何在 dos 虚拟机中运行汇编程序。
一、下载、安装 VMware 虚拟机软件
1. 下载
(1)访问官网
打开 VMware 官网 后界面如图。

(2)找到产品搜索框
点击顶部菜单栏中的 “应用 平台”,之后将右侧的滚动条(注意!是橙色圈出来的那个!)下拉到底部。效果如图。

然后点击图中的 “所有产品”。页面跳转后,将页面下拉,会在左边看到搜索框,如图。

(3)搜索 workstation 软件
在搜索框中搜索 “workstation”,回车,如图。

(4)下载 workstation player
① 选择 “workstation player” 产品
点击 “workstation player”,页面跳转后,点击 download。(player 是免费版,Pro 是收费版)

②选择版本号
如下页面,点击 “下载”。

③ 选择对应操作系统的版本
点击下载,如图。(我使用的是 64 位 windows 系统)

文件大小 584MB,下载速度 Ok,几分钟之内下载完成。
2. 安装 VMware 虚拟机
双击运行安装程序,一路 “下一步”。
在这一步可以选择安装位置,如图。

这里的 “增强型键盘驱动程序”,我查了一下,似乎是这样的:它的作用是为了增强安全性,但普通使用可以不安装,以后需要用了可以随时安装。于是我决定不勾选。
之后正常安装,需要等待几分钟,即可安装完成。
二、下载 dos 操作系统的安装文件
1. 关于 dos
虚拟机也像真实的物理机一样,需要操作系统。我想要在虚拟机上运行 dos 系统,于是现在需要一个 dos 系统的安装文件。
dos 系统是微软开发的,不过早就已经停止更新了。而 dos 系统在一些领域还有实际作用(比如运行经典 dos 程序等),因而一些开源社区还在持续维护 dos 系统。微软的 MS-Dos 我没有找到开源的安装镜像文件。FreeDos 是一个开源的 dos 系统,完全兼容微软的 MS-Dos,正好方便学习。
FreeDos 这个网站上有开源的 dos 系统安装包,可以下载使用(目前最新版是 2022 年 2 月发布的)。
2. 下载 FreeDos 安装文件
(1)访问 FreeDos
进入 FreeDos 网站首页,如图。然后页面下拉,点击下载,跳转页面。

(2)版本选择
因为是学习汇编语言使用,只需要最核心的系统功能(而不需要各种扩展功能及附带的游戏等),可以选择 FreeDos 1.3 Floppy Edition 版本(这是一个软盘安装版本),压缩包只有 20.6MB。

(3)关于软盘安装
下载后打开压缩包,发现其中有三个文件夹:120m 、 144m、720k 。这个名称是指每一张软盘的容量大小。这个软盘版本的安装程序,自然就是使用软盘来安装操作系统。如果是在真实物理机上使用软盘安装操作系统,就需要一张一张地按顺序插入软盘(插入到软驱中)。现在我们是要使用 VMware 创建虚拟机,然后在虚拟机上模拟这个过程,因此也会需要一张一张地按照顺序插入软盘,只不过在虚拟机上只需要用鼠标点而不需要操作真实的软盘。
为了操作方便(减少换软盘的次数),这里就选择容量最大的软盘,也就是 “144m” 这个文件夹,记住它的存放地址,一会儿要用到。
现在可以进行下一步了。
三、创建一个运行 dos 系统的虚拟机
1. 创建新的虚拟机
双击运行 workstation player,选择 “创建新虚拟机”。如图。

2. 选择创建方式
选择创建一个空白的硬盘,稍后安装操作系统。
这是因为我们下载的是软盘版本的安装文件(img 格式),如果下载的是 ISO 格式的安装文件,那么这一步就应该选择 “安装光盘映像文件”。

3. 选择操作系统
操作系统的版本选择:其它、MS-DOS。

4. 给虚拟机起个名字
5. 指定磁盘容量
默认的 2GB 已经很够用了,然后选择 单个文件 。

6. 添加一个软驱
自定义硬件,添加一个软驱。

7. 设置软驱
设置软驱,勾选启动时连接软驱。
软盘映像文件的地址,选择 FreeDos 的地址中 “144m” 文件夹的 “x86Boot.img” 文件。
这一步是将 “x86Boot.img” 这张软盘插入软驱,并且设置在虚拟机开机后自动读取软盘内容,开始安装操作系统。

8. 虚拟机开机,开始安装 FreeDos
现在,将虚拟机开机,就会自动从软驱中开始执行 FreeDos 的安装程序。
一路输入 Y(表示 Yes)即可,当出现下面这行提示的时候,表示需要插入另一张虚拟软盘。

9. 切换软盘
FreeDos 的 “144m” 文件夹中,一共有 6 张软盘,如图。现在已经放在虚拟软驱中的是第一张(x86BOOT.img)。

接下来,另外五张要依次插入虚拟软驱中,软盘切换的方法如下:
① Ctrl+alt 将鼠标切换回 windows 界面中,菜单栏 player - 管理 - 虚拟机设置。

② 在虚拟机的设置窗口右侧,将软盘镜像文件换成下一个 img 文件,然后回到 dos 系统界面按任意键,dos 就会读取这张软盘的内容。
③ 接下来重复操作,直到 “X86DSK05.img” 软盘也读取完毕,此时会有一行提示说这张软盘 “not bootable floppy”。这时需要再重新换回文件夹中的第一张软盘(x86Boot.img),再次读取完成后,FreeDos 系统就安装完成了。 界面如下。

现在 dos 系统已经安装完成,关机以后,就可以删除软驱中的镜像文件了。不删除也没事。
四、在 dos 虚拟机中运行汇编程序
现在已经有了能运行 dos 操作系统的虚拟机,接下来准备运行一个测试程序。
那么,就先写一个简单的测试程序吧。
1. 写一段测试程序
程序很简单,就是在屏幕上显示一个字符串。代码如下。
assume cs:code
data segment
db 'Hello,Dos!',0
data ends
code segment
start:
mov ax,data ;ds:si 指向字符串源地址
mov ds,ax
mov si,0
mov ax,0B800H ;es:di 指向目标地址
mov es,ax
mov di,160*3+32*2
s: ; 显示字符串
mov cl,ds:[si]
jcxz ok
movsb
mov es:[di],07H
inc di
jmp s
ok: ; 程序返回
mov ax,4c00H
int 21H
code ends
end start
2. 关于虚拟机访问物理机的文件
以上这个测试程序是在 windows 系统中编写及保存的,现在要让虚拟机能够访问这些程序(exe 文件或者是 asm 文件)。
我探索了很久也无法实现在 dos 系统中读取物理机中的文件(试过了网上的各种方法,包括以管理员身份运行、共享文件夹、磁盘映射等等,均无果),于是决定另辟蹊径。既然 dos 虚拟机可以读取软盘,那么我们就可以将写好的程序打包成软盘镜像文件,然后在虚拟机的软驱中加载就可以了。
具体的设置方法如下。
3. 下载 img 镜像文件制作工具
(1)访问 WinImage 官网
访问 WinImage 官网 下载 30 天试用版,安装。
(2)新建一个镜像文件
① 新建一个软盘镜像文件,大小就选择 1.44MB。
② 然后,将要测试的 asm 文件拖拽到 WinImage 界面的软盘镜像文件中,然后将 masm.exe 和 link.exe 这两个工具也拖拽进去。这样就可以在 dos 系统中编译、运行。当然也可以在 windows 系统中先编译、链接为.exe 文件,再直接将 exe 文件拖拽到软盘镜像文件中。
③ 为了方便调试,记得将 debug32.exe 也拖拽到软盘镜像文件中。
注意,平时在 win10 系统下的 DosBox 中,我使用 debug.exe 工具进行调试,但是在 FreeDos 中,就要使用 debug32.exe 工具进行调试。如果使用 debug.exe 工具,在 FreeDos 中运行它时系统会提示说不是正确的 dos 版本。debug32.exe 也是开源工具,可以在 “debug.exe” 所在的目录中找一下,如果没有,就百度一个吧。

(3)保存镜像文件
这里注意,FreeDos 能识别的软盘镜像文件只有 img 和 flp 两个格式,因此保存镜像的时候,文件名的后缀要写 flp,下边的文件类型选 “vfd/flp 那个”,如图。这个文件的保存地址下一步要用到。

4. 在 dos 中运行软盘中的程序
(1)为虚拟机添加软驱
运行 VMware,在虚拟机关机状态,进入设置界面,添加一个软驱,勾选 “启动时连接”,软盘映像文件的地址就设置为上一步保存的那个 flp 文件的地址。
注意,要运行的程序所在的软盘文件,对应的软驱是 “软盘 2”,也就是会在盘符 B 下。

(2)访问新软盘
将虚拟机开机,进入后默认在盘符 A 下。这个 A 盘就是启动盘,对应着第一个软驱。(如果安装完 FreeDos 之后,已经将安装盘从软驱中清空的话,那么这里的默认盘符就是 C。)而上一步中新建的软驱,对应盘符 B。因此在命令行输入 b: 回车,就进入了 B 盘下。注意,要在英文状态下输入冒号!
(3)编译、连接
现在在命令行输入 dir 回车(这表示列出当前目录下的文件及文件夹),可以看到刚才打包的文件。

接着,就像之前在 DosBox 中一样,编译、链接。然后就可以运行了!
(假设文件名为 “1.asm”,则编译命令为 masm 1; 回车,链接命令为 link 1; 回车,运行命令为 1.exe 回车))
运行效果如下。

(4)debug32 调试
如果要使用 debug32 工具调试程序,那么首先进入到 debug32.exe 工具所在的目录,然后输入 debug32 回车 ,即可开始调试,如图。

5. 编程读取软盘数据
在 dos 虚拟机中,可以在程序中读取软盘的数据。只要在另一个软驱中(最多配置 2 个软驱)放置一个空的 flp 镜像文件,那么就相当于插入了一张空白软盘,然后就可以读取数据了。只能读软盘,不能读硬盘,软盘也是只能读不能写,我也很想知道为什么。
附上一段读取软盘数据的程序。
assume cs:code ; 测试:编程读取软盘数据
data segment
db 512 dup (41H)
data ends
stack segment
db 16 dup (0)
stack ends
code segment
start:
mov ax,stack ; 初始化 设置栈顶
mov ss,ax
mov sp,20H
mov ax,data ;es:bx 指向接收磁盘数据的区域
mov es,ax
mov bx,0
call test_read
mov ax,4C00H
int 21H
test_read: ; 功能:读取磁盘数据到内存 es:bx 处
mov al,1 ; 读取的扇区个数
mov ch,0 ; 磁道号
mov cl,1 ; 扇区号
mov dl,0 ; 驱动器号 0 代表软盘 A
mov dh,1 ; 磁头号,即面号
mov ah,02H ; 读命令
int 13H
ret
五、一些可能有用的代码
在探索过程中整理了一些代码,也许读到本文的人能用到吧。
1. 访问硬盘端口读写数据
在使用 13H 读写磁盘失败后,我搜索到了另外一种读写硬盘数据的方法,就是通过访问 01F0H-01F7H 端口来读写硬盘(共有 CHS LBA24 LBA48 三种模式)。虽然这个方法我的电脑也不能运行成功,不过还是将代码整理在这里吧。
test3: ; 功能:LBA48 方式读取硬盘数据
; 参数:ds:bx 指向接收硬盘数据的内存首地址
push ax
push dx
push cx
;1. 写两次 0x1f1 端口: 0
mov al,0
mov dx,01F1H
out dx,al
out dx,al
;2. 写两次 0x1f2 端口:第一次要读的扇区数的高 8 位,第二次低 8 位
mov al,0H
mov dx,01F2H
out dx,al
mov al,01H
out dx,al
;3. 写 0x1f3: LBA 参数的 24~31 位
mov al,0
mov dx,01F3H
out dx,al
;4. 写 0x1f3: LBA 参数的 0~7 位
mov al,1
mov dx,01F3H
out dx,al
;5. 写 0x1f4: LBA 参数的 32~39 位
mov al,0
mov dx,01F4H
out dx,al
;6. 写 0x1f4: LBA 参数的 8~15 位
mov al,0
mov dx,01F4H
out dx,al
;7. 写 0x1f5: LBA 参数的 40~47 位
mov al,0
mov dx,01F5H
out dx,al
;8. 写 0x1f5: LBA 参数的 16~23 位
mov al,0
mov dx,01F5H
out dx,al
;9. 写 0x1f6: 7~5 位,010, 第 4 位 0 表示主盘,1 表示从盘,3~0 位,0
mov al,01000000B
mov dx,01F6H
out dx,al
;10. 写 0x1f7: 0x24 为读,0x34 为写
mov al,24H
mov dx,01F7H
out dx,al
;11. 读取数据
mov dx,01F0H
in ax,dx
mov ds:[bx],ax
pop cx
pop dx
pop ax
ret
;==============================================
test2: ;chs 方式访问硬盘数据
push ax
push dx
push cx
;1. 向 01F1H 写入 0
mov al,0
mov dx,01F1H
out dx,al
out dx,al
;2. 向 01F2H 写入要访问的扇区个数
mov al,1
mov dx,01F2H
out dx,al
;3. 写入扇区号
mov al,0
mov dx,01F3H
out dx,al
;4. 写入柱面低 8 位
mov al,0
mov dx,01F4H
out dx,al
;5. 写入柱面高 8 位
mov al,0
mov dx,01F5H
out dx,al
;6. 写入 7~5 位,101, 第 4 位 0 表示主盘,1 表示从盘,3~0 位,磁头号
mov al,10110000B
mov dx,01F6H
out dx,al
;7. 传送读写命令
mov al,20H
mov dx,01F7H
out dx,al
;8. 等待读写完成
mov dx,01F7H
s_test2:
in al,dx
and al,00010000B
cmp al,10H
jne s_test2
;9. 读取数据
mov dx,01F0H
mov cx,256
s2_test2:
in ax,dx
mov ds:[bx],ax
add bx,2
loop s2_test2
pop cx
pop dx
pop ax
ret
;==============================================
test1: ; 功能:LBA24 方式读取 U 盘中 1 个扇区的数据,并存入 ds:bx 处
; 参数:ds:bx 指向接收硬盘数据的内存首地址
;1. 将访问的扇区个数送入端口
mov al,01H ; 参数:要访问的扇区个数
mov dx,01F2H
out dx,al
;2. 将访问的起始扇区的逻辑扇区号送入端口
mov al,02H ; 参数:逻辑扇区号 0-7 位
mov dx,01F3H
out dx,al
mov al,00H ; 参数:逻辑扇区号 8-15 位
mov dx,01F4H
out dx,al
mov al,00H ; 参数:逻辑扇区号 16-23 位
mov dx,01F5H
out dx,al
mov al,0F0H ; 参数:高 4 位 1 读写模式(1 位 LBA) 1 硬盘选择(0 为主硬盘) ;低 4 位 逻辑扇区号 24-27 位
mov dx,01F6H
out dx,al
;3. 将读 / 写指令送入端口
mov al,20H ; 参数:20H 是读入数据;30H 是写出数据
mov dx,01F7H
out dx,al
;4. 读取硬盘已就绪的状态字节
mov dx,01F7H
ready:
in al,dx
and al,88H
cmp al,08H
jne ready
;5. 从端口读取 / 写入数据
mov cx,256
mov dx,01F0H
s_test1:
in ax,dx
mov es:[bx],ax
add bx,2
loop s_test1
ret
2. 保存、复现屏幕内容
这是书上的内容,以后如果换了运行环境,可以重新拿来做个测试。代码如下。
saveScreen: ; 功能:将当前屏幕上的内容保存在磁盘上
; 参数:ah 功能号(3 表示写扇区);al 写入的扇区个数
; ch 磁道号;cl 扇区号(从 1 开始);
; dh 磁头号(面);dl 驱动器号(81H 为硬盘 D 盘)
; es:bx 指向要写入磁盘的数据首地址
; 返回:操作成功: ah=0,al = 写入的扇区个数;
; 操作失败:ah = 出错代码
push ax
push es
push bx
push cx
push dx
mov ax,0B800H ; 参数:es:bx 指向要写入磁盘的数据首地址
mov es,ax
mov bx,0
mov al,8 ; 参数:写入的扇区个数(一屏幕 4000 字节,一个扇区 512 字节,所以需要 8 个扇区)
mov ch,0 ; 参数:磁道号
mov cl,1 ; 参数:扇区号,从 1 开始
mov dh,1 ; 参数:磁头号(面)
mov dl,81H ; 参数:驱动器号(D 盘为 81H)
mov ah,3 ; 参数:功能号 3 表示写扇区
int 13H ; 调用 int 13H 中断例程
pop dx
pop cx
pop bx
pop es
pop ax
ret
;===================================================
readScreen: ; 功能:将磁盘中的内容显示在屏幕上
; 参数:ah 功能号(2 表示读扇区);al 读取的扇区个数;
; ch 磁道号; cl 扇区号(从 1 开始);
; dh 磁头号(面);dl 驱动器号(81H 为 D 盘)
; es:bx 指向用于接收磁盘读入的数据的内存区
; 返回:操作成功:ah=0 al = 读入的扇区数;
; 操作失败:ah = 出错代码
push ax
push bx
push cx
push dx
push es
mov ax,0B800H ; 参数:es:bx 指向用于接收磁盘读入数据的内存区
mov es,ax
mov bx,0
mov al,8 ; 参数:读取的扇区个数(一屏幕 4000 字节,需要 8 个扇区)
mov ch,0 ; 参数:磁道号
mov cl,1 ; 参数:扇区号,从 1 开始
mov dh,1 ; 参数:磁头号(面)
mov dl,81H ; 参数:驱动器号,81H 为 D 盘
mov ah,2 ; 参数:功能号,2 表示读扇区
int 13H ; 调用 int 13H 中断例程
pop es
pop dx
pop cx
pop bx
pop ax
ret
总结
这可以说是学习汇编语言以来花费时间最长的一篇博文了。耗时耗力的主要原因,是书籍内容与时代脱节,导致我不得不进行了许多摸索(网上的资料我找过了),绕了很大一个弯,浪费了许多宝贵时间,才最终发现无法走通。一路学习到这最后一章,我对王爽老师的独特教学方法很佩服、很信任。但是这一次的尝试摸索,不禁使我对这本 2019 年 12 月才修订出版过第四版的教材产生了一些失望。
由于第十七章的学习无法完成,后面的课程设计也无法完成了。原本还想继续写几篇关于汇编语言的博文,但现在兴趣索然,故这一篇大概会是这一系列关于汇编语言的博文的最后一篇了。2022.11
VMWare 下安装 MSDN版 MS-DOS 6.22
posted on 2018-01-28 23:34 pchmonster
本文包含以下几部分内容:
- VMWare 安装
- MS-DOS 下载
- 配置 MS-DOS 虚拟机
- 安装 MS-DOS
- 安装环境说明
- MS-DOS 虚拟机共享下载
VMWare 安装
首先要先安装 VMWare 软件,我这里选择的是 VMware-workstation-full-12.1.1-3770994 这个版本,一路 next 即可。

安装完 VMWare 后开始运行,需要注册输入验证码进行激活。

MS-DOS 下载
我们先复习下 DOS 6.22 安装条件和要求,直接去 维基百科 看看介绍吧。
DOS,是磁盘操作系统(英文:Disk Operating System)的缩写,是个人计算机上的一类操作系统。从1981年直到1995年的15年间,DOS在IBM PC兼容机市场中占有举足轻重的地位。
DOS家族包括MS-DOS、PC-DOS、DR-DOS、FreeDOS、PTS-DOS、ROM-DOS、JM-OS等,其中以MS-DOS最为著名。
所有DOS类的操作系统都是在使用Intel x86或其兼容CPU的机器上运行的(主要是IBM PC及其兼容机)。
FreeDOS项目开始于1994年6月26日,当微软宣布不会发售和支持MS-DOS。http://www.freedos.org/
获取 MSDN 版本的 MS-DOS 6.22 (大小 11.23 MB)可以从以下地址下载:
获取到的 MS-DOS 6.22 是一个 .exe 结尾的自解压文件,里面内容包含一个 DISKS 文件夹和一个 UPGRADE 文件夹,我们只需要 DISKS 文件夹中的 144UPG1.IMG、144UPG2.IMG 和 144UPG3.IMG。如下图:

配置 MS-DOS 虚拟机
1、在 VMWare Workstations 中选择 【*文件 - 新建虚拟机…* 】,选择【*典型(推荐)(T)* 】类型配置,点击【下一步】;

2、选择【 *稍后安装操作系统(S)* 】选项,点击【下一步】;

3、【客户机操作系统】中选择【*其他* 】,【版本】中选择【*MS-DOS* 】,并点【下一步】继续;

4、给虚拟机起一个名称,并选择虚拟机位置,继续【下一步】;

5、制定磁盘大小,默认建议 *2GB* 即可,因为 MS-DOS 系统不会很大,选择【*将虚拟磁盘存储为单个文件* 】选项,点击【下一步】继续;

6、已经准备好创建虚拟机,虚拟机清单如下图,亦可以【自定义硬件…】,稍后会介绍如何添加软盘驱动器,点击【 *完成* 】就大功告成了。

7、现在在【我的计算机】中出现了刚刚新建的“ MS-DOS 6.22* ”虚拟机,并且在红框中还可以继续编辑虚拟机设置*。

安装 MS-DOS
1、点击“MS-DOS 6.22”虚拟机中的【*编辑虚拟机设置* 】,点击【*添加…*】按钮,如下图:

2、弹出硬件类型窗口,硬件类型选择【 *软盘驱动器* 】,点击下一步;

3、软盘介质类型中选择【 *使用软盘映像* 】,继续下一步;

4、软盘映像选择刚才 MS-DOS 6.22 的 DISKS 目录下的 *144UPG1.IMG* 文件,并勾选【启动时连接】选项,保证虚拟机启动时可以从软盘驱动器启动系统,点击“完成”。

5、软盘驱动器已经添加好了,接下来可以选择“ *开启此虚拟机* ”,运行虚拟机后,自动从软盘驱动器中启动 MS-DOS 的安装程序;

6、我们不能按 Enter 键进行安装,先按 *F3* 退出安装程序,弹出如下对话框,再次按 *F3* 确定退出;

7、成功退出到命令行模式,输入 *fdisk* 命令进行磁盘分区;切记在 A: 盘符下操作;

8、选择【 *1. Create DOS partition or Logical DOS Drive* 】,输入【 *1* 】 回车继续;

9、进入创建分区界面,继续选择【 *1. Create Primary DOS Partition* 】,输入 1 并回车继续;

10、主分区是否使用全部空间,输入【 *Y* 】确定并继续;

11、分区完成,提示系统将重启,按任意键重启即可,重启后会再次进入蓝色的 MS-DOS 安装界面,按两次 *F3* 键退出安装,返回到命令行界面;

12、输入 *format c:* 并回车,提示是否确定格式化,按 *Y* 键继续即可;

13、显示 Format complete. 即完成格式化,系统会提示输入卷标,这里输入 *MSDOS* 就可以;

14、接下来,在 A:> 下输入 *Setup* 命令,进入蓝色的安装画面,直接按 ENTER 键,开始进行 MS-DOS 的安装;

15、提示说安装过程中需要提供一张卷标为 UNINSTALL 1的软盘,我们点击右下角的软盘图标,选择 “*配置…*”;

16、在弹出的配置中,选择“ *使用软盘映像文件* ”,并点击“创建”按钮,输入 *UNINSTALL#1* 文件名后保存即可,这样就创建了一个 UNINSTALL#1 的软盘;

17、回车继续安装,这里可以设置安装路径等信息,确认无误直接 *ENTER* 继续;

18、接下来可以选择安装那些程序,默认就好,直接 *ENTER* 继续;

19、弹出确定对话框,按 *Y* 键开始安装 MS-DOS 6.22;

20、我到了这一步,弹出“ *An error occurred while reading or writing to drive A.*”,原因是我将 UNINSTALL#1 在软驱中放着,我们只要将 Setup Disk #1 (*144UPG1.IMG* )的磁盘放入软驱,选择重试继续;

21、提示插入 UNINSTALL#1,软盘中选择 UNINSTALL#1.flp 文件,然后 ENTER 继续;

22、如果弹出下面的提示框,我们选择 *1.44MB*,按 ENTER 继续;

23、不久又会让你插入*Setup Disk #1* 的磁盘,再然后又让你插入 *UNINSTALL#1* 的磁盘,如此反复几次;

24、安装完 *Setup Disk #1 (144UPG1.IMG)* 以后就会接着提示插入 *Setup Disk #2 (144UPG2.IMG)* 的磁盘,按照之前讲过的更换软盘配置中的磁盘映像文件;

25、接着会提示插入 Setup Disk #3 (144UPG3.IMG);

26、安装完后,会提示移除所有软盘,我们点击 VMWare 右下角的软盘图标,并选择断开设备,然后 *ENTER* 继续;

27、到这里,就已经完全安装完毕,按 *ENTER* 键后重启系统,就可以进入 MS-DOS 6.22 了;

28、重启后,显示 *C:>* 提示符,我们可以输入 *ver* 命令查看版本号,也可以输入 dir 查看下目录结构,其中 *OLD_DOS* 目录为旧系统目录,可以删除;

29、MS-DOS 6.22系统已经完美安装好了,接下来随意玩玩吧,这个版本的 DOS 系统中包含了一个 QBasic,输入 *qbasic* 即可进入。

安装环境说明
- Windows 10 64位系统 (cn_windows_10_multi-edition_version_1709_updated_dec_2017_x64_dvd_100406696.iso)
- VMWare Workstation 12 (VMware-workstation-full-12.1.1-3770994.exe)
- MSDN MS-DOS 6.22 (EN_MSDOS622.exe)
MS-DOS 虚拟机共享下载
现在提供给大家我设置好的 MS-DOS 6.22 虚拟机下载,想体验 DOS,有不想自己配置安装的,可以下载后,在 VMWare 中打开解压后的 .ovf 文件,按提示导入即可.
MSDOS622_VMWare12_OVF.rar (大小 4423KB)
via:
vmware 已于 2023 年 11 月被 broadcom 收购
博通完成收购威睿交易 为全球年内第二大科技业收购案|博通_新浪财经_新浪网
https://finance.sina.com.cn/stock/estate/integration/2023-11-23/doc-imzvqtur7782460.shtmlvmware 官方文档于 2025 年 1 月 30 日停止支持
This site will be decommissioned on January 30th 2025. After that date content will be available at techdocs.broadcom.com.
以下引文中文原链接到期后可能不复存在
- 配置 DVD、CD-ROM 和软盘驱动器 https://docs.vmware.com/cn/VMware-Workstation-Pro/17/com.vmware.ws.using.doc/GUID-5DAEDD8F-9A5D-4F3E-98D5-81E931295AE0.html
- 将软盘驱动器添加到虚拟机 https://docs.vmware.com/cn/VMware-Workstation-Pro/17/com.vmware.ws.using.doc/GUID-4DCDE9EA-7893-4E7C-9FDA-DA71D3D11F01.html
- 为 DVD 或 CD-ROM 驱动器配置旧版仿真模式 https://docs.vmware.com/cn/VMware-Workstation-Pro/17/com.vmware.ws.using.doc/GUID-BDC982CC-3B8A-410D-86D6-44EB20DC3090.html
- 将 DVD 或 CD-ROM 驱动器添加到虚拟机 https://docs.vmware.com/cn/VMware-Workstation-Pro/17/com.vmware.ws.using.doc/GUID-F71E5A37-AB32-41A9-AAC3-D87F25F5279F.html
-
使用 VMware 创建 DOS 虚拟机_vmware dos-优快云 博客 Simon D. Guqiu 已于 2024-12-07 15:49:38 修改
https://blog.youkuaiyun.com/qq_43054201/article/details/123776959 -
【汇编语言】 安装虚拟机运行dos系统 教程_vmware workstation 安装dos-优快云博客 奶酪博士已于 2023-05-14 10:22:29 修改
https://blog.youkuaiyun.com/Dr_Cheeze/article/details/127845439 -
VMWare 下安装 MSDN版 MS-DOS 6.22 - pchmonster - 博客园 posted on 2018-01-28 23:34 pchmonster
https://www.cnblogs.com/pchmonster/p/8372902.html -
How to Install MS-DOS 6.22 on VMware Workstation | Robots.net Written by: Minny Head | Published: 24 November 2023 | Modified: 13 December 2023
https://robots.net/tech/how-to-install-ms-dos-6-22-on-vmware-workstation/
Microsoft DOS 7.1 (3.5) 💾
Microsoft DOS 7.1 (CD) 💿
3985

被折叠的 条评论
为什么被折叠?



