自己动手写操作系统在线阅读_如何理解写作是一个整体系统

自己动手写操作系统在线阅读_如何理解写作是一个整体系统最近开始看《自己动手写操作系统》,虽然很早以前就读过一点点,但一直没有机会动手实践。本着光说不练假把式的原则,今天动手实践了开头的一部分。(说得这么正经其实你就是看了一点点吧!囧)废话不多说,在这里做一个小小的总结。实验环境:操作系统:win7旗舰版64位 汇编编译器:NASM 2.12.02虚拟机:VirtualPC_2007软盘/虚拟软盘写引导扇区工具:Flopp

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

最近开始看《自己动手写操作系统》,虽然很早以前就读过一点点,但一直没有机会动手实践。本着光说不练假把式的原则,

今天动手实践了开头的一部分。(说得这么正经其实你就是看了一点点吧!囧)废话不多说,在这里做一个小小的总结。

实验环境:

操作系统:win7旗舰版64位 

汇编编译器:NASM  2.12.02

虚拟机:VirtualPC_2007

软盘/虚拟软盘 写引导扇区工具:FloppyWriter.exe

步骤

  • 抄袭(这个这个)了书中的汇编代码,然后用NASM编译,生成boot.bin文件。
  • 将boot.bin写入软盘映像文件中,当然这里是写入指定的位置,具体来说就是对应软盘的第一个扇区。
  • 虚拟机中用设置用软盘启动,启动文件当然设置为我们上面做好的启动软盘映像啦。
  • 启动虚拟机,然后,bingo!

问题

如何将boot.bin写入到软盘映像中正确的位置(引导扇区)。

为了印证随后的确将boot.bin写入了正确的位置,先查看生成的boot.bin的内容,用任意二进制查看软件均可。我用的是BinaryViewer.可以看到其中的内容为:

自己动手写操作系统在线阅读_如何理解写作是一个整体系统

用UltraISO生成软盘映像,然后尝试用UltraISO将boot.bin写入其中,我的步骤如下(勿喷,小生对UltraISO不是特别熟悉):

自己动手写操作系统在线阅读_如何理解写作是一个整体系统

操作后的软盘映像文件内容为:

自己动手写操作系统在线阅读_如何理解写作是一个整体系统

好吧,确实写入了,但是并没有对应软盘的第一个扇区,o(╯□╰)o,我不太明白。

无奈,利用作者提供的小工具FloppyWriter.exe将boot.bin写入UltraISO软盘映像文件,写入成功。写引导扇区后的软盘内容如下:

自己动手写操作系统在线阅读_如何理解写作是一个整体系统

可以看到成功写入了boot.bin,并确实在第一个扇区。

虚拟机中设置此软盘映像启动。启动失败。(o(╯□╰)o)

好吧,别瞎折腾了!

还是按照书中的步骤,用VirtualPC的软盘制作向导生成软盘印象文件,然后将boot.bin写入其中,内容如下:

自己动手写操作系统在线阅读_如何理解写作是一个整体系统

显示预期的字符,成功。

自己动手写操作系统在线阅读_如何理解写作是一个整体系统

对于为什么不能直接用UltraISO生成的软盘启动,还是有些困惑,希望能得到解答。可能VirtualPC_2007对软盘映像文件的确有特殊的格式要求。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179216.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python基础(9)增强型赋值与使用普通赋值的区别

    python基础(9)增强型赋值与使用普通赋值的区别前言增强型赋值语句是经常被使用到的,因为从各种学习渠道中,我们能够得知i+=1的效率往往要比i=i+1更高一些(这里以+=为例,实际上增强型赋值语句不仅限于此)。所以我们会乐此不

    2022年7月28日
  • XMLHttpRequest对象的status属性状态吗

    在做异步操作的时候,我们通常需要判断返回的状态码来判断服务器返回的数据是否正常,下面是常见的一些状态码和对应的含义。状态码200服务器正常处理了请求并响应404请求的页面(资源)没有找到403没有权限访问请求的页面(资源)405页面(资源)不接收该请求方式(比如用get请求一个只支持doPost方法的servlet)

    2022年2月24日
  • html中去除下划线,下划线怎么取消?「建议收藏」

    html中去除下划线,下划线怎么取消?「建议收藏」下划线怎么取消??本文介绍word文档中下划线和html中文字下划线取消的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。HTML网页中下划线怎么取消?在HTML网页中我们经常会使用到超链接来实现页面的跳转,我们在HTML网页中添加超链接时默认是有下划线的,有时我们不想要下换线该如何去掉下划线呢?可以用css中text-decoration:none来去掉超链接的下划线。示…

    2022年5月7日
  • [050] 微信公众平台开发入门视频教程已发布

    [050] 微信公众平台开发入门视频教程已发布2014年4月26日晚8点,我在CSDN社区在线培训课堂讲解了微信公众平台开发入门的相关知识,受到广大网友的一致好评,在此非常感谢大家的支持!课程结束后,很多网友表示由于报名人数限制、临时有事等原因,未能参加,希望能够提供录制视频的观看地址。视频教程的主要内容包括: 1、移动APP发展趋势(NativeAPP、WebAPP、LightAPP) 2、微信公众平台基础知识(服务号/订阅号、公众账

    2022年6月5日
  • 比特币p2p协议_协议栈p2p

    比特币p2p协议_协议栈p2p比特币网络节点具有所有四个功能(理论上的很多来自《精通比特币》):钱包:用户钱包也可以作为全节点的一部分(桌面比特币客户端中比较常见);当前,越来越多的用户钱包都是SPV节点(诸如智能手机)矿工:挖矿节点通过运行在特殊硬件设备上的工作量证明(proof-of-work)算法,以相互竞争的方式创建新的区块,一些挖矿节点同时也是全节点,保有区块链的完整拷贝;还有一些参与矿池挖矿的节点是轻量级节…

    2022年8月30日
  • Springboot+netty实现Web聊天室

    Springboot+netty实现Web聊天室Web聊天室的实现一、项目的创建一、项目的创建新建Spring项目:选择JDK版本:选择SpringWeb:项目名称和位置的设置:

    2022年6月22日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号