古记事法:Windows 下 16 位汇编环境搭建指南(DOSBox-X 篇)

文章目录

  • 参考
  • 环境
  • DOSBox-X
      • WOW
          • Windows On Windows 产生的原因
          • Windows On Windows 的工作原理
          • WOW16 的结束与 WOW64 的未来
      • 在现代操作系统中运行 16 位应用程序
      • DOSBox-X
  • 16 位汇编环境的搭建
      • 应用准备
      • 挂载
      • 自动挂载
          • dosbox-x.conf
          • 配置工具

参考

项目描述
搜索引擎BingGoogle
AI 大模型文心一言通义千问讯飞星火认知大模型ChatGPT
汇编语言(第四版)ISBN: 9787302539414作者:王爽

环境

项目描述
DOSBox-X2023.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 产生的原因
  1. 向后兼容性
    微软公司为了保证软件的向后兼容性,即 新版本的操作系统仍然可以运行旧版本的软件,创建了 WOW。这意味着当用户或企业升级到新版本的 Windows 时,他们 不需要重新购买或重新开发所有的应用程序
  2. 降低架构变迁带来的影响
    随着计算机硬件的发展,计算机架构从 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 位汇编程序通常需要一系列工具来编写、编译、链接和调试代码。EditMASMLink 以及 Debug 是 16 位汇编中常使用到的工具,它们为 16 位汇编程序的开发 提供了基本的支持。如下是对这些工具进行的简单介绍:

工具描述
EditEdit 是 MS-DOS 和初期 Windows 系统提供的一个基本文本编辑器,可以用来编写汇编源代码或其他文本文件。
MASM (Microsoft Macro Assembler) MASM 是微软提供的汇编器,用于 将汇编语言源代码转换为机器代码
LinkLink 是一个链接器。当一个项目 由多个汇编或其他语言的源文件组成时,这些文件首先被单独编译成目标文件,然后由链接器将它们链接成一个可执行程序。
DebugDebug 是一个在 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: 驱动器,你可以使用以下命令:

mount D 'C:\Program Files\8086 AssemblyTools'

这样,在 DOSBox-X 中访问 D: 驱动器时,实际上是在访问宿主机的 C:\Program Files\8086 AssemblyTools 文件夹。如需访问 D: 驱动器,请使用如下命令:

D:

注:

  1. 在命令行中,若文件路径中包含空格,请使用 引号 将文件路径进行包裹。
  2. 请将与 16 位汇编相关的工具 存放到一个文件夹中并将其挂载至 DOSBox-X 中。

自动挂载

通过命令行将文件挂载至 DOSBox-X 仅能影响本次开启的 DOSBox-X,在您重新开启 DOSBox-X 后,如果需要访问上一次挂载的文件则需要对其进行重新挂载。

dosbox-x.conf

在 DOSBox-X 的安装路径中存在与其相关的配置文件 dosbox-x.conf,在该文件的末尾存在如下内容:

