十分钟完成的操作系统
你相不相信,一个“操作系统”的代码可以只有不到20行?
Example 1. chapter1/a/boot.asm
1 org 07c00h ; 告诉编译器程序加载到7c00处
2 mov ax, cs
3 mov ds, ax
4 mov es, ax
5 call DispStr ; 调用显示字符串例程
6 jmp $ ; 无限循环
7 DispStr:
8 mov ax, BootMessage
9 mov bp, ax ; ES:BP = 串地址
10 mov cx, 16 ; CX = 串长度
11 mov ax, 01301h ; AH = 13, AL = 01h
12 mov bx, 000ch ; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)
13 mov dl, 0
14 int 10h ; 10h 号中断
15 ret
16 BootMessage: db ”Hello,␣OS␣world!”
17 times 510-($-$$) db 0 ; 填充剩下的空间,使生成的二进制代码恰好为512字节
1 8 dw 0xaa55 ; 结束标志
把这段代码用NASM 编译一下:
$ nasm boot.asm –o boot.bin
我们就得到了一个512 字节的boot.bin,让我们使用软盘绝对扇区读写工具将这个文件写到一张空白软盘的第一个扇区。在Linux 下可以这样做:
$ dd if=boot.bin of=/dev/fd0 bs=512 count=1
在Windows 下可以这样做:
$ rawrite2.exe -f boot.bin -d A
好了,你的第一个“操作系统”就已经完成了。这张软盘已经是一张引导盘了。
把它放到你的软驱中重新启动计算机,从软盘引导,你看到了什么?
计算机显示出你的字符串了!红色的“Hello, OS world!”,多么奇妙啊,你的“操作系统”在运行了!
如果使用虚拟机比如Bochs 的话(下文中将会有关于Bochs 的详细介绍),具体结果可以翻阅本书
这真的是太棒了,虽然你知道它有多么简陋,但是,毕竟你已经制作了一个可以引导的软盘了,而且所有工作都是你亲手独立完成的!
十分钟完成的操作系统相关推荐
- 虚拟局域网软件开源_玩转虚拟机,十分钟学会一台电脑安装3个操作系统
玩转虚拟机,十分钟学会一台电脑安装3个操作系统 本文目录 一.什么是虚拟机 1.普通虚拟机 2.Java虚拟机 二.虚拟机的作用 三.虚拟机的安装需求 四.常用的虚拟机软件 1.VMware虚拟机 2 ...
- python新手教程 从零开始-Python零基础从零开始学习Python十分钟快速入门
原标题:Python零基础从零开始学习Python十分钟快速入门 学习Python的,都知道Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python是一种动态解释型的 ...
- 十分钟搭建和使用ELK日志分析系统
十分钟搭建和使用ELK日志分析系统 为满足研发可视化查看测试环境日志的目的,准备采用EK+filebeat实现日志可视化(ElasticSearch+Kibana+Filebeat).题目为" ...
- 十分钟教你开发EOS智能合约
十分钟教你开发EOS智能合约 在CSDN.柏链道捷(PDJ Education).HelloEOS.中关村区块链产业联盟主办的「EOS入门及最新技术解读」专场沙龙上,柏链道捷(PDJ Educatio ...
- python十分钟教程_简洁的十分钟Python入门教程
[简介] Python是一种动态解释型的编程语言.Python可以在Windows.UNIX.MAC等多种操作系统上使用,也可以在Java..NET开发平台上使用. [特点] 1 Python使用C语 ...
- 最具戏剧性的分析诊断案例——十分钟锁定数据库性能“元凶”
昨天,正好有点空时间想看看书,结果,刚打开书,没看几个字儿,接到用户电话说:一个库有问题,希望能帮忙看下.因为我知道他们那边也有自己的专职DBA,于是问:没让人给看看吗?答:能找的人都找了,也调了好久 ...
- gdb好文章:GDB十分钟教程
(GUI调试器:insight和ddd) list(l) :其作用就是列出程序的源代码,默认每次显示10行. list 行号:将显示当前文件以"行号"为中心的前后10行代码,如:l ...
- “易语言.飞扬”十分钟入门教程(修订版1,update for EF1.1.0)
"易语言.飞扬"十分钟入门教程 (修订版1,update for EF1.1.0) 作者:liigo,2007.8.12 本文地址:http://blog.csdn.net/lii ...
- 自学python编程免费教程-Python十分钟入门 自学python基础教程送你参考
python十分钟入门.简介Python是一种动态解释型的编程语言.Python可以在Windows.UNIX.MAC等多种操作系统上使用,也可以在Java..NET开发平台上使用. 特点 1 Pyt ...
最新文章
- Android接口初了解
- LVS+keepalived 实现高可用与负载均衡实施方案
- C# .net中json字符串和对象之间的转化方法
- Android:打造“万能”Adapter与ViewHolder
- segment fault
- qt 试用 (3)配置编译源代码及调试
- vs2015无法打开包括文件:“winapifamily.h”
- 阿里五年晋升三次,这个程序员要聊聊他的选择
- java正则效率_【Java】Java-正则匹配-性能优化
- django开发 遇到的问题解决
- html静态页面实现微信分享思路
- ubuntu18.04 安装数据库
- Java去除富文本编辑器中的格式标签
- 免费视频文件生成视频二维码的方式详解
- Vijos 1523 贪吃的九头龙 【树形DP】
- python打印输出数组中的所有元素
- 基于深度学习的新闻摘要生成算法实现与详解(Encoder-Decoder框架模型)
- vscode遇到无法访问此网站问题的两种解决方法
- 现代物流仓储自动化实验系统
- 最短路径 floyd最小环 洛谷2738 篱笆回路 网上题解
热门文章
- 大数据之-Hadoop之HDFS_合并FsImage和Edits文件_之CheckPoint时间设置---大数据之hadoop工作笔记0072
- Mycat安全权限配置user_配置mycat用户只读数据---MyCat分布式数据库集群架构工作笔记0031
- Netty工作笔记0044---Netty案例源码分析
- SpringCloud工作笔记057---常用免费数据接口
- python built-in cache (don't reinvent the wheel)
- 150行java代码分析100篇英语六级阅读理解单词频率
- linux内核配置成qspi挂载,Zynq-Linux移植学习笔记之十-qspi驱动配置
- 怎么看电脑是不是linux系统,怎么查看自己的电脑系统是什么版本
- 腾讯云 mysql 密码_腾讯云mysql重新设置密码解决办法
- 计算机网络管理员高级技师证书,计算机网络管理员(高级技师)职业资格考核标准详细分析.doc...