如何将 bin 文件(512 字节)写入软盘的第一个扇区(扇区 0)?

2024-03-04

如何将 .bin 文件写入软盘/虚拟软盘/软盘映像的第一个扇区?

我正在尝试启动一个简单的 512 字节引导加载程序。到处都显示“512 字节”的大小,所以我应该已经很好了。

附加信息:

引导加载程序仅显示一个字符串,我正在学习simple集会。有些工作是在 Windows 中完成的,有些是在Ubuntu 14.04 https://en.wikipedia.org/wiki/List_of_Ubuntu_releases#Ubuntu_14.04_LTS_.28Trusty_Tahr.29(值得信赖的塔尔)(如果这很重要的话)。

即使有引导加载程序标志,它也无法启动。


如果你使用的是 Linux,你可以使用DD公用事业。有一个版本DD也适用于 Microsoft Windows。


DD 的一般用法

如果您希望制作一个 720K 软盘大小的零填充虚拟磁盘映像,您可以使用dd像这样:

dd if=/dev/zero of=disk.img bs=1024 count=720

这将创建一个名为的文件disk.img即 1024*720 = 737280 字节大小。可以使用以下命令创建 1.44MB 的零填充软盘映像:

dd if=/dev/zero of=disk.img bs=1024 count=1440

从映像开头开始将二进制映像写入虚拟软盘可以如下完成:

dd if=bootload.bin of=disk.img conv=notrunc 

这个例子取文件bootload.bin并将其放置在磁盘映像的开头(称为disk.img在这种情况下)没有截断(conv=notrunc)如果你不使用conv=notrunc它将写入虚拟磁盘映像bootload.bin并将磁盘映像截断为引导加载程序的大小。


DD还能够通过跳转到磁盘开头以外的点来写入磁盘映像的特定部分。如果您需要将信息(代码/数据)放置在特定扇区中,这非常有用。此示例可用于将引导加载程序的第二阶段放置在磁盘映像的第一个 512 字节扇区之后:

dd if=stage2.bin of=disk.img bs=512 seek=1 conv=notrunc

bs=512将块大小设置为 512(更容易,因为它是大多数软盘扇区的典型大小)。seek=1查找图像开头之后的第一个块(512 字节),然后写入文件stage2.bin。我们需要conv=notrunc再次因为我们不想DD在以下位置截断磁盘映像stage2.bin ends.

dd if=stage2.bin of=disk.img bs=512 seek=18 conv=notrunc

此示例与上一个示例类似,但在写入之前跳过了 9216 个字节 (512*18)stage2.bin


如果你有一张连接到 Linux 系统的软盘(和 root 访问权限),你可以用类似的东西编写引导加载程序

dd if=bootload.bin of=/dev/fd0 

where /dev/fd0是软盘的设备。/dev/fd0通常是软盘 A(如果有)并且/dev/fd1是软盘 B(如果有)。


Windows 版DD

如果您在 Microsoft Windows 上运行,则有一个版本DD实用程序可用here http://www.chrysocome.net/dd。最新下载的是dd-0.6beta3.zip http://www.chrysocome.net/downloads/dd-0.6beta3.zip并且是最低推荐版本。它具有一些旧产品所没有的功能。只需打开 zip 文件并将其解压到 Windows 路径上的某个位置即可。

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

