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

转载于:https://www.cnblogs.com/sea-stream/p/10850130.html

自制操作系统-使用16进制文件显示 hello world相关推荐

  1. notepad++查看16进制文件

    notepad++软件在查看代码的时候很方便,但是想查看16进制格式的文件时,默认打开是乱码.下面就演示一下如何给notapad++安装HEX插件,安装好插件之后,就可以直接查看16进制文件了. He ...

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

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

  3. 汇编-输入8位二进制串并转换为16进制数显示到屏幕(利用8421转换)

    今天编写了一个 输入二进制串并转换为16进制数显示到屏幕 的汇编程序 在编写过程中遇到一些问题,并解决后,想把它与大家分享. 题目是这样的: 分析题目: 可得要求 输入 11111111 得到 00F ...

  4. DELPHI 内存流修改16进制文件, 文件太大时候OutofMemory的问题研究

    DELPHI 内存流修改16进制文件, 文件太大时候OutofMemory的问题研究 问题描述: 需要用内存流打开一个300M大小的文件, 替换文件中固定长度的16进制编码为另一条编码 原始思路 1. ...

  5. 用vi在linux下查看16进制文件

    在vi的命令状态下 : :%!xxd --将当前文本转换为16进制格式. :%!od --将当前文本转换为16进制格式. :%!xxd -c 12--将当前文本转换为16进制格式,并每行显示12个字节 ...

  6. 将图像转换为16进制文件

    在做图像处理时,有时需要将一张已有的图像写入到程序中.这时linux命令xxd可以完成这个需求. 注: win10可使用ubuntu子系统来使用linux命令,非常方便 xxd -i logo.bmp ...

  7. js ASCII字符串转16进制字符串显示

    // ASCII转HEX 显示     function convertToHexa(str){        const res = [];        const { length: len } ...

  8. PNG文件16进制详解

    详解PNG图片的16进制文件 1.概述 2.特性 3.文件结构 3.1.文件署名域 3.2.数据块 3.2.1.关键数据块 3.2.2辅助数据块 4.举例说明 ==前八字节分类表== ==关键数据块. ...

  9. 8位16进制频率计设计实验--VHDL

    一.实验目的 (1)学习并掌握Quartus II的使用方法 (2)学习简单时序电路的设计和硬件测试. (3)学习使用VHDL 语言方法进行逻辑设计输入 (4)学习设计8位16进制频率计,学习较复杂的 ...

最新文章

  1. 如何在linux下解压缩rar格式的文件压缩包
  2. typescript利用接口类型声明变量_TypeScript入门指南(基础篇)
  3. 利用Excel VBA SQL做特殊文件浏览器
  4. python条件语句代码例子_Python 炫技操作:条件语句的七种写法
  5. 企业微信应用权限签名api记录
  6. 如何在线向虚拟机中安装redis单机版的详细步骤
  7. SnagIt - 专业的截图工具
  8. 信号与系统 --- 傅里叶变换时/频对照表(个人学习笔记)
  9. 为什么正定矩阵等于转置_正定矩阵
  10. 晚上睡觉手机放床头对大脑会有伤害吗
  11. React Native 微博登陆
  12. 小程序自动定位当前位置
  13. PHP网站地图生成类
  14. Windows 查看端口是否已打开
  15. 如何卸载有密码保护的Symantec Endpoint Protection v11
  16. fastjson byte[]转json字符串
  17. EWM一个仓库号对应ERP多个PLANT的配置
  18. c语言中“函数的定义不可以嵌套,但函数的调用可以嵌套
  19. Web大学生网页作业成品 基于HTML+CSS+JavaScript (刘德华9页 )
  20. SAP BW: 小生长谈Delta - 2 (Update Mode)

热门文章

  1. 超详细!17 步全解四象限导图的使用方法
  2. js版星级评分 入门级 原生js实现
  3. 【C语言/C++】益智游戏开发:2048(源码详解)
  4. 2017丹东计算机成绩,丹东市2017年国民经济和社会发展统计公报
  5. 在华为工作十年的大佬手把手教你Charles抓包工具使用,还学不会你就完了!
  6. STM32软件架构设计
  7. 计算机搜索栏隐藏,win7系统电脑桌面搜索栏隐藏/关闭的详细技巧
  8. NodeJS 爬虫笔记一,熟悉爬虫相关模块
  9. 不入流的程序员只看不入流的书
  10. Autoware学习笔记waypoint_follower之twist_filter