古记事法: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.mzph.cn/news/93331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二极管的直流等效电路和微变等效电路

二级管的主要参数 1.IF(最大整流的电流) 二极管长期工作做能够通过电流的平均最大值:物理意义:功率电流值。 2.UR 二极管最高反向工作电压 需要留有裕度,通常能达到一半的裕度;UR不能等于UBR。 3.IR 未击穿…

自动驾驶技术:现状与未来

自动驾驶技术:现状与未来 文章目录 引言自动驾驶技术的现状自动驾驶技术的挑战自动驾驶技术的未来结论结论 2023星火培训【专项营】Apollo开发者社区布道师倾力打造,包含PnC、新感知等的全新专项课程上线了。理论与实践相结合,全新的PnC培训不…

傅里叶系列 P1 的定价选项

如果您想了解更多信息,请查看第 2 部分和第 3 部分。 一、说明 这是第一篇文章,我将帮助您获得如何使用这个新的强大工具来解决金融中的半分析问题并取代您的蒙特卡洛方法的直觉。 我们都知道并喜欢蒙特卡洛数字积分方法,但是如果我告诉你你可…

机器人中的数值优化(二十)——函数的光滑化技巧

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,…

嵌入式Linux应用开发-基础知识-第十九章驱动程序基石②

嵌入式Linux应用开发-基础知识-第十九章驱动程序基石② 第十九章 驱动程序基石②19.3 异步通知19.3.1 适用场景19.3.2 使用流程19.3.3 驱动编程19.3.4 应用编程19.3.5 现场编程19.3.6 上机编程19.3.7 异步通知机制内核代码详解 19.4 阻塞与非阻塞19.4.1 应用编程19.4.2 驱动编程…

Unity HDRP Custom Pass 实现场景雪地效果

先使用Shader Graph连一个使用模型法线添加雪地的shader,并赋给一个material。 1.1 先拿到模型世界坐标下的顶点法线,简单处理一下,赋给透明度即可。 给场景添加Custom Pass,剔除不需要的层级。 1.在Hierarchy界面中&#xff…

用于自然语言处理的 Python:理解文本数据

一、说明 Python是一种功能强大的编程语言,在自然语言处理(NLP)领域获得了极大的普及。凭借其丰富的库集,Python 为处理和分析文本数据提供了一个全面的生态系统。在本文中,我们将介绍 Python for NLP 的一些基础知识&…

SSM - Springboot - MyBatis-Plus 全栈体系(十六)

第三章 MyBatis 三、MyBatis 多表映射 2. 对一映射 2.1 需求说明 根据 ID 查询订单,以及订单关联的用户的信息! 2.2 OrderMapper 接口 public interface OrderMapper {Order selectOrderWithCustomer(Integer orderId); }2.3 OrderMapper.xml 配置…

讲讲项目里的仪表盘编辑器(三)布局组件

布局容器处理 看完前面两章的讲解,我们对仪表盘系统有了一个大概的理解。接着我们讲讲更深入的应用。 上文讲解的编辑器只是局限于平铺的组件集。而在编辑器中,还会有一种组件是布局容器。它允许其他组件拖拽进入在里面形成自己的一套布局。典型的有分页…

Python基础语法(1)

目录 一、常量和表达式 二、变量和类型 2.1 变量是什么 2.2 变量的语法 2.2.1 定义变量 2.2.2 使用变量 2.3 变量的类型 2.3.1 整数 2.3.2 浮点数(小数) 2.3.3 字符串 2.3.4 布尔 2.3.5 其他 2.4 为什么要有这么多类型 2.4.1 类型决定了数据在内存中占据多大空间…

【STM32 CubeMX】移植u8g2(一次成功)

文章目录 前言一、下载u8g2源文件二、复制和更改文件2.1 复制文件2.2 修改文件u8g2_d_setup文件u8g2_d_memory 三、编写oled.c和oled.h文件3.1 CubeMX配置I2C3.2 编写文件oled.holed.c 四、测试代码main函数测试代码 总结 前言 在本文中,我们将介绍如何在STM32上成…

[C++随想录] 优先级队列

优先级队列 基本使用题目训练 基本使用 priority_queue, 优先级队列, 又叫做双端队列, 头文件也是 <queue> 别看它叫做队列, 其实它是一个 堆 补充一下概念: 大根堆 — — 每一棵树的父节点比它的孩子都大小跟堆 — — 每一棵树的父节点比它的孩子都小 &#x1f447;&…

Golang语法、技巧和窍门

Golang简介 命令式语言静态类型语法标记类似于C&#xff08;但括号较少且没有分号&#xff09;&#xff0c;结构类似Oberon-2编译为本机代码&#xff08;没有JVM&#xff09;没有类&#xff0c;但有带有方法的结构接口没有实现继承。不过有type嵌入。函数是一等公民函数可以返…

设计模式10、外观模式Facade

解释说明&#xff1a;外观模式&#xff08;Facade Pattern&#xff09;又称为门面模式&#xff0c;属于结构型模式 Faade 为子系统中的一组接口提供了一个统一的高层接口&#xff0c;该接口使得子系统更加容易使用 外观&#xff08;Facade)角色&#xff1a;为多个子系统对外提供…

Sql注入(手工注入思路、绕过、防御)

一、Sql注入思路 1、判断注入点 在GET参数、POST参数、以及HTTP头部等&#xff0c;包括Cookie、Referer、XFF(X-Forwarded-for)、UA等地方尝试插入代码、符号或语句&#xff0c;尝试是否存在数据库参数读取行为&#xff0c;以及能否对其参数产生影响&#xff0c;如产生影响则…

信创办公–基于WPS的EXCEL最佳实践系列 (数据整理复制粘贴)

信创办公–基于WPS的EXCEL最佳实践系列 &#xff08;数据整理复制粘贴&#xff09; 目录 应用背景操作步骤1、数据查找与替换2、复制或粘贴数据3、使用自动填充工具4、将数据拆分到多列5、应用数字格式 应用背景 数据的整理复制粘贴等在日常的工作中经常使用。本章内容主要学习…

设计模式 - 享元模式

目录 一. 前言 二. 实现 一. 前言 享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;它主要解决的问题是创建大量相似对象时的内存开销问题。该模式通过共享具有相同状态的对象来减少内存使用量。 享元模式的思想是&#xff1a;当需要创建…

嵌入式Linux应用开发-基础知识-第十九章驱动程序基石③

嵌入式Linux应用开发-基础知识-第十九章驱动程序基石③ 第十九章 驱动程序基石③19.5 定时器19.5.1 内核函数19.5.2 定时器时间单位19.5.3 使用定时器处理按键抖动19.5.4 现场编程、上机19.5.5 深入研究&#xff1a;定时器的内部机制19.5.6 深入研究&#xff1a;找到系统滴答 1…

SpringCloud(一)Eureka、Nacos、Feign、Gateway

文章目录 概述微服务技术对比 Eureka服务远程调用服务提供者和消费者Eureka注册中心搭建注册中心服务注册服务发现Ribbon负载均衡负载均衡策略饥饿加载 NacosNacos与Eureka对比Nacos服务注册Nacos服务分集群存储NacosRule负载均衡服务实例权重设置环境隔离 Nacos配置管理配置热…

ESP32设备驱动-OLED-SSD1306(I2C)显示屏驱动

OLED-SSD1306(I2C)显示屏驱动 1、OLED介绍 OLED显示屏是指有机电激发光二极管(OrganicLight-EmittingDiode,OLED)由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一…