使用 int 13h 读取的扇区数量多于磁道上的扇区数量

2024-02-09

顺序是什么int 13h with ah=02h会读19部门起始于(C, H, S) = (0, 0, 1)提供了 2 个磁头、每磁道 18 个扇区、每面 80 个磁道的(软盘)磁盘几何结构。

或者,更一般地说,当它到达磁道 0 的末尾、磁头 0 时会发生什么?它转到磁道 1 还是磁头 1?在这种情况下它还能正常工作吗?

编辑:等等..这实际上就像小时、分钟、秒吗?如果我们到达轨道末端(S大于18),那么H会增加吗?


Modern BIOSes support the concept of multitrack1 reads and writes. If you read or write past the end of a track it will continue on with the following track. To be most compatible with the widest array of BIOSes (old and new) you may wish to consider not reading or writing across a track boundary.

对于每磁道 18 个扇区/2 个磁头/80 个柱面的驱动器几何结构(3.5 英寸 1.44MB 软盘),CHS(0,0,18) 之后的扇区是 CHS(0,1,1)。在到达 CHS 处的扇区后(0,1,18) 下一个是 CHS(1,0,1)。在某种程度上,这类似于 HH:MM:SS。


根据您的驱动器几何形状,总共有 2880(80*2*18) 个扇区。如果将扇区编号为 0 到 2879(含),则它们称为逻辑块地址 (LBA)。

INT 13小时/ah=2 http://www.ctyme.com/intr/rb-0607.htm takes CHS价值观。您可以转换LBA to CHS具有以下公式(或等效公式)的值:

C = (LBA ÷ SPT) ÷ HPC
H = (LBA ÷ SPT) mod HPC
S = (LBA mod SPT) + 1

HPC = Heads per cylinder (aka Number of Heads)
SPT = Sectors per Track, 
LBA = logical block address

"mod" is the modulo operator (to get the remainder of a division)

我已经写了更多关于LBA to CHS在这个其他的计算堆栈溢出答案 https://stackoverflow.com/a/45495410/3857942在该部分LBA 到 CHS 的翻译。如果您使用这些计算创建了一个表,则编号将如下所示:

LBA =    0:   CHS = ( 0,  0,  1)
LBA =    1:   CHS = ( 0,  0,  2)
LBA =    2:   CHS = ( 0,  0,  3)
LBA =    3:   CHS = ( 0,  0,  4)
LBA =    4:   CHS = ( 0,  0,  5)
LBA =    5:   CHS = ( 0,  0,  6)
LBA =    6:   CHS = ( 0,  0,  7)
LBA =    7:   CHS = ( 0,  0,  8)
LBA =    8:   CHS = ( 0,  0,  9)
LBA =    9:   CHS = ( 0,  0, 10)
LBA =   10:   CHS = ( 0,  0, 11)
LBA =   11:   CHS = ( 0,  0, 12)
LBA =   12:   CHS = ( 0,  0, 13)
LBA =   13:   CHS = ( 0,  0, 14)
LBA =   14:   CHS = ( 0,  0, 15)
LBA =   15:   CHS = ( 0,  0, 16)
LBA =   16:   CHS = ( 0,  0, 17)
LBA =   17:   CHS = ( 0,  0, 18)
LBA =   18:   CHS = ( 0,  1,  1)
LBA =   19:   CHS = ( 0,  1,  2)
LBA =   20:   CHS = ( 0,  1,  3)
LBA =   21:   CHS = ( 0,  1,  4)
LBA =   22:   CHS = ( 0,  1,  5)
LBA =   23:   CHS = ( 0,  1,  6)
LBA =   24:   CHS = ( 0,  1,  7)
LBA =   25:   CHS = ( 0,  1,  8)
LBA =   26:   CHS = ( 0,  1,  9)
LBA =   27:   CHS = ( 0,  1, 10)
LBA =   28:   CHS = ( 0,  1, 11)
LBA =   29:   CHS = ( 0,  1, 12)
LBA =   30:   CHS = ( 0,  1, 13)
LBA =   31:   CHS = ( 0,  1, 14)
LBA =   32:   CHS = ( 0,  1, 15)
LBA =   33:   CHS = ( 0,  1, 16)
LBA =   34:   CHS = ( 0,  1, 17)
LBA =   35:   CHS = ( 0,  1, 18)
LBA =   36:   CHS = ( 1,  0,  1)
LBA =   37:   CHS = ( 1,  0,  2)
LBA =   38:   CHS = ( 1,  0,  3)
LBA =   39:   CHS = ( 1,  0,  4)
LBA =   40:   CHS = ( 1,  0,  5)
LBA =   41:   CHS = ( 1,  0,  6)