[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.

[autoexec] 以下的内容除注释外都将 在 DOSBox-X 启动时自动执行,您可以将 挂载宿主机文件进入被挂载驱动器的目录 的命令输入于此。对此,请参考如下示例:

[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] 配置项进行修改。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/150577.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

基于风驱动优化的BP神经网络(分类应用) - 附代码

基于风驱动优化的BP神经网络(分类应用) - 附代码 文章目录 基于风驱动优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.风驱动优化BP神经网络3.1 BP神经网络参数设置3.2 风驱动算法应用 4.测试结果&#x…

数据结构——AVL树(详解 + C++模拟实现)

文章目录 前言AVL树的概念AVL树节点的定义AVL树类框架AVL树的插入AVL树的旋转新节点插入较高子树的左侧 —— 左左: 右单旋新节点插入较高右子树的右侧——右右: 左单旋新节点插入较高左子树的右侧 —— 左右: 先左单旋然后再有单旋新节点插入较高右子树的左侧&…

1500*B. Zero Array(贪心数学找规律)

Problem - 1201B - Codeforces 解析&#xff1a; 因为每次减少2&#xff0c;如果总和为奇数肯定无法实现。 特例&#xff0c;如果某个数大于其他所有数的总和&#xff0c;同样无法实现。 其他均可实现。 #include<bits/stdc.h> using namespace std; #define int long l…

基于生物地理学优化的BP神经网络(分类应用) - 附代码

基于生物地理学优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于生物地理学优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.生物地理学优化BP神经网络3.1 BP神经网络参数设置3.2 生物地理学算法应用 4…

PyQt5+Qt设计师初探

在上一篇文章中我们搭建好了PyQt5的开发环境&#xff0c;打铁到趁热我们基于搭建好的环境来简单实战一把 一&#xff1a;PyQt5包模块简介 PyQt5包括的主要模块如下。 QtCore模块——涵盖了包的核心的非GUI功能&#xff0c;此模块被用于处理程序中涉及的时间、文件、目录、数…

【Spring Cloud】基于 Feign 实现远程调用,深入探索 Feign 的自定义配置、性能优化以及最佳实践方案

前言 在微服务架构中&#xff0c;服务之间的通信是至关重要的&#xff0c;而远程调用则成为实现这种通信的一种常见方式。在 Java 中&#xff0c;使用 RestTemplate 是一种传统的远程调用方式&#xff0c;但它存在一些问题&#xff0c;如代码可读性差、编程体验不一致以及参数…

基于水循环优化的BP神经网络(分类应用) - 附代码

基于水循环优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于水循环优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.水循环优化BP神经网络3.1 BP神经网络参数设置3.2 水循环算法应用 4.测试结果&#x…

使用css制作3D盒子,目的是把盒子并列制作成3D货架

注意事项&#xff1a;这个正方体的其他面的角度很难调&#xff0c;因此如果想动态生成&#xff0c;需要很复杂的设置动态的角度&#xff0c;反正我是折腾了半天没继续搞下去&#xff0c; 1. 首先看效果&#xff08;第一个五颜六色的是透明多个面&#xff0c;第2-3都是只有3个面…

PageRank(下):数据分析 | 数据挖掘 | 十大算法之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

云服务器CVM_云主机_云计算服务器_弹性云服务器-腾讯云

腾讯云服务器CVM提供安全可靠的弹性计算服务&#xff0c;腾讯云明星级云服务器&#xff0c;弹性计算实时扩展或缩减计算资源&#xff0c;支持包年包月、按量计费和竞价实例计费模式&#xff0c;CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格&#xff0c;提供9个9的数…

linearlayout中使用多个weight导致部分子控件消失异常

问题描述&#xff1a; 在一个linearlayout中写了两个用到weight的布局&#xff0c;在androidstudio中显示正常 但是代码跑起来之后最下面哪一行都消失了&#xff1b; 解决办法1 把两个用到weight的改成一个了&#xff0c;外面那层的weight写成固定宽度就能正常显示出丢失的…

二叉树--翻转二叉树

文章前言&#xff1a;如果有小白同学还是对于二叉树不太清楚&#xff0c;作者推荐&#xff1a;二叉树的初步认识_加瓦不加班的博客-CSDN博客 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 如果思路不清楚&#xff0c;请看动态页面&am…

【Spring内容介绍 | 第一篇】什么是事务管理

前言&#xff1a; 当今软件开发行业中&#xff0c;事务管理是一个不可或缺的重要组成部分。随着企业应用的复杂性和数据交互的增加&#xff0c;确保数据的一致性和完整性变得越来越关键。Spring框架作为一种全功能的应用程序开发框架&#xff0c;为我们提供了强大而灵活的事务管…

【yolo系列:yolov7训练添加spd-conv】

系列文章目录 yolov7训练添加spd-conv 文章目录 系列文章目录一、spd-conv是什么&#xff1f;二、使用步骤1.第一步&#xff1a;先在models/common.py加上2.第二步&#xff1a;models/yolo.py加上2.第三步&#xff1a;修改yolov7的yaml文件 总结 提示&#xff1a;以下是本篇文…

Linux指令大全(文件和目录操作、文件内容查看和编辑、系统信息和管理、网络和通信、压缩和解压缩、权限管理、包管理……)

目录 前言 VMware 16.2.4Ubuntu18.04 Windows11安装WSL Linux指令大全 一、文件和目录操作指令 cd&#xff1a;切换当前目录 ls&#xff1a;列出目录内容 mkdir&#xff1a;创建新目录 rm&#xff1a;删除文件或目录 cp&#xff1a;复制文件或目录 mv&#xff1a;移…

java 将字符串转为Base64格式与将Base64内容解析出来

首先要引入依赖包 import java.nio.charset.StandardCharsets; import java.util.Base64;然后对应一下两个代码 将字符串转为Base64 Base64.getEncoder().encodeToString(需要转换的字符串.getBytes(StandardCharsets.UTF_8));将 Base64 字符串解析成原来的内容 byte[] deco…

SpringBoot详解

文章目录 1. Xml 和 JavaConfig1.1 什么是 JavaConfig1.2 JavaConfig 配置容器1.3 ImportResource1.4 PropertyResource 2. 注解SpringBootApplication3.Spring Boot 核心配置文件3.1 yaml格式3.2 .yml 文件3.3 多环境配置3.4 Spring Boot 自定义配置3.4.1 Value 注解 3.5 注解…

基于知识蒸馏的两阶段去雨去雪去雾模型学习记录(三)之知识测试阶段与评估模块

去雨去雾去雪算法分为两个阶段&#xff0c;分别是知识收集阶段与知识测试阶段&#xff0c;前面我们已经学习了知识收集阶段&#xff0c;了解到知识阶段的特征迁移模块&#xff08;CKT)与软损失&#xff08;SCRLoss&#xff09;,那么在知识收集阶段的主要重点便是HCRLoss(硬损失…

css--踩坑

1. 子元素的宽高不生效问题 设置flex布局后&#xff0c;子元素的宽高不生效问题。 如果希望子元素的宽高生效&#xff0c;解决方法&#xff0c;给子元素添加如下属性&#xff1a; flex-shrink: 0; flex-shrink: 0;2. 横向滚动&#xff08;子元素宽度不固定&#xff09; /* tab…

大数据软件项目的应用行业

大数据软件项目可以应用于各种不同的行业&#xff0c;以帮助组织更好地理解和利用其数据资产&#xff0c;从而做出更明智的决策、提高效率并推动创新。以下是一些主要行业&#xff0c;大数据软件项目可以发挥重要作用的示例&#xff0c;希望对大家有所帮助。北京木奇移动技术有…