如何将 bin 文件(512 字节)写入软盘的第一个扇区(扇区 0)? 的相关文章

  • 为什么 godbolt 生成的 asm 输出与我在 Visual Studio 中的实际 asm 代码不同?

    这是生成的代码godbolt https godbolt org z 1F1t6Z 以下是 Visual Studio 在我的 main asm 文件上生成的相同代码 通过 汇编器输出 字段下的 项目 gt C C gt 输出文件 gt 使
  • 什么是微编码指令?

    我看过很多参考微编码指令的文献 这些是什么以及为什么使用它们 CPU 读取机器代码并将其解码为内部控制信号 将正确的数据发送到正确的执行单元 大多数指令映射到一个内部操作 并且可以直接解码 例如 在 x86 上 add eax edx只是将
  • 内联汇编 - cdecl 和准备堆栈

    我最近一直在尝试通过使用缓冲区和不同汇编运算符的原始十六进制等效项来实现 C 中的动态函数 为了说明一个简单的跳转 byte buffer new buffer 5 buffer 0xE9 Hex for jump uint buffer
  • NOP 雪橇如何工作?

    我找不到回答这个问题的好来源 我知道 nop sled 是一种用于规避缓冲区溢出攻击中堆栈随机化的技术 但我无法理解它是如何工作的 有什么简单的例子可以说明这种方法 128 字节 nop sled 等术语是什么意思 有些攻击包括使程序跳转到
  • 在 DLL 中,函数表的结构如何?

    我一直在研究不明确支持我的操作系统的设备库的实现 特别是 我有一个反汇编的 DLL 以及大量的支持源代码 现在 功能表 导出表是如何构造的 我的理解是 第一个结构 data部分是 RVA 表 接下来是通过索引链接到第一个地址表的字符串表 这
  • x86 实模式下的段大小

    我对实模式下段的大小有一个疑问 因为它们不能超过 64K 但可以小于那个 http support microsoft com kb 120069 我的问题是这些段大小和基地址是如何初始化的 就像保护模式下有 GDT 和 LDT 一样 实模
  • 分配内存空间的宏

    我需要让一个汇编程序员来计算帕斯卡三角形 https en wikipedia org wiki Pascal 27s triangle 这样帕斯卡三角形的每一行都与其他行分开存储在内存中 我想做一个 但我不知道如何使用宏在汇编中做到这一点
  • 现代 x86 硬件不能将单个字节存储到内存中吗?

    说到 C 的并发内存模型 Stroustrup 的C 编程语言 第 4 版 第 1 节 41 2 1 说 就像大多数现代硬件一样 机器无法加载或存储小于单词的任何内容 然而 我的 x86 处理器已经有几年的历史了 它可以并且确实存储小于单词
  • arm-thumb指令集的blx指令如何支持4MB范围

    读自https www keil com support man docs armasm armasm dom1361289866046 htm https www keil com support man docs armasm arma
  • MASM 字符串反转

    好吧 我正在讨论这个问题 可能是一个非常复杂的解决方案 但这是我脑海中浮现的第一件事 我需要编写一个汇编语言程序来反转 源 字符串 而不使用 目标 字符串 临时变量 这是我的尝试 INCLUDE Irvine32 inc data sour
  • 如何调试 iOS 应用程序在启动时崩溃,仅在程序集文件中设置断点

    我遇到了当前正在开发的应用程序的问题 问题是应用程序在启动时在后台运行一段时间后崩溃 并且仅在这种情况下 在应用程序被杀死时启动应用程序不会导致调试器或手机崩溃 无论是否进行调试 在后台启动应用程序大约 5 10 分钟都不会导致崩溃 在后台
  • 装配中出现奇怪的字符?

    我写了以下代码 386 model small stack 100h data text db Paper 0 code start lea dx text mov ah 9h int 21h mov ah 4ch int 21h end
  • 编写 AMD64 SysV 程序集时使用哪些寄存器作为临时寄存器?

    我正在使用实现一个功能cpuid根据 AMD64 SysV ABI 进行组装 我需要在函数本身中使用 2 个临时寄存器 第一个用于累积返回值 第二个用作计数器 我的功能目前如下所示 zero argument function some c
  • 破坏/分解函数的函数

    我以前有过 here https stackoverflow com questions 4920610 c class function in assembly 已经表明 C 函数不容易用汇编表示 现在我有兴趣以一种或另一种方式阅读它们
  • 什么时候汇编比C更快? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的
  • 即使我确实为变量设置了初始值,数据段也没有被初始化

    我已经编写了一个代码 该代码应该生成某种数字列表 但是即使我为它们分配了初始值 我的数据段变量也没有被初始化 This is how DS 0000 looks when I run it 这是我的代码 但数据段只保留垃圾值 MODEL s
  • 在 x86 程序集中将整数打印到控制台

    当我在 16 位汇编中添加两个值时 将结果打印到控制台的最佳方法是什么 目前我有这个代码 CODE START mov ax 1 put 1 into ax add ax 2 add 2 to ax current value mov ah
  • 取消的分支与常规分支有何不同?

    特别是对于 SPARC Assembly 取消的分支与常规分支有何不同 我一直认为 当我需要填充分支指令的 nop 延迟槽时 需要取消分支指令 但是 我认为我在这一部分上是不正确的 因为您可以在不取消分支的情况下填充 nop 如果不采用分支
  • NASM 轮班操作员

    您将如何在寄存器上进行 NASM 中的位移位 我读了手册 它似乎只提到了这些操作员 gt gt lt lt 当我尝试使用它们时 NASM 抱怨移位运算符处理标量值 您能解释什么是标量值并举例说明如何使用 gt gt and lt lt 另外
  • 为什么 GCC 不将 a*a*a*a*a*a 优化为 (a*a*a)*(a*a*a)?

    我正在对科学应用程序进行一些数值优化 我注意到的一件事是 GCC 会优化调用pow a 2 通过将其编译成a a 但是调用pow a 6 没有优化 实际会调用库函数pow 这大大降低了性能 相比之下 英特尔 C 编译器 http en wi