... [snip] ...

LBA = 2859:   CHS = (79,  0, 16)
LBA = 2860:   CHS = (79,  0, 17)
LBA = 2861:   CHS = (79,  0, 18)
LBA = 2862:   CHS = (79,  1,  1)
LBA = 2863:   CHS = (79,  1,  2)
LBA = 2864:   CHS = (79,  1,  3)
LBA = 2865:   CHS = (79,  1,  4)
LBA = 2866:   CHS = (79,  1,  5)
LBA = 2867:   CHS = (79,  1,  6)
LBA = 2868:   CHS = (79,  1,  7)
LBA = 2869:   CHS = (79,  1,  8)
LBA = 2870:   CHS = (79,  1,  9)
LBA = 2871:   CHS = (79,  1, 10)
LBA = 2872:   CHS = (79,  1, 11)
LBA = 2873:   CHS = (79,  1, 12)
LBA = 2874:   CHS = (79,  1, 13)
LBA = 2875:   CHS = (79,  1, 14)
LBA = 2876:   CHS = (79,  1, 15)
LBA = 2877:   CHS = (79,  1, 16)
LBA = 2878:   CHS = (79,  1, 17)
LBA = 2879:   CHS = (79,  1, 18)

脚注:

1Multitrack support doesn't mean a disk access can cross cylinders. A multitrack disk access must start and end on the same cylinder.

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

使用 int 13h 读取的扇区数量多于磁道上的扇区数量 的相关文章

