《汇编语言》- 读书笔记 - 第17章-外传之 DOSBox-X 调用 int 13 读写磁盘

《汇编语言》- 读书笔记 - 第17章-外传之 DOSBox-X 调用 int 13 读写磁盘

  • 总结
    • dosbox-x.conf
  • 不完美
  • 读取成功
  • 写入成功
  • 参考资料

总结

DOSBox 中访问 int 13h 始终没反应。网上查了下有人说是没支持,建议使用 DOSBox-X

经过无数遍尝试后:

环境状态
Win11:DOSBox失败
Win11:DOSBox-X失败
Oracle VM VirtualBox:DOS失败
VMWare:DOS失败
VMWare:XP失败
VMWare:XP:DOSBox失败
VMWare:XP:DOSBox-X成功
但不完美

于是接下来我进入虚拟机中的XP系统使用 DOSBox-X 测试结果。

DOSBox-X 下载连接
EditPlus 文字编辑器 v5.4 汉化特别免费绿色版
Editplus 语法高亮文件
WinHex v21.0 绿色汉化特别版(无需注册)

dosbox-x.conf

这是我的设置,启动时自动挂载。

[autoexec]
# 挂载虚拟机XP中的 c:\masm 目录为 dosbox-x 中 DOS 系统的 c 盘
# 为了方便我把 masm,link,ml 等工具放在了 c:\tools 并追加到环境变量中
# 设置完成后自动切到 c 盘
mount c c:\masm
set PATH=%PATH%;c:\tools;
c:
# 挂载软盘镜像为 A 盘
IMGMOUNT A C:\masm\A.flp -t floppy

不完美

每回第一次调用 int 13 都会失败,需要刷新一下驱动器,第二次才能成功。
后续再多次读写,也是成功的。
奇怪的时,在第一次调用之前,我先刷新驱动器并不起作用。

比如:

assume cs:code
code segmentstart: mov ax,0mov es,axmov bx,200hmov al,1		; 读取的扇区数mov dl,0        ; A 盘 mov dh,0        ; 磁头(面)mOV ch,0		; 磁道号mov cl,1		; 扇区号mov ah,2        ; 功能03H 写扇区int 13h         ; 调用“直接磁盘服务”ok:	mov ax,4c00hint 21h
code ends
end start

第一次读取返回结果: ah=06 软盘取出。
在这里插入图片描述

刷新驱动器(我挂载的是A盘),后再次执行就好了。
在这里插入图片描述

读取成功

在这里插入图片描述
读取前查看一下目标内存区域,是没有数据的。
调用后 AH=00h 表示成功。
在这里插入图片描述
此时的内存中正是软盘启动扇区的数据。
在这里插入图片描述
再用 WinHex 查看软盘镜像文件,对比读取到的内容。

写入成功

在这里插入图片描述
调用后 AH=00h 表示成功。
在这里插入图片描述
再直接用 WinHex 查看软盘镜像文件,正是刚才屏幕上的内容。

参考资料

《汇编语言》- 读书笔记 - 第17章-使用 BIOS 进行键盘输入和磁盘读写

FatFs 之三 FAT文件系统基础、FAT 数据格式、引导、编码

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

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

相关文章

网络计算机

TCP/IP四层模型 应用层:位于传输层之上,主要提供两个设备上的应用程序之间信息交换的服务,它定义了信息交换的格式,消息会交给下一层传输层来传递。我们把应用层交互的数据单元称为报文。应用层工作在操作系统的用户态&#xff0…

腾讯云轻量服务器地域选择方法整理,选择不能修改!

腾讯云轻量应用服务器地域如何选择?地域就近选择,北方选北京地域、南方选广州地域,华东地区选上海地域。广州上海北京地域有什么区别?哪个好?区别就是城市地理位置不同,其他的差不多,不区分好坏…

C++初阶:内存管理

目录 1. C/C中各种资源的内存分布1.1 C/C程序内存区域划分1.2 各资源的内存分布情况(练习) 2. C中的动态内存管理方式2.1 new/delete开辟内置类型空间2.2 new/delete开辟销毁自定义类型空间 3. operator new 与 operator delete函数4. new与delete的实现…

表结构 / 字段操作

一.增 alter table emp add wickname varchar(20); 二.改 1.仅仅改变数据类型(字段类型) alter table emp modify wickname varchar(30); 2.字段名 和 字段类型 都改变 alter table emp change wickname username varchar(20); 三.删 alter table emp …

ZigBee技术与实训教程(无线传感网技术第五天持续更新)

