首页 > 其他分享 >30dayOs_day01

30dayOs_day01

时间:2023-12-31 22:01:01浏览次数:36  
标签:字节 img day01 30dayOs 扇区 指令 软盘 软驱

tags: ["Os"]

今天拆箱后看着软驱和软盘感觉好激动,老古董欸~

把软盘放进软驱,软驱连接电脑,按照教程格式化硬盘,注意不要勾选快速格式化。

在运行!cons_9x.bat输入install时出了问题,作者的设计是在这里应该把映像文件写进软盘,然而tolset\z_tools\imgtol.com是16位程序,和64位版本的window不兼容,无法运行。

我默默看了自己刚买的两张软盘和一块软驱。软盘一时半会应该是没用了,还有软驱也是。不过可以留一张当纪念,另一张留着看有没有什么其他玩法。

接下来的思路本是用vm新建虚拟机,把映像文件img放进去,作者却在文章的下一页提到:
如果不想买软驱和软盘的话,我还准备了一个模拟器buling唉我真是个笨蛋

运行模拟器,终于hello world了

接下来的篇幅作者简单讲述了什么是 cpu 一块集成电路板,接收01信号,给出对应指令,输出相应结果

刚才是用二进制编辑器造出了img文件,作者又用汇编程序造了一个功能一样的img文件

编译这段汇编代码,得到一个一模一样的hellos.img文件,再输入run,得到和刚才一样“hello world”的结果

逐行看看这段汇编做了什么

DB 0xeb, 0x4e, 0x90, 0x48, 0x45, 0x4c, 0x4c, 0x4f

DB指令是“define byte"的缩写,表示写入一个字节的指令。一个字节的指令刚好就是后面的这串"0xeb, 0x4e, 0x90, 0x48, 0x45, 0x4c, 0x4c, 0x4f"。0xEB JMP 是一条跳转指令,后面的二个字节是偏移量。也就是说0xEB, 0x4E: 这可能是一条跳转指令,0xEB 表示跳转指令的操作码,而 0x4E 可能是跳转的相对偏移量。而0x90, 0x48, 0x45, 0x4C, 0x4C, 0x4F这些十六进制值对应于 ASCII 字符,表示字符串 "HELLO"。

DB 0x49, 0x50, 0x4c, 0x00, 0x02, 0x01, 0x01, 0x00

0x49: 对应 ASCII 字符 "I" 0x50: 对应 ASCII 字符 "P" 0x4C: 对应 ASCII 字符 "L"

和上面一行综合起来,说的是这个引导区的名字叫做"HELLOIPL",后面跟着的是引导区的配置(比如每个扇区大小、根目录的大小等等),学识尚浅,再往下就看不懂了。这里作者想让我们掌握的知识是DB指令和RESB指令。

RESB:是“reserve byte”的略写,如果想要从现在的地址开始空出10个字节来,就可以写成RESB
10,意思是我们预约了这10个字节,而且不仅仅是把指定的地址空出来,它还会在空出来的地址上自动填入0x00。

作者又用优化后的汇编代码写了一份一样的映射img文件


这里有几个新知识

  • 汇编里";"表示注释,类似c语言中的//

  • DW指令表示“define word",DD指令表示"ddefine double-world",它们都和DB是姐妹。"word"指16位,也就是2个字节,"double-word"是32位,也就是4个字节。

  • RESB 0x1fe-& ,这里的RESB上面说过了,是自动填充。$是目前的字节数,是一个动态的值。0x1fe-&的意思就是用0x1fe这个值减去$(现在的字节数),然后得到一个结果,填充这么多位的0x00。也就是说,可以动态地填充0,填到0x001fe为止。

  • 0x55和0xAA 为什么填充完末尾还要写入0x55和0xAA?计算机启动的时候,会从最初一个扇区读取设备,然后检查这个扇区的最后两个字节,即第511和512字节。如果最后两个字节是0x55和0xAA,那它就认为这个扇区的开头是启动程序,并开始执行这个程序,否则就会报一个不能启动的错误。至于为什么是0x55和0xAA,还得问问设计者。也就是说,到这里,我们已经来到了启动区的结尾。

  • 启动区 软盘的第一个扇区称为启动区,计算机读

    标签:字节,img,day01,30dayOs,扇区,指令,软盘,软驱
    From: https://www.cnblogs.com/liyishui2003/p/17938096

