AH=2 的 BIOS INT 13H 每次只能读取 72 个扇区。为什么?

2023-11-22

我正在使用 Bochs 2.4.5 编写引导扇区代码。我使用 INT 13H 从软盘读取扇区。但我发现如果读取的扇区数> 72,INT13就会失败。返回码为AH=1。下面是代码,这是INT13。返回码为AH=1。

为什么INT 13H不能读取超过72个扇区?

   xorb %ah, %ah
   xorb %dl, %dl
   int $0x13      # reset the floppy

   movw $0x8000, %ax
   movw %ax,%es        
   movw $0, %bx  # ES:BX is the buffer  
   movb $0x02, %ah
   movb $73, %al # how many sectors to read. 72 is ok, but >=73 is wrong.
   movb $0, %ch
   movb $1, %cl
   movb $0, %dh
   movb $0, %dl

   int $0x13

谢谢你的帮助。

Update

下列的马修·斯莱特里的指令,我找到了对应的代码。我把它列在这里是为了其他和我一样困惑的人。完整代码位于here.

7220       if ((drive > 1) || (head > 1) || (sector == 0) ||
7221           (num_sectors == 0) || (num_sectors > 72)) {
7222         BX_INFO("int13_diskette: read/write/verify: parameter out of range\n");
7223         SET_AH(1);
7224         set_diskette_ret_status(1);
7225         SET_AL(0); // no sectors read
7226         SET_CF(); // error occurred
7227         return;
7228       }

你正在使用 Bochs,所以答案可以在博克斯BIOS源:BIOS 正在对扇区数执行显式范围检查,如果大于 72(或等于 0)则拒绝它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AH=2 的 BIOS INT 13H 每次只能读取 72 个扇区。为什么? 的相关文章

  • 用 C# 启动 Windows 服务

    我想启动一个刚刚安装的Windows服务 ServiceBase ServicesToRun if bool Parse System Configuration ConfigurationManager AppSettings RunSe
  • asp.net c# 将数据集中的数据转换为电子邮件正文?

    从数据集到电子邮件正文的最佳方式是什么 我有一个 net 控制台应用程序 用于根据存储过程的结果发送电子邮件通知 并且想知道如何最好地从 SQL 数据转到电子邮件正文 带有颜色和字体的 html 正文是最好的 但纯文本也可以 thanks
  • 将指针转换为浮点数?

    我有一个unsigned char 通常 这指向一块数据 但在某些情况下 指针就是数据 即 铸造一个int的价值unsigned char 指针 unsigned char intData unsigned char myInteger 反
  • 隐式方法组转换陷阱

    我想知道为什么给定代码的输出 在 LinqPad 中执行 void Main Compare1 Action Main Dump Compare2 Main Dump bool Compare1 Delegate x return x Ac
  • 我们如何将数据从一个打开的表单传递到另一个打开的表单?

    winform中如何将数据从一个窗体传递到另一个打开的窗体 在 Windows 应用程序中 一个窗体打开另一个窗体 当我在父表单中输入一些数据时 这些数据将立即反映在另一个子表单中 这将如何发生 取决于你想要多花哨 最简单的方法就是直接调用
  • 如何“杀死”Pthread?

    我正在学习 Pthreads 并且想知道杀死这样一个对象的最佳方法是什么 在寻找类似的问题后 我无法找到 明确 的答案 但请随时向我指出任何相关问题 我正在使用一个小型客户端服务器应用程序 其中服务器主线程正在侦听套接字上的客户端连接 每次
  • 如何从 List 中的字符串中删除数字/数字?

    我有一个字符串列表 List
  • saber sd 如何在没有 SPL 的情况下直接从 uboot 启动

    sabre sd 基于 imx 6 最大内部 RAM 约为 150Kb 然而 uboot 足够大 可以容纳在这个空间中 在这个场景中事情是如何进行的 https community freescale com docs DOC 95015
  • C 中“for”循环中的两个变量

    我正在编写一些代码 需要在其中使用两个变量for环形 下面的代码看起来没问题吗 它确实给了我预期的结果 for loop 1 offset loop 2 offset 2 loop 1 gt offset 190 loop 2 lt 190
  • 如何附加到 xml

    我有这个xml
  • Create CFrameWnd 给出了第一次机会异常——为什么?

    我正在尝试使用基于 CFrameWnd 的代码编写一个简单的 MFC 应用程序 该应用程序在可滚动窗口中绘制 下面的代码改编自 Prosise Programming Windows with MFC 第 2 版 第 89ff 页 当我在调
  • 在不使用 Thread.Sleep c# 的情况下延迟发送电子邮件

    我有一个 for 循环 它循环并每个循环发送一封电子邮件 现在我正在使用 thread sleep 但我希望用户仍然能够与程序交互 只需取消该循环即可 是否可以在不使用 thread sleep 的情况下做到这一点 您是否在 UI 线程上运
  • 为什么C++变量是指针时不需要正确定义?

    我对 C 语言完全陌生 特别是指针 经验主要是 PHP 并且希望对以下内容进行一些解释 我已经尝试寻找答案 这两行代码如何能够在我的程序中完成完全相同的工作 第二行似乎违背了我迄今为止所学到和理解的关于指针的一切 char disk 3 D
  • 使用互斥锁来阻止临界区外部的执行

    我不确定我的术语是否正确 但这里是 我有一个由多个线程使用的函数来写入数据 在注释中使用伪代码来说明我想要的内容 these are initiated in the constructor int data std atomic
  • C 的“char”使用什么字符集? [复制]

    这个问题在这里已经有答案了 简单的问题 我最近开始用 C 编程 有一个简单的问题 C 编程语言在其 char 类型中使用什么字符集 例如 ASCII 还是取决于软件 操作系统 char 本质上是 1 个字节 主要在所有操作系统上 所以默认情
  • 我应该使用多个 HttpClient 来进行批量异步 GET 请求吗?

    我有一个场景 我需要在尽可能短的时间内发出大量 GET 请求 想想大约 1000 个 我知道通常最好保留一个客户端并尽可能重用它 Create Single HTTP Client HttpClient client new HttpCli
  • win32 API 和 .NET 框架之间的选择

    我必须开发一个适用于 Windows 的应用程序 该应用程序将能够通过网络摄像头识别手势来控制鼠标 我将使用 vc 2008 进行开发 但我很困惑是使用 NET 框架还是核心 win32 API 性能对于我的应用程序非常重要 根据 Ivor
  • 如何将 Metro 应用部署到桌面?

    我正在尝试将我的 C 应用程序部署到我的 Windows 8 Metro 桌面 我可以在 bin 文件夹中看到部署的文件 但是当我尝试打开它们时 出现以下错误 该应用程序只能在 AppContainer 的上下文中运行 我检查了属性上下文菜
  • C/C++ 通过 Android NDK 在 JNI 中看不到 Java 方法

    我正在尝试从使用 NDK 构建的 C 类文件调用 Java 方法 它不断抛出常见的 未找到非静态方法 错误并导致整个 Android 应用程序崩溃 下面的代码片段 有些东西可能不需要 但我按原样保留它们 因为焦点 问题在于refreshJN
  • 如何向 ItemsControl 中的 WPF 按钮添加相同的命令

    如何将命令添加到 wpf 按钮 该按钮是ItemsControl并正在修改ItemsSource itself 这是我的 XAML

