文章目录
参考
项目 | 描述 |
---|---|
搜索引擎 | Bing 、Google |
AI 大模型 | 文心一言 、通义千问 、讯飞星火认知大模型 、ChatGPT |
汇编语言(第四版) | ISBN: 9787302539414 、作者:王爽 |
环境
项目 | 描述 |
---|---|
DOSBox-X | 2023.09.01(64-bit SDL1) |
操作系统 | Windows 10(专业版) |
DOSBox-X
WOW
Windows On Windows(WOW)
是 Windows 操作系统中提供的 子系统
,该子系统允许在 Windows 上运行 为其他架构的 Windows 编写的应用程序
。Windows On Windows 的名字通常后面跟着一个版本号,常使用到的 Windows On Windows 有 WOW(也被称为 WOW16)
与 WOW64
,它们分别支持在 32 位 Windows
操作系统中运行 16
位应用程序以及在 64 位 Windows
操作系统中运行 32
位应用程序。
Windows On Windows 产生的原因
- 向后兼容性
微软公司为了保证软件的向后兼容性,即新版本的操作系统仍然可以运行旧版本的软件
,创建了WOW
。这意味着当用户或企业升级到新版本的Windows
时,他们不需要重新购买或重新开发所有的应用程序
。 - 降低架构变迁带来的影响
随着计算机硬件的发展,计算机架构从16
位迁移到了32
位,又从32
位迁移到了64
位。在这些迁移过程中,为了不失去大量已有的软件资源和保持平滑过渡
,WOW 成为了一种解决方案。
Windows On Windows 的工作原理
WOW
创建了一个 运行时环境(计算机程序在其执行期间所需的软件和硬件环境)
,模拟采用旧架构的 Windows。当一个旧的应用程序尝试访问系统资源或函数时,WOW 会拦截这些请求,并在子系统上提供相应的资源或函数
。这使得旧的应用程序 认为
它们正在运行在采用旧架构的 Windows 上。
WOW16 的结束与 WOW64 的未来
随着 16 位应用程序的逐渐减少,对 WOW16
的需求也逐渐减少。自 Windows 7 32
位操作系统后,Windows 操作系统都不再支持 WOW16
。
目前,WOW64
仍然是 64 位 Windows
操作系统的重要组成部分,因为大量的 32
位应用程序仍在广泛使用。但与此同时,随着 64
位应用程序的普及,32
位应用程序的数量可能会逐渐减少。但是,至少在可预见的未来,WOW64
仍然是 64 位
Windows 操作系统的一个重要组成部分。
在现代操作系统中运行 16 位应用程序
现代操作系统如 Windows 11 等已经 不再支持直接运行
16 位应用程序了。如果需要在这些操作系统中运行 16 位应用程序则需要使用到 虚拟机
或 模拟器
。不过为了一个 16 位应用程序,搭建一个虚拟机还是有点 牛刀小试
,毕竟在当下环境中,有价值多是 32
位或 64
位的应用程序。
简便起见,我们将使用模拟器来搭建 16 位汇编环境。
DOSBox-X
DOSBox-X
是一个 开源的 x86 模拟器
,主要用于运行 早期操作系统 MS-DOS
中的应用程序。与原始的 DOSBox
相比,DOSBox-X
提供了 更多的特性并对原有缺陷进行了改进
,使其 更加适合用于模拟早期的 PC 环境
。
如果你希望在不支持 16
位应用程序(如 Debug)的操作系统中使用它们,那么你需要一个模拟器,而 DOSBox-X
就是一个很好的选择。
DOSBox-X 在其官网提供了不同的安装包,如果您需要使用到 DOSBox-X,请前往下载安装。
在 DOSBox-X
官网中,Windows 相关的安装包提供了 XP+
与 Vista+
两个版本,这两个版本都提供 64 位与 32 位的应用程序。XP+
与 Vista+
两者的区别暂不明确,但 Vista+
版本的安装包所占用的内存空间更大,所以我选择了 Vista+
😎。
在安装 DOSBox-X
时,会有许多选项,如果你不懂如何选择那么使用 默认选项
,一路 Next
即可。
16 位汇编环境的搭建
应用准备
在 DOS
和 早期的 Windows 环境
下,开发 16
位汇编程序通常需要一系列工具来编写、编译、链接和调试代码。Edit
、MASM
、Link
以及 Debug
是 16 位汇编中常使用到的工具,它们为 16 位汇编程序的开发 提供了基本的支持
。如下是对这些工具进行的简单介绍:
工具 | 描述 |
---|---|
Edit |
Edit 是 MS-DOS 和初期 Windows 系统提供的一个基本文本编辑器,可以用来编写汇编源代码或其他文本文件。 |
MASM (Microsoft Macro Assembler) |
MASM 是微软提供的汇编器,用于 将汇编语言源代码转换为机器代码 。 |
Link |
Link 是一个链接器。当一个项目 由多个汇编或其他语言的源文件组成时 ,这些文件首先被单独编译成目标文件,然后由链接器将它们链接成一个可执行程序。 |
Debug |
Debug 是一个在 MS-DOS 和一些 Windows 系统中提供的命令行工具,用于 诊断程序在运行时产生的错误、异常或意外行为 ,并据此采取措施来解决问题,以确保程序能够按照预期的方式运行。 |
所需工具我已压缩并上传至 CSDN,如有需要请前往下载。
挂载
DOSBox-X
是一个 x86 模拟器
,主要用于运行 MS-DOS
和老旧 Windows
程序。当我们使用 DOSBox-X 或其他 DOSBox 变种时,我们实际上是在创建一个模拟的 MS-DOS 环境,而这个环境 默认是无法直接访问宿主机上的资源的
。限制 DOSBox-X 对宿主机文件的直接访问可以防止潜在的恶意软件或误操作导致重要文件被损坏或销毁
。
因此,为了在 DOSBox-X 中访问本机的文件或目录,用户需要使用 mount
命令将宿主机的文件夹 挂载
到模拟环境的一个 驱动器
上。例如,为了将宿主机的 C:\Program Files\8086 AssemblyTools
文件夹挂载到 DOSBox-X 中的 D:
驱动器,你可以使用以下命令:
shell
mount D 'C:\Program Files\8086 AssemblyTools'
这样,在 DOSBox-X 中访问 D:
驱动器时,实际上是在访问宿主机的 C:\Program Files\8086 AssemblyTools
文件夹。如需访问 D:
驱动器,请使用如下命令:
shell
D:
注:
- 在命令行中,若文件路径中包含
空格
,请使用引号
将文件路径进行包裹。 - 请将与
16 位汇编相关的工具
存放到一个文件夹中并将其挂载至 DOSBox-X 中。
自动挂载
通过命令行将文件挂载至 DOSBox-X 仅能影响本次开启的 DOSBox-X,在您重新开启 DOSBox-X 后,如果需要访问上一次挂载的文件则需要对其进行重新挂载。
dosbox-x.conf
在 DOSBox-X 的安装路径中存在与其相关的配置文件 dosbox-x.conf
,在该文件的末尾存在如下内容:
yaml
[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.
[autoexec]
以下的内容除注释外都将 在 DOSBox-X 启动时自动执行
,您可以将 挂载宿主机文件
及 进入被挂载驱动器的目录
的命令输入于此。对此,请参考如下示例:
yaml
[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.
mount D 'C:\Program Files\8086 AssemblyTools'
D:
保存 dosbox-x.conf
文件,重新启动 DOSBox-X
后,该配置文件即生效。
配置工具
除了通过配置 dosbox-x.conf
配置文件来实现宿主机文件的自动挂载外,您还能够通过 DOSBox-X 提供的配置工具来对配置文件进行修改。
在点击 配置工具
后,将弹出一个弹框。
最后一个按钮 AUTOEXEC.BAT
与配置文件中 dosbox-x.conf
中的 [autoexec]
相对应,您可以通过点击该按钮对配置文件中的 [autoexec]
配置项进行修改。