ZigBee具有广阔的应用前景。 家庭和楼宇网络。工业控制。公共场所。农业控制。医疗。商业。 1.ZigBee的协议框架 Zigbee栈是在IEEE 802.15.4标准基础上建立的,定义了MAC层和PHY(数据链路层)。ZigBee设备还包括IEEE 802.15.4(该标准定义了r…

多线程锁.

公平锁与非公平锁 公平锁是指多个线程按照申请锁的顺序来获取锁,这里类似排队买票,先来的人先买后来的人在队尾排着,这是公平的Lock lock new Reentrantlock(true);/true表示公平锁,先来先得非公平锁指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请…

类和对象 (中)

文章目录 类的六个默认成员函数构造函数析构函数特性使用 总结构造函数和析构函数拷贝构造函数特性拷贝构造总结 赋值运算符的重载运算符重载赋值运算符重载总结拷贝构造函数和赋值运算符重载 关于operator<<重载日期类实现const 修饰的成员函数取地址重载以及const取地址…

css实现高度是宽度一半的效果

1、方法一&#xff1a;使用变量:root、var()、clac()实现&#xff1a; 1.1 效果如下&#xff1a; 2.2 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title>&l…

伸手党必备之Python正则表达式常用函数

今天介绍一下Python中常用的正则表达式处理函数。Python的正则表达式主要有两种方法完成模式匹配&#xff1a;『搜索』和『匹配』 re.match re.match 尝试从字符串的开始全部或者部分匹配某个模式&#xff0c;如&#xff1a;下面的例子匹配第一个单词。 import re text &…

springboot269反欺诈平台的建设

反欺诈平台设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装反欺诈平台软件来发挥其高效地信息处…

Vue-Vben-Admin:中大型项目后台解决方案及如何实现页面反向传值

Vue-Vben-Admin&#xff1a;中大型项目后台解决方案及如何实现页面反向传值 摘要&#xff1a; Vue-Vben-Admin是一个基于Vue3.0、Vite、Ant-Design-Vue和TypeScript的开源项目&#xff0c;旨在为开发中大型项目提供一站式的解决方案。它涵盖了组件封装、实用工具、钩子函数、动…

学习c语言:单链表的应用

一、单链表经典算法 1.1 单链表相关经典算法OJ题1&#xff1a;移除链表元素 . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.…

WPF监控平台(科技大屏)[一]

跟着B站的视频敲了一个略微复杂的WPF界面,链接如下.在这里我详细的写一份博客进行设计总结. 系统介绍和配置及主窗口设计_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Wy421Y7QD?p1&vd_source4796b18a2e4c1ec8a310391a5644b6da 成果展示 实现过程 总体来说,我的…

OpenHarmony开源项目—工程管理

DevEco Studio的基本使用&#xff0c;请参考DevEco Studio使用指南。本章主要介绍如何使用DevEco Studio进行多设备应用开发。 说明&#xff1a; 本章的内容基于DevEco Studio 3.1.1 Release版本进行介绍&#xff0c;如您使用DevEco Studio其它版本&#xff0c;可能存在文档与产…

微信小程序(五十八)分步表单多页面传值

注释很详细&#xff0c;直接上代码 新增内容&#xff1a; 1.分步表单传值 2.伪数据生成 源码&#xff1a; app.json {"pages": ["pages/index/index","pages/building/building","pages/room/room","pages/logs/logs"],&qu…

关于类和对象超级初级小白知识

下面的内容只是一小部分&#xff0c;在整个面向对象的知识中并不完整&#xff0c;用于记忆和梳理 目录 前言&#xff1a;类和对象是什么&#xff1f; 一、定义类 1.如何定义类 2.类的注意事项 二.类的实例化 1.创建对象的基础知识 2.如何创建对象 3.实例化举例 4.访问对象…

【Python】python实现决策树算法和贝叶斯算法(附源代码)

使用一种你熟悉的程序设计语言&#xff0c;实现&#xff08;1&#xff09;贝叶斯算法和&#xff08;2&#xff09;决策树算法 目录 1、贝叶斯算法2、决策树算法3、两种算法比较 1、贝叶斯算法 import pandas as pd import numpy as np from sklearn.model_selection import t…

算法-DFS/BFS-XMUOJ提瓦特细胞探秘

题目 思路 这道题目描述了一个矩阵中由数字1至9组成的细胞&#xff0c;这些细胞按照特定规则相互连接。具体规则是&#xff0c;只有当细胞上下左右紧邻的数字同样属于1至9时&#xff0c;它们才会被视为同一细胞的一部分。 解决这个问题的关键在于如何遍历整个矩阵&#xff0c…

灵雀云开源ALB ,为云原生 Kubernetes 网关领域再添新星

ALB (Another Load Balancer)是一款由灵雀云倾力打造的云原生 Kubernetes 网关&#xff0c;近日&#xff0c;正式宣布将其在Github上开源。ALB 的诞生&#xff0c;旨在满足日益增长的云原生应用需求&#xff0c;为开发者提供更为强大和灵活的网关解决方案。 ALB 支持在一个集群…

Oracle PL/SQL Programming 第9章:Numbers 读书笔记

总的目录和进度&#xff0c;请参见开始读 Oracle PL/SQL Programming 第6版 本章谈3点&#xff1a; 可使用的数字数据类型如何在数字和文本间转换PL/SQL 内置数值函数 Numeric Datatypes NUMBER&#xff1a;平台无关的实现&#xff0c;适合处理货币金额PLS_INTEGER 和 BINA…