随机推荐

  • 在批处理文件中,如何判断进程是否正在运行?

    我想编写一个批处理文件来检查进程是否正在运行 如果正在运行 则执行一个操作 如果没有 则执行另一个操作 我知道我可以使用任务列表列出所有正在运行的进程 但是有没有更简单的方法来直接检查特定进程 看起来这应该可行 但事实并非如此 taskli
  • 找到穿过迷宫的所有可能路径

    我正在尝试创建一个程序 该程序将遍历一个随机生成的迷宫 其中 1 是开放的 0 是墙壁 从左上角开始 到右下角结束 路径可以向上 向下 向左 向右 目前 我的程序为我提供了一种解决方案 但我无法让它打印多个路径 我已经阅读了这个问题的几个不
  • 如何使用 Apache Velocity 进行 XML 转义?

    我正在使用 Apache Velocity 生成 XML XML 转义输出的最佳 最直接 方法是什么 我看到有一个转义工具 但无法弄清楚它的开发状态 我还认为 XML 转义很可能是由 Velocity 直接支持的 看一眼事件处理程序 eve
  • IOS 关闭/显示键盘而不放弃第一响应者

    我的应用程序与通过蓝牙连接的条形码扫描仪一起使用 连接扫描仪后 您可以双击扫描仪上的按钮来关闭 显示屏幕键盘 90 的情况下 用户会希望隐藏键盘 因为他们将扫描条形码来输入数据 我提前知道有一些例外情况需要启用键盘 我想省去他们按扫描仪按钮
  • 可能使用三元运算符表达条件 HAML

    尝试想出一种更紧凑的方式在 HAML 和 Ruby 中表达这个条件 也许使用三元运算符 if page nil br nothing yet else br page name 寻找类似的方法有条件地测试是否在 HAML 模板中添加类的巧妙
  • 如何使用 grep 跨多行查找模式?

    我想找到按顺序包含 abc 和 efg 的文件 并且这两个字符串位于该文件中的不同行 例如 一个包含内容的文件 blah blah blah blah blah abc blah blah blah blah blah blah blah
  • qTip 问题 - 提示未显示,因为元素在脚本之后加载

    我对 javascript jQuery 或其插件不太有经验 但通常我都能应付 无论如何 我的客户正在构建一个网站 其目的之一是从不同网站获取新闻文章并在无序 html 列表中显示标题 我无法访问他的代码 新闻文章加载速度相当慢 在网站加载
  • EmberJS - 具有 hasMany 关系的记录无法加载

    我正在使用 EmberJS 1 0 0 和 Ember Data 1 0 0 beta 以及最新版本的本地存储适配器 当我尝试从商店加载具有 hasMany 关系的记录时 出现以下错误 ember 1 0 0 js 第 394 行 断言失败
  • Tabhost-设置 Android 标签中的徽章位置

    我对徽章的概念很陌生 在我的应用程序中 我想在一个选项卡上显示徽章 为此 我使用了 android viewbadger jar 文件Android ViewBadger它在 4 个选项卡上工作正常 TabWidget tabs TabWi
  • Android:如何禁用列表创建时的列表项

    我对 Android 开发还很陌生 仍然在做很多事情 我有一个使用以下代码显示的主菜单 但无法弄清楚如何禁用菜单中的选定项目 有人可以帮我一些示例代码吗 public class listTest extends ListActivity
  • 如何通过 C# 中的 Selenium 伪造/模拟 ChromeDriver 中的地理位置?

    如何通过 C 中的 Selenium 伪造 模拟 ChromeDriver 中的地理位置 我只提供了 Python 和 Java 的示例 但我无法将代码 翻译 为 C 因为所使用的函数不存在 这是我想要做的示例图像 官方说好像还不支持 ht
  • Github:克隆我的私人存储库时出错

    我尝试使用 https URL 克隆我的 GitHub 项目 但失败并出现错误 git clone https email protected foo foo private git Cloning into foo private Pas
  • Laravel 4 中的包控制器

    我想在 Laravel 4 包中添加控制器 但我无法让路由正常工作 我已按照 Laravel 4 文档中的包说明进行操作 并获得了适用于非控制器路由的routes php 文件 有人可以给我一些关于如何让包控制器在 Laravel 4 中工
  • 在没有浏览器的情况下将 OpenID 与 WCF 一起使用,可能吗?

    从我对 OpenID 的大部分阅读来看 似乎可能需要浏览器 我正在编写一个 WCF 应用程序 并希望使用 OpenID 作为身份验证方法 但我的应用程序不是 Web 应用程序 是否可以在不需要 Web 浏览器的情况下一起使用 WCF 和 O
  • Pylance 的 VSCode 设置

    我正在使用以下组件运行 Vscode Version 1 51 1 user setup Commit e5a624b788d92b8d34d1392e4c4d9789406efe8f Date 2020 11 10T23 34 32 02
  • 如何使用 jQuery 获取客户端 IP 地址

    我想知道如何使用 jQuery 获取客户端 IP 地址 是否可以 我知道纯 JavaScript 不能 但使用了一些代码JSONP来自 Stack Overflow 本身 那么 有没有使用 jQuery 的解决方法呢 jQuery 可以处理
  • 加载视频 mp4 webpack 加载器

    如何使用 webpcak 4 加载 mp4 视频格式 我尝试如下 test mp4 use file loader loader file loader name videos name ext 并像这样导入 import pressBut
  • Jquery 的 Ajax 自动完成:如何发送动态参数

    我在用Ajax Autocomplete for Jquery http www devbridge com projects autocomplete jquery 在我的一个应用程序中 搜索表单看起来像这样
  • 如何查看 AngularDart 集合的元素?

    我有一个模型 class WordList List
  • AH=2 的 BIOS INT 13H 每次只能读取 72 个扇区。为什么?

    我正在使用 Bochs 2 4 5 编写引导扇区代码 我使用 INT 13H 从软盘读取扇区 但我发现如果读取的扇区数 gt 72 INT13就会失败 返回码为AH 1 下面是代码 这是INT13 返回码为AH 1 为什么INT 13H不能