随机推荐

  • 出于单元测试目的覆盖对象属性

    我正在使用 Jest 在 Node js 应用程序上执行单元测试 其中代码源是用 TypeScript 编写的 然后编译为 JavaScript 在我希望测试的一个类中 导入了一个外部模块并使用了该模块中的方法 我想模拟对此方法的调用 以便
  • 区域未传递给 ASP.net Core 中的 Url.Action()

    以下代码在正常的 ASP net MVC 中工作 Url Action actionName controllerName new Area areaName 但它在 ASP net Core 中运行得不太好 区域被识别为查询字符串参数 我
  • 相同值零算法如何工作?

    我正在浏览 Javascript info 中的地图章节 其中有一个关于 SameValueZero 算法的链接 有人可以用简单的语言解释一下该算法是如何工作的吗 我尝试通过链接但找不到任何内容 See the 规格 https www e
  • 如果浏览器是 ie9,则执行某些 javascript

    我想在浏览器低于IE9的情况下执行jQuery中的某些代码 是的 我已经知道了 但我想要的是检查脚本标签内的这个条件并使用 jQuery document ready 您可以通过以下类别定位较旧的 Internet Explorer 版本
  • 如何拆分我的代码的解决方案?

    当您向我的代码提出问题时 它会告诉您您的问题 但我无法更改它 因此它有多种解决方案 它总是为所有不同的问题提供相同的解决方案 我要问的是如何为正确的问题提供正确的解决方案 而不是所有问题都只导致一个解决方案 其中显示 print 您问题的解
  • 在angularjs中使用debounce延迟代码

    我必须在 AngularJS 中编写电子邮件验证功能 当用户使用电子邮件 ID 完成编辑后 我想在 2 秒后发出发布请求 AngularJS 中有没有为此预先定义的方法 fiddle http jsfiddle net Qdk5M 1944
  • 将句子每行一个单词分开

    是否可以使用 CSS 将句子分成每行一个单词 Input div Hello world foo bar div 渲染输出 Hello world foo bar 将宽度设置为例如1px是不希望的 你必须使用display table ca
  • 对于导航堆栈的根视图控制器,isMovingToParentViewController 总是返回 FALSE?

    确定导航堆栈的根视图 顶级 控制器是由于最初呈现还是未被发现而出现的正确方法是什么 iOS 文档建议在 viewWill DidAppear 中使用 isMovingToParentViewController 来做出决定 这适用于推送到堆
  • Django-rest-framework 与 django OAuth 2.0 给出身份验证错误

    我已将 django rest framework 与 django oauth toolkit 集成 它给了我 detail Authentication credentials were not provided 使用未经身份验证的 A
  • AspectJ EDT-Checker 代码问题

    我目前正在使用 Alexander Potochkin 的 AspectJEDT 检查器代码 http weblogs java net blog alexfromsun archive 2006 02 debugging swing ht
  • 在没有 GUI 的服务器上运行 Smalltalk?

    我有一个相当明显的问题 我想在生产服务器上运行 Smalltalk 而不使用图形界面 VW 或 Pharo 甚至 Squeak 可能实现这一点吗 我有一个没有 X 的 VPS 托管 并且希望在 Smalltalk 上运行一些网站 同时使用成
  • emberjs 如何禁用 Ember.Select?

    我有一个与这个问题类似的问题 Emberjs 禁用和启用 TextField https stackoverflow com questions 10523780 emberjs disable and enable textfield 所
  • 如何安全地为 Perl 5.8.9 编译 Perl 5.12 模块?

    我想在我的 Perl 5 8 9 中安装 File Fetch 它是 Perl 5 12 中的核心模块 一般来说 我想在回溯的 Perl 中编译和安装未来的模块 因为我无法升级我的 Perl 所以我下载了该模块及其依赖项 遵循依赖关系树是相
  • 在 django 中建立一对多关系

    我正在尝试在 django 中建立一对多关系 在我的模型中 我有一个 Person 类和一个 Group 类 我想要建立的关系是一个 Group 内部可以有 N 个人 并且一个 Group 不能在没有至少一个人的情况下存在 在 MER 图中
  • 将 Cython 中的 numpy 数组传递给需要动态分配数组的 C 函数

    我有一些具有以下声明的 C 代码 int myfunc int m int n const double a double b double c So a是一个常量二维数组 b是一个二维数组 并且c是一个一维数组 全部动态分配 b and
  • 抛出 VS 重新抛出:结果相同吗?

    参考网上的很多文档 特别是关于SO的文档 例如 在 C 中重新引发异常的正确方法是什么 https stackoverflow com questions 178456 what is the proper way to re throw
  • 使用剃刀时关闭WebFormViewEngine?

    我下载了Glimpse http www getglimpse com 今天早上尝试一下 当我单击 视图 选项卡时注意到这一点 它检查所有加载的视图引擎 我发现在哪里RazorViewEngine在 web config 中指定 但我找不到
  • 如何在收到 fetch POST 请求的响应后将用户重定向到页面?

    我正在为一个 Web 应用程序编写代码 该应用程序使用 javascript 的 fetch api 向 node js 服务器发送 POST 请求 成功请求后 服务器会进行重定向响应 该重定向 URL 将在 fetch api 响应正文中
  • 谷歌智能锁与凭证管理 API

    我想为我的网络应用程序实现无摩擦登录过程 经过一番搜索 我发现有两种解决方案 谷歌智能锁 https developers google com identity one tap web get started 凭证管理API https
  • 如何将 bin 文件(512 字节)写入软盘的第一个扇区(扇区 0)?

    如何将 bin 文件写入软盘 虚拟软盘 软盘映像的第一个扇区 我正在尝试启动一个简单的 512 字节引导加载程序 到处都显示 512 字节 的大小 所以我应该已经很好了 附加信息 引导加载程序仅显示一个字符串 我正在学习simple集会 有