重拾OS的实现
好久没看OS实现了- -。感觉最近过的乱七八糟的。最为一名学渣,苟活于学霸之间实在是很辛苦啊。不过还是感觉要坚持下去比较好,决定每天学一点,写点感想。也算是通过这个平台逼迫一下自己。= =#。
今天回顾一下第一章的最小的操作系统。
首先比不可少的自然是代码。
org 07c00h
mov ax, cs
mov ds, ax
mov es, ax
call DispStr
jmp $
DispStr:
mov ax, BootMessage
mov bp, ax
mov cx,
mov ax, 01301h
mov bx, 000ch
mov dl,
int 10h
ret
BootMessage: db "Hello, OS world!"
times -($-$$) db
dw 0xaa55
使用nasm编译
nasm boot.asm -o boot.bin
使用dd命令写入
dd if = boot.bin of = boot1.img bs= count=
效果如图所示:

首先分析一下操作系统的启动过程,在打开电源后,BIOS开始进行开机自检。系统开始检查软盘(因为我是从软盘启动的,硬盘就是0磁道0柱面1扇区 )上的0面0磁道1扇区。如果是以0xAA55(如果该区域是一个数组,就可以看做array[510]=0x55,array[511]=0xAA)结束,就认为是一个引导扇区。对于本例子,由于运行在虚拟机环境,写到扇区操作是通过那个dd命令完成的。
BIOS发现了引导扇区后,执行org 07C00,将程序调入0000:7c00处执行。
关于
mov ax, cs
mov ds, ax
mov es, ax
call DispStr
jmp $
cs 是代码段寄存器,用ax作为一个单独的中转,把代码段寄存器的值赋予ds(数据段)以及es(附加数据段)。这是一个初始化动作。目的是为了让后面的数据操作能定位到正确的位置(这是由寄存器本身的特性决定的)。call Dispstr并循环。jmp $;停止在这一步,不断循环。
mov ax, BootMessage
mov bp, ax
mov cx,
mov ax, 01301h
mov bx, 000ch
mov dl,
int 10h
ret
这里主要就是一个中断调用的过程。即调用bios的int 10;中断显示字符。
到这里我有几个问题其实不太懂。①这段命令生成的代码只能在Bochs里面运行,无法在实体裸机上运行。②关于汇编,我不懂内部运行的具体过程。只懂语法以及使用。为什么这段程序可以作为引导区程序在所有的机器上运行?不同的硬件的机器指令难道不是不通用的吗?
但愿以后会搞懂。。。。。。。
重拾OS的实现的更多相关文章
- 【Java】 重拾Java入门
[概论与基本语法] 取这个标题,还是感觉有些大言不惭.之前大三的时候自学过一些基本的java知识,大概到了能独立写一个GUI出来的水平把,不过后来随着有了其他目标,就把这块放下了.之后常年没有用,早就 ...
- CSS魔法堂:重拾Border之——更广阔的遐想
前言 当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...
- CSS魔法堂:重拾Border之——不仅仅是圆角
前言 当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...
- CSS魔法堂:重拾Border之——图片作边框
前言 当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...
- CSS魔法堂:重拾Border之——解构Border
前言 当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...
- 重拾Blog
上个月是我入职现在的公司三周年的月份,所以又续订了五年的合同,最近有一些思考,也不知道这个五年能否还会一直在这个公司工作. 一切随缘吧. 闲适有毒,忙碌的时光总是过的很快,自从加入这个公司以来,日常的 ...
- [linux]重拾linux
起因 因为想重拾起linux,同时需要用docker起几个镜像,用来学习网络知识.本来想直接去阿里云上买,后来一想自己机器上,起一个linux是个不错的选择,毕竟不花钱! 还可以用来做本地测试,学习使 ...
- 重拾qt
最近公司又接了一个煤矿的项目,要写个小程序摘取数据,我是公司唯一c++程序员,本来搞ios搞好好的,现在又得重拾半年没摸得qt了.呵呵...呵呵呵. 这里只记录这次小程序的一些小的总结吧.. 1.中文 ...
- 重拾linux
重拾linux 起因 因为想重拾起linux,同时需要用docker起几个镜像,用来学习网络知识.本来想直接去阿里云上买,后来一想自己机器上,起一个linux是个不错的选择,毕竟不花钱! 还可以用来做 ...
随机推荐
- Windows 2008 R2 安装 Windows phone 7 开发环境
安装环境:1.Windows server 2008 R22.Visual Studio 2010 SP1 旗舰版 1.下载 WP7 SDK 离线安装包.(话说要选择与 VS2010 相同语言的版本) ...
- python中string模块
>>> import string >>> string.ascii_letters 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKL ...
- Apache 配置 WebSocket 协议
本文使用 http proxy 方式 实现 apache 支持 WebSocket 请求(JK 使用的 ajp 协议不能支持websocket) 通过 apache 访问 后端 tomcat上的 w ...
- MSSQL日志传送出现“LSN 太晚,无法应用到数据库”
一个月之前配置了日志传送的数据库,在今天早上收到作业警报:"LSRestore_ServerName_Databasename"运行失败,到历史记录中查看,错误信息如下 消息 20 ...
- COM中需要调用AddRef和Release的10条规律
COM中需要调用AddRef和Release的10条规律
- 关于C转汇编(转自网上)
②在KILE软件的菜单中,选择Project-->Options for Target 'Target 1',-->Listing选择Assembly code就能生产*.LST文件.在 ...
- JetBrains激活
https://www.imsxm.com/jetbrains-license-server/ 已经累计为大家激活1360577次 :) JetBrains授权服务器:http://idea.imsx ...
- unity5.0新功能
原作者 只待苍霞 章节1: 先来两个最关心的新功能, 第一章先讲PBS, 第二章讲光影GI.说到PBS, 首先应该想到的是Unity自带的两个新的Shader, 分别是Standard以及Standa ...
- CSS的两大重点
一.属性:通过属性的复杂叠加才能做出漂亮的网页 二.选择器:通过选择器找到对应的标签设置样式,选择器的作用是:选择对应的标签,为之添加样式 1>标签选择器:根据标签签名找到标签 div{ ...
- ViewPager如下效果你研究过吗?
1:ViewPager实现欢迎页面动画效果 ViewPager实现欢迎页面动画滑动切换view效果,页面切换添加优美的动画, //主要代码实现 public void animateSecondScr ...