首页 > 其他分享 >《30天自制操作系统笔记》---第一天

《30天自制操作系统笔记》---第一天

时间:2023-04-01 22:55:21浏览次数:41  
标签:word 操作系统 启动 二进制 30 扇区 --- 字节

第一天

第一个实验:用二进制写一个显示helloworld的“操作系统”

使用工具:
1、HxD-二进制编辑器
2、qumu模拟器

下载了HxD – 二进制编辑器
编辑好了书上的二进制程序
helloos0.img

然后按照书上写了bat脚本。
Install脚本:用来制作系统启动盘
Run脚本,用来启动qumu模拟器运行。

不过其中install脚本无法运行,可能是win10系统可能不太兼容。

第二个实验:通过汇编写一个显示helloworld的“操作系统”

使用工具:
nask.exe:NASM编译器改编的编译器,提高了优化能力,NASM用于编译适合操作系统的软件,而不适合用于编译操作系统

代码直接使用作者的helloos.nas,编译了汇编代码得到helloos.img

相关汇编指令:

DB:DB 指令是 “data byte” 的缩写,也就是往文件里直接写入 1 字节的指令。

RESB:RESB 指令是 “reserve byte” 的缩写,如果想要从现在的地址开始空出 10 个字节来,就可以写成 RESB 10

DW/DD:它们分别是 “data word” 和 “data double-word” 的缩写。 word 的意思是 “单词”,但在计算机汇编语言的世界里,word 指的是 “16 位” 的意思,也就是 2 个字节。“double-word” 是 “32 位 “的意思,也就是 4 个字节。
; 注释命令

相关概念(解释见书):

FAT12格式
启动区
IPL:initial program loader
启动(boot)

部分学习知识:
软盘的第一个扇区被称为启动区,512字节就是一个扇区。
计算机会检查第一个扇区的最后两个字节,如果最后两个字节不是0x55 AA,计算机会认为这张软盘上没有所需的启动程序。
由于启动区太小,放不下操作系统,所以一般放的是加载操作系统的程序放在启动区中。所以也称启动区为IPL。不过启动区名称要是任意8字节字符串。

总结:

第一天直接用IPL执行了显示hello world程序(先后用二进制和汇编写的)。

标签:word,操作系统,启动,二进制,30,扇区,---,字节
From: https://www.cnblogs.com/hy227/p/17279632.html

相关文章

  • 202031607128-张政文 实验一 软件工程准备
    1、项目和内容简介项目内容班级博客链接2023年春软件工程(2020级计算机科学与技术)(西北师范大学-计算机科学与工程学院)本次作业要求链接实验一软件工程准备我的课程学习目标注册博客园和Github账号,学习使用博客园,了解Github的基本操作。本次作业在哪些......
  • 通过 docker-compose 快速部署 Hadoop 集群详细教程
    目录一、概述二、安装docker和docker-compose1)安装docker2)安装docker-compose三、docker-composedeploy1)设置副本数2)资源隔离四、docker-composenetwork五、docker-compose项目六、Hadoop部署(非高可用)1)安装JDK2)下载hadoop相关的软件3)构建镜像Dockerfile4)配置1、Hadoo......
  • 02-依赖管理和自动配置
    依赖管理什么是依赖管理spring-boot-starter-parent还有父项目,声明了开发中常用的依赖的版本号并且进行自动版本仲裁,即如果程序员没有指定某个依赖jar的版本,则以父项目指定的版本为准修改自动仲裁/默认版本号e.g.将SpringBootmysql驱动修改成5.1.49starte......
  • 2023-04-01 图论问题建模和floodfill
    图论问题建模和floodfillfloodfill(洪泛)实际就是图的遍历1图论问题例子:判断二分图题目来源:LeetCode785is-graph-bipartite:,判断二分图,因为题目中已经给出了邻接表,相当于已经给出了Graph,所以直接用二分图的核心算法即可,参考DFS实现二分图检测实现代码2图的建模和二......
  • 202031607230-王格 实验一 软件工程准备--构建之法与博客首秀
    实验一软件工程准备项目内容班级博客链接2023年春软件工程本次作业要求链接实验一软件工程准备我的课程学习目标1.学习博客园软件开发者学习社区使用技巧和经验。2.了解Github工具的基本操作3.阅读《现代软件工程—构建之法》,深入了解什么是软件工程......
  • 41、K8S-网络机制之Flannel
    1、网络基础1.1、Pod接入网络的具体实现1.1.1、虚拟网桥虚拟网桥:brdige,用纯软件的方式实现一个虚拟网络,用一个虚拟网卡接入到我们虚拟网桥上去。这样就能保证每一个容器和每一个pod都能有一个专用的网络接口,从而实现每一主机组件有网络接口。每一对网卡一半留在pod之......
  • docker笔记-安装、操作和Registry
    注意事项强烈建议docker宿主机关闭firewalld,改用iptables1docker安装1.1离线安装下载Docker二进制文件(https://download.docker.com/linux/static/stable/x86_64/)tarzxfdocker-xxxx-ce.tgzcpdocker/*/usr/bin/dockerd&验证dockerinfo注册成服务vi/usr/l......
  • Quine-McCluskey算法简介及其C++代码实现
    AlgorithmListallminterms(anddon'tcareterms)Stepbystepmergingonelayeratatime(notethatonlytwominimumtermswithadistanceof1canbemerged),andpayattentiontoremovingduplicatesFindtheessentialprimeimplicationthrough......
  • 使用mybatis-plus方法自动生成代码(1)
    首先,在项目的pom.xml文件中添加如下依赖:<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.4.3</version></dependency><dependency><groupId&......
  • OpenGL Mac开发-如何使用imgui(1.89.4)插件进行调试
    为了调试我们的OpenGLDemo,可以尝试使用一个成熟的开源GUI插件imgui。1,首先进入imgui在github上的地址。在Release中下载最近的版本,可以得到一个Zip压缩包。现在是2023年的4月1日,我下载到的版本是1.89.4,与Cherno的OpenGL教程中的代码略微有些区别。如果你看的是Cherno的教程,也......