随机推荐

  • 如何在 Mac OS X 上获取内存泄漏的行编号堆栈跟踪?

    我已经成功获得了 Xcodeleaks报告我的命令行 GCC Ada 程序中的泄漏的工具 通过添加delay 11 0 最后让leaks进行检查 然后 export MallocStackLogging 1 foobar leaks foo
  • 正则表达式中的[^.]*是什么意思?

    我试图从以下文本中获取 482 75 span 482 75 span 我使用的正则表达式是 regex span span 它起作用了 但我不明白的是为什么 可以在这里匹配 aapl 我的理解是 表示除换行符之外的任何字符 表示否定 因此
  • 如何在 ASP.NET Core MVC 上正确设置 cookie 的过期日期时间

    我正在尝试从后端 Asp Net core 向浏览器设置一个 Cookie 该 Cookie 应在第二天同一时间减去 5 分钟后过期 这是来自控制器的 C 代码 HttpContext Response Cookies Append MyC
  • Erlang - 随机数生成器

    我正在使用以下内容生成一个近乎随机的数字 3 gt erlang ref to list make ref Ref lt 0 0 0 36 gt 我想要的是00036 嗯 这就是我在上一篇文章中被告知我可以做的事情 我发现从 make re
  • 是否可以将数据导入Hive表而不复制数据

    我将日志文件以文本形式存储在 HDFS 中 当我将日志文件加载到 Hive 表中时 所有文件都会被复制 我可以避免所有文本数据存储两次吗 编辑 我通过以下命令加载它 LOAD DATA INPATH user logs mylogfile
  • 防止转换 HTML 实体时出现工具提示

  • 组件 props 中的函数参数不兼容

    我有一个组件 它接受一个项目列表 已知有一个 ID 以及一个过滤这些项目的函数 具有 ID 的类型是项目的通用类型 所有项目都将具有 但更具体的项目将包括其他道具 type GenericItem id string type Specif
  • 为什么给字符串添加null没有异常?

    为什么这不抛出异常不明白 obj 为 null object obj null Console WriteLine Hello World obj 这编译为 Console WriteLine String Concat Hello Wor
  • 如何使用CSS仅显示字符串的一部分

    我希望能够显示最多 10 个字符的字符串 如果字符串超过 10 个字符 我想在末尾附加 例如 如果我有字符串 helloworldmynameisryan 我希望它像这样显示 helloworld 我只是在 div 中显示我的字符串 如下所
  • 如何将 IAM 角色添加到 AWS 中的现有实例?

    我想添加一个IAM对现有角色的作用EC2AWS 中的实例 我尝试使用AWS CLI 但是 我找不到办法做到这一点 自 AWS CLI 起v1 11 46 昨天刚刚发布 参见变更日志文件 https github com aws aws cl
  • ASP.NET MVC AntiForgeryToken 和缓存

    我目前正在开发一个 ASP NET MVC 项目 并遇到了一个看起来很奇怪的错误 在 ASP NET MVC 模板表单中 始终会获得 AntiForgeryToken 因此我相信这是最佳实践 然而 AntiForgeryTokens 似乎不
  • 为什么环境变量在 FOR 循环内没有更新?

    我有一个正在扫描文件的批处理文件URLs txt对于每个 url 运行它并下载文件 我遇到的问题是 FOR 循环中的环境变量 我在用cat sed and awk获取 url 的最后两部分 以便我可以提供文件名 问题是环境变量在第一次运行后
  • Ojdbc8 jars升级到21.1.0.0抛出Nosuchmethod异常UCPservletContextListener init

    Ojdbc8 ons ucp jar 已升级到 21 1 0 0 版本 当尝试在 tomcat 服务器上启动应用程序时 它抛出 Nosuchmethod 异常 登录Tomcat的localhost log文件 应用程序尝试在启动期间建立数据
  • 套接字编程-setsockopt:协议不可用?

    我正在用 C 语言进行一些基本的套接字编程 并且在尝试运行代码的每台计算机上都会遇到此错误 代码编译得很好 但是当我尝试运行它时 我收到错误setsockopt 协议不可用 这似乎不是一个很常见的错误 但我尝试运行它的每台计算机上都会遇到这
  • 如何创建二维以上的 pandas 数据框?

    我希望能够创建n dimensional数据框 我听说过一种使用 3D 数据帧的方法panels in pandas但是 如果可能的话 我想通过将不同的数据集组合成一个 将维度扩展到超过 3 个维度超级数据框 我尝试了这个 但我不知道如何在
  • 是否可以从 vb.net dll 中的 dll 导入 c# 类?

    集成开发环境 VS2010 框架网 4 0 我在 Visual Studio 2010 下创建了一个 C dll 项目 其中包含几个公共类 我想在另一个 dll 项目中使用它的类 但用 vb net 编写 在vb net dll项目中 我引
  • 禁用所有 jquery datepicker 输入的自动完成功能

    我想禁用autocomplete对于使用 jquery ui datepicker 的所有输入 无需手动对每个输入执行此操作 这怎么可能做到呢 尝试这个 datepicker on click function e e preventDef
  • 两个字段的唯一约束及其相反

    我有一个数据结构 必须在其中存储元素对 每对恰好有 2 个值 因此我们使用一个表 其中包含字段 左值 右值 这些对应该是唯一的 如果密钥发生更改 它们将被视为相同 Example Fruit Apple is the same as App
  • 从 ASP.NET 应用程序获取入口程序集 [重复]

    这个问题在这里已经有答案了 可能的重复 用于 Web 应用程序的 GetEntryAssembly https stackoverflow com questions 4277692 getentryassembly for web app
  • 使用 int 13h 读取的扇区数量多于磁道上的扇区数量

    顺序是什么int 13h with ah 02h会读19部门起始于 C H S 0 0 1 提供了 2 个磁头 每磁道 18 个扇区 每面 80 个磁道的 软盘 磁盘几何结构 或者 更一般地说 当它到达磁道 0 的末尾 磁头 0 时会发生什