1.下载qemu:

https://www.cnblogs.com/sea-stream/p/10849382.html

2.制作软盘镜像

使用010editor,新建文件

图2

另保存为cherryOS.img.

原理

我们现在在使用16进制手动编写一个软盘格式的文件。一个软盘的大小就是1474560字节,这也是为什么我们操作系统的大小要是1474560字节。BIOS读软盘第一个扇区时,磁盘内不同地方的内容有不同的含义,这里不仔细说明每一位的含义了。其大概意思为,软盘的格式为FAT12,软盘的名称为HELLOOS(这里并没有改成CherryOS,因为这不是最终的系统,这只是一次实验)

如果将计算机的开机设置为从软盘启动,计算机开机会驱动软盘的磁头0读其0柱面1扇区的内容到内存0x7c00~ 0x7dff处,并检查扇区最后两2字节内容,如果为55AAH,则从0x7c00开始执行这段程序。

如果将一个好的软盘的磁头0对应的0柱面1扇区内含有一段(让显存)显示“Hello world”的机器指令,且将扇区最后2个字节的内容为55AAH。设置计算机开机时从软盘启动后就能够显示“Hello World”。

这就是这一段代码的基本原理.

可以直接下载:

https://blog-1253353217.cos.ap-chengdu.myqcloud.com/blog10%20chrryosday1/cherryOS.img

使用010editor,可以打开这个文件。

3.打开命令行,进入到img路径,运行命令

qemu-system-i386 -hdd cherryOS.img

可以看到如下显示

参考:

https://www.jianshu.com/p/ba6a32d68ed5

自制操作系统-使用16进制文件显示 hello world的更多相关文章

  1. C/C++ 读取16进制文件

    1.为什么有这种需求 因为有些情况需要避免出现乱码.不管什么编码都是二进制的,这样表示为16进制就可以啦. 2.如何读取16进制文件 最近编程用这一问题,网上查了一下,感觉还是自己写吧. 16进制数据 ...

  2. 使用vim修改和查看16进制文件

    使用前的准备工作,如果没有安装,使用命令安装: pacman -S vim 使用vim的十六进制功能查看和编辑文本文件,创建测试文件,使用命令如下: vim test.txt 进入“插入”模式,使用命 ...

  3. c# 关于10进制和16进制转换以及显示

    直接举例说明: int i = 15;//一个10进制数 string txt = Convert.ToString(i,16);//将上面10进制以16进制形式显示为f string s = &qu ...

  4. 怎么用Python Flask模板jinja2在网页上打印显示16进制数?

    问题:Python列表(或者字典等)数据本身是10进制,现在需要以16进制输出显示在网页上 解决: Python Flask框架中 模板jinja2的If 表达式和过滤器 假设我有一个字典index, ...

  5. vim编辑16进制

    你可以在vim中可以把文件转换为16进制来显示: :%!xxd 解释:把所有的行(%)用本地(!)的xxd程序打开. xxd本是linux下一个显示.编辑.转换二进制的命令. 返回正常显示: :%!x ...

  6. [原创]K8飞刀20160613 Plesk密码 & 注册表16进制转换 & Html实体解密

    K8飞刀  by K8拉登哥哥@[K8搞基大队]博客: http://qqhack8.blog.163.com 简介: K8飞刀是一款多功能的安全测试工具. Hacker Swiss Army Kni ...

  7. linux以16进制查看文件

    vim 先用vim -b data 以2进制打开文件,然后用xxd工具转化,在vim的命令行模式下: :%!xxd        --将当前文本转化为16进制格式 :%!xxd -r    --将16 ...

  8. JS实现——Base64编码解码,带16进制显示

    在网上找了个JS实现的Base64编码转换,所以就想自己研究下,界面如下: 将代码以BASE64方式加密.解密 请输入要进行编码或解码的字符: 编码结果以ASCII码16进制显示 解码结果以ASCII ...

  9. pyserial 16进制显示与发送

    pyserial 16进制显示与发送 http://www.centoscn.com/python/2013/0817/1320.html 十六进制显示的实质是把接收到的字符诸葛转换成其对应的ASCI ...

随机推荐

  1. hdu 2544 Dijstra模板题

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  2. 16-MySQL DBA笔记-调优基础理论和工具

    第五部分 性能调优与架构篇 本篇将为读者介绍性能调优的一些背景知识和理论,然后介绍一些工具的运用,最后介绍从应用程序到操作系统.到数据库.到存储各个环节的优化. 性能调优是一个高度专业的领域,它需要一 ...

  3. ThinkPad T420i 上 Ubuntu 12.04 实现指纹识别登录

    ThinkPad T420i 上 Ubuntu 12.04 实现指纹识别登录 # add ppa add-apt-repository ppa:fingerprint/fprint # update ...

  4. 学习笔记-Rabin-Karp哈希

    在数学一本通上看过这两人名字,现在又出现了... 思想: 用一个整数表示一个字符串 \(w_{str}\)=(\(a_0\) \(p^{n-1}\)+\(a_1\) \(p^{n-2}\)+...+\ ...

  5. Keras 笔记

    1. 从 meta 模型恢复graph,   修改node  并保存 from __future__ import absolute_import from __future__ import div ...

  6. Linux学习笔记:split切分文件并按规律命名及添加拓展名

    基础知识 功能:使用 shell 的 split 可以将一个大文件分割成很多个小文件,有时文件太大处理起来不方便就需要使用到了. 在默认情况下将按照每1000行切割成一个小文件. 语法: split ...

  7. el-select 可选择可输入

    <el-select v-model="saveWardForm.wardCode" placeholder="" filterable @blur=&q ...

  8. 台式机电脑u盘启动识别不到U盘设置

    U盘作为一个引导盘,在装机过程中显得十分的方便,有时候我们可以将U盘做成一个PE启动盘,有时我们也可以直接将U盘做成一个操作系统光盘的镜像. 但是有时候我们辛辛苦苦将U盘做成了引导盘了,关机---&g ...

  9. Python(phone)模块获取手机号归属地、区号、运营商等

    Python(phone)模块获取手机号归属地.区号.运营商等 一.我使用的是python3,可以自行搜索下载 二.安装phone模块, pip install phone 三.测试代码如下: fro ...

  10. Road to Cinema(贪心+二分)

    https://www.cnblogs.com/flipped/p/6083973.html       原博客转载 http://codeforces.com/group/1EzrFFyOc0/co ...