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

一开始作者搞了一个装满二进制的文件,用binary editor来制作。该软件下载地址http://www.vcraft.jp/soft/bz.html

当然,在我看来,这些二进制没什么意义,因为根本无法阅读。

但作者是想让读者了解cpu其实就是解读二进制指令的。

直接附上第一天的汇编代码:

; hello-os
; TAB=4

; 以下は標準的なFAT12フォーマットフロッピーディスクのための記述

        DB        0xeb, 0x4e, 0x90
        DB        "HELLOIPL"        ; ブートセクタの名前を自由に書いてよい(8バイト)
        DW        512                ; 1セクタの大きさ(512にしなければいけない)
        DB        1                ; クラスタの大きさ(1セクタにしなければいけない)
        DW        1                ; FATがどこから始まるか(普通は1セクタ目からにする)
        DB        2                ; FATの個数(2にしなければいけない)
        DW        224                ; ルートディレクトリ領域の大きさ(普通は224エントリにする)
        DW        2880            ; このドライブの大きさ(2880セクタにしなければいけない)
        DB        0xf0            ; メディアのタイプ(0xf0にしなければいけない)
        DW        9                ; FAT領域の長さ(9セクタにしなければいけない)
        DW        18                ; 1トラックにいくつのセクタがあるか(18にしなければいけない)
        DW        2                ; ヘッドの数(2にしなければいけない)
        DD        0                ; パーティションを使ってないのでここは必ず0
        DD        2880            ; このドライブ大きさをもう一度書く
        DB        0,0,0x29        ; よくわからないけどこの値にしておくといいらしい
        DD        0xffffffff        ; たぶんボリュームシリアル番号
        DB        "HELLO-OS   "    ; ディスクの名前(11バイト)
        DB        "FAT12   "        ; フォーマットの名前(8バイト)
        RESB    18                ; とりあえず18バイトあけておく

; プログラム本体

        DB        0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c
        DB        0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a
        DB        0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09
        DB        0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb
        DB        0xee, 0xf4, 0xeb, 0xfd

; メッセージ部分

        DB        0x0a, 0x0a        ; 改行を2つ
        DB        "hello, world"
        DB        0x0a            ; 改行
        DB        0

        RESB    0x1fe-$            ; 0x001feまでを0x00で埋める命令

        DB        0x55, 0xaa

; 以下はブートセクタ以外の部分の記述

        DB        0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
        RESB    4600
        DB        0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
        RESB    1469432

无语的是,关键部分的代码还是db 0x。。这种形式。也就是说,本质上没什么区别,只是用rest xxxx这样的汇编语句循环复杂了之前那么多的0。

记录下一些比较有用的信息:

1软盘的第一个扇区为启动区。

2计算机读软盘是以512字节为单位来读写,所以一个扇区为512字节。

3一张软盘有1440KB,2880个扇区。

4第一个扇区为启动区,IPL。加载操作系统用。

5启动区的结束标志为:55AA

时间: 2024-11-29 06:02:21

《30天自制操作系统》第一天的相关文章

python基础知识第一节

一  计算机基本组成: CPU.内存.主板 计算机最底层是电子电路,只能识别两个数:0和1 二  Python概述: python是解释型语言.弱类型语言 现在热度排名第4 python1.0在1994年1月发布 python2.0在2000年12月16发布,近年来一直更新到2.7版本,14年11月,官方宣布将于2020年取消python2的更新. python3.0在08年12月3日发布,自此不断更新,正渐渐取代python2版本. 三  基础知识 : 第一个程序 在notepad++中建立f

python基础巩固第一篇

---恢复内容开始--- 对于基础不是特别好的我最近开始学习python,想重新认识python这门语言,也算对自己的以后的路,做个台阶和总结记录. (一)学一门语言开始都是从计算机基础开始学起,自己一开始就想,学语言为什么要学计算机基础,都后面自己也明白了,(一)语言是在哪里运行的---计算机.(二)比如中国人和外国人说话要沟通是不是要通过一个介质去翻译双方的意思从而理解,其实目的都是一样的,学习一门语言开始之前就是就要通过计算机去翻译python所表达的意思,计算机则只能识别0和1这两个语言