相关文章

  • day01 代码随想录算法训练营 27. 移除元素
    题目:27.移除元素感悟:用快慢指针。本题是要原地删除。而删除这个行为在真实的计算机的数组里,是覆盖。所以,就用两个指针,(人)一个跑的快,一个跑的慢。他们身上带了个对讲机。跑的快的那个人负责检测后面的数字符合要求不,比如,要不等于3的,遇到一个2,告诉跑的慢的说2符合要求。遇......
  • day01 代码随想录算法训练营 704. 二分查找
    题目:leetcode704.二分查找 感悟:困扰我多年的二分查找对于边界的判断,我终于理解了。难点:难点1:定边界rightright=len(nums)还是len(nums)-1 难点2:while循环whileleft<right还是left<=right 难点3:mid取值mid=right-1还是mid=right  结论:1.自己确定......
  • Day01-02英语名词解释
    Day01-02英语名词解释 解释(Interpret) 编译(Compile) SyntaxError,为“语法错误” console(控制台) terminatev.终止 variableprice变量Variableadj.可变的;可更改的 initiala.开始的,最初的Initialized初始化 "exception"通常指的是在程序运行过程中出现......
  • Day01练习常见的Dos命令
    练习常见的Dos命令#盘符切換切换到根目录査看当前目录下的所有文件切換目录前往上一级目录清理屏幕#盘符切換(跨盘操作,一步切换到D盘的QQ文档)切换到根目录(切换到D盘)盘符切換(切换到D盘的QQ文档)前往上一级目录査看当前目录下的......
  • Day01
    MarkDown学习标题*N+空格=n级标题(可到六级)字体文本(粗体:文本两端分别加两个*)文本(斜体:文本两端分别加一个*)文本(粗体+斜体:文本两端分别加三个*)文本(删除线:文本两端分别加两个~)引用欲买桂花同载酒,终不似,少年游。(>+空格)分割线(三个-或*)图片(英文!+[内为图片名]+()括......
  • linuxday01
    GNU计划的目标是创建一个完全自由的操作系统,也就是GNU操作系统。然而,GNU计划没有开发内核,而内核是操作系统的核心。因此,GNU操作系统的核心是Linux内核。Linux在服务器领域的应用是最强的Linux免费、稳定、高效centos7的安装网络连接的三种模式虚拟机克隆1.直接拷贝本地安......
  • day01
    Markdown学习标题二级标题三级标题四级标题 字体hello,world!hello,world!hello,world!hello,world!hello,world!引用选择12345分割线图片 超链接123列表abcabc 表格             ......
  • 百度API学习 | day01
     大作业:(2023.12.27日完成)各位同学可根据自身情况进行选择:    选项一:根据实验一、二、三完成如下任务:        任务一:基于Jfinal构建信息管理系统,要求包含用户管理,翻译业务模块管理,图片优化模块管理(占30%)。        任务二:要求不同用户登录后可进行文字翻译......
  • day01
    【一】下载Typora软件【1】下载官网Typora官方中文站(typoraio.cn)【2】破解(1)自己搜(2)直接用1.方法一下载资源到本地D:\Typora\resources文件夹下替换破解成功2.方法二下载资源到本地解压将文件复制到.\Typora(软件文件夹)里【二】markdo......
  • day01预习-基本语法
    typora-copy-images-to:media基本语法JavaScript的历史:​ 在95年以前,就有很多上网的用户了,当时的带宽只有28.8kb/s,用户要进行表单的验证时,点击提交按钮,直接就将数据发送到服务器了,受限于带宽的关系,浏览器和服务器的通信很慢,大概一次通信需要30s的时间。​ 这样,问题就出现......