python 基础篇第一篇

本节内容 1.python介绍 2.发展史 3.python2和python3 4.安装 5.简单程序,hello world程序 6.变量 7.用户输入 8.模块初识 9..pyc是什么? 10.数据类型初识 11.数据运算 12.表达式if...else语句 13.表达式for循环 14.break and continue 15.表达式while 循环 一.python介绍 python 的创始人为吉多.范罗苏姆.吉多.范罗苏姆为打发1989年年圣诞节而开发的一个小的脚本解释程序.是ABC

<Python基础了解>第一天

编程分为两大类: 面向对象: 以指令为中心,由指令处理数据. 如何组织代码解决问题. 面向过程: 以数据为中心,所有的处理代码都围绕数据展开. 如何设计数据结构组织数据,并提供对此类数据所允许处理操作. platform 平台: >>> import platform >>> print platform.uname() ('Linux', 'web2', '2.6.32-431.el6.x86_64', '#1 SMP Fri Nov 22 03:15:09 UTC

Python 基础【第一篇】环境部署

一.Windows基础环境配置部署 1.1.下载python安装程序 下载地址:https://www.python.org/ftp/python/3.4.1/python-3.4.1.msi 1.2.运行 python-3.4.1.msi 1.3.这里可以选择安装路径(默认即可) 1.4.一路默认下一步 直到安装完毕 1.5.设置环境变量 1.5.1.我的电脑---->右键“属性”---->高级系统设置 1.5.2.环境变量 1.5.3找到系统变量中的“Path” 值 如果没有就添加,名称为

python基础学习第一天

本章目录: 1.1 python版本 1.2 python安装 1.3 python解释器 1.4 字符集 1.5 运算符 1.6 条件判断 1.7 脚本示例 1.1 python版本 python最新版本号是2.7.13,3.6.2 官方网址是https://www.python.org python目前最新版本是3.6.2,由创始人Guido van Rossum在1989年12月无聊时突发想起构思写的一个新的脚本解释器,目前linux Centos 6版本默认安装python版本为2.6,

Python基础学习——第一弹

高级语言-------->字节码---------->机器码 低级语言-------->机器码 性能:高级<低级 高级语言的自动垃圾处理机制,方便,开发效率高. php类:快速搭建网站,适用于写网页,有局限性. python/C/java:人工智能. python/java:既能写页面,又能写后台功能. Java执行效率高于python,Java能做的事,python都能做,并且开发效率更高. 数据库才是程序执行速度的元凶. python种类: Jpython IronPython

下载大数据实战课程第一季Python基础和网络爬虫数据分析

python语言近年来越来越被程序相关人员喜欢和使用,因为其不仅简单容易学习和掌握,而且还有丰富的第三方程序库和相应完善的管理工具:从命令行脚本程序到gui程序,从B/S到C/S,从图形技术到科学计算,软件开发到自动化测试,从云计算到虚拟化,所有这些领域都有python的身影:python已经深入到程序开发的各个领域,并且会越来越多的人学习和使用. 大数据实战课程第一季Python基础和网络爬虫数据分析,刚刚入手,转一注册文件,视频的确不错,可以先下载看看:链接:http://pan.baidu

Python学习基础篇第一篇——快速入门(适合初学者)

一.Python学习基础篇第一篇--(快速入门) 建议从Python2.7开始学习,Python2.7可以支持扩展大量的第三方类库,是目前比较成熟的版本 编写代码的软件推荐将python自带的IDLE和PyCharm集成IDE结合起来使用 1.1 Python命令行 Python命令行将以 >>> 开始,比如 >>>print 'Hello World!' 对于验证简单的命令可以在python自带的IDLE中完成  1.2 在Python自带的IDLE写一段小程序 在所

【Python基础教程第2版】——第一讲:基础知识

1.长字符串:(用三引号如'''或者"""来引起来) >>> print """This is a very log string.It continues here.And it's not over yet."Hello world!"""" This is a very log string.It continues here.And it's not over yet.&