Hello world -- OS

我找到了华科绍志远博士的相关代码,发现他依据MIT的JOS的boot.S 稍作改动。然后单独剥离出来,能够非常好玩~

资料下载地址:

http://download.csdn.net/detail/u011368821/8006465

原则上仅仅须要两个文件(boot.S mmu.h)就能够,可是我们这里还须要一些附带的虚拟器工具。以及makefile来做实验.

须要提示的就是地址0xb800是显存的开头地址 : )

MOVSB(MOVe String Byte)
即字符串传送指令。这条指令按字节传送数据。

通过SI和DI这两个寄存器控制字符串的源地址和目标地址,比方DS:SI这段地址的N个字节拷贝到ES:DI指向的地址,复制后DS:SI的内容保持不变。

IBM PC部分的使用统一的编址方式。CGA显示卡上现实内存的地址就是直接占用了储存器地址空间0xB800~BC00。若要让一个字符显示在显示器上面。能够直接诶使用内存操作指令往这个内存区域运行写操作.

以下这段代码中把%es设置为0xb800,寓意就在于di寄存器的输出指向显存!

rep指令就是反复运行 rep 后面跟的指令,直到%cx寄存器的值为0(每次运行一次,%cx寄存器的值递减)

这是real model以下的情况

到后面protected model的时候,仅仅是地址的表示形式会发生一点变化而已

不再是segment:offset的形式

而是直接的比如 0xb800(real model) => 0xb8000(protected model)

显存就像一个非常好玩的大buffer 哈哈哈哈哈~

这里最后多出来的EOF是我自己加上去的。我加了一小段代码:

前半部分是原来有的。后面部分#print my name是我自己加的功能

这里我精确计算了前半部分打印helloworld会占用多少个字节(62 byte)

于是0xb8d22 + 0x3D (60) = 0xb8d60  : ) Don't panic !

最后那个$24事实上不怎么好,是我忘记改了....这里最好恰当的改成你想打印多少字节的内容就可以

埃塞的情人变成岩石 皮埃尔 法国 1763年 325x329cm 布油彩 巴黎卢浮宫

    在这幅具有神话意境的画幅中,画家以极为细腻的笔触和华丽的色彩描绘画中人物形象和环境饰物。以古罗马柱式作中景建筑。使画中添加庄重感。

皮埃尔用虚幻和现实结合的手法创造了一个亦真亦幻、亦人亦神的艺术境地,在某种意义上又有浪漫情调。

能够说这是由古典主义向浪漫主义过渡的一种艺术表现 。这幅画虽取材于希腊神话。但画家似乎并不注重故事的刻画和人物的表现,而是将注意力放在女性人物的身上。尤其对衣物在光线下的反光情有独钟。人物有着罗可可式的甜美和纤秀。但人的目光却不能统一在一起,从而产生一种没有关联的分离感和无动于衷的造型效果
。画面中埃塞端坐于沙发之上,看到情人变成岩石的情景,被画家处理成理性的冷静,剧烈的戏剧性被冷静所消解。但我们却依旧能够看出新古典主义绘画那高贵的风范和冷静的气度

假设写一段代码引导PC开机这段代码是 ? Here is a tiny "OS" :-D的更多相关文章

  1. 如何写兼容浏览器和Node.js环境的Javascript代码

    如果有打开过jQuery的源码(从1.11及以后),或者Vue.js.React.js的源码,都会在文件的前面看见这样一段代码: ( function( global, factory ) { &qu ...

  2. 重构一段基于原生JavaScript的表格绘制代码

    为了在CardSimulate项目中方便的显示技能和效果列表,决定重构以前编写的一段JavaScript代码——att表格绘制库,这段代码的作用是将特定的JavaScript数据对象转化为表格,支持精 ...

  3. PC蓝牙通信C#代码实现

    PC蓝牙通信C#代码实现 这篇文章主要为大家详细介绍了PC蓝牙通信C#代码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了C#实现PC蓝牙通信代码,供大家参考,具体内容如下 ...

  4. 一段完整的创建表格的SQL代码

    一段完整的创建表格的SQL代码 使用SQL语句创建一张表,不仅可以可以快速熟悉SQL语句,还可以从这看出一个人对该技能点的熟悉程度. 这里先说明几点: PRIMARY KEY:主键,一张表中只允许有一 ...

  5. 写了一个具有future接口的rust测试代码

    写了一个具有future接口的rust测试代码 但没有实现future功能,内部是直接求值 struct Future<T> { t: T, } impl<T> Future& ...

  6. 在纯HTML的静态网页中添加一段统计网页访问量的JAVA Script代码?

    如何在网站上进行流量统计呢,可以找第三方服务网站去注册,但也可以在网站上直接添加代码,只需将以下代码copy到你的网页中,复制到</body>之前就可以啦!是不是很简单啊! <scr ...

  7. VS开发中的代码编写小技巧——避免重复代码编写的几种方法

    上一篇文章中程序员的幸福生活--有你的日子,每天都是情人节,收到了大家的很多好评.鼓励和祝福,非常感动,真诚的谢谢大家.也希望每个朋友都能保持一个积极向上的心态,去迎接丰富多彩的人生. 在开发过程中, ...

  8. 如何通过VIM把代码格式化后生成HTML网页代码

    本文转自http://wangxiaoyu.blog.51cto.com/922065/203471 需求及思路:演示需要,需要网站上嵌入一些代码,我的建议做法是根据代码文件,生成相应的HTML代码, ...

  9. “段寄存器”的故事[转](彻底搞清内存段/elf段/实模式保护模式以及段寄存器)

    http://blog.csdn.net/michael2012zhao/article/details/5554023 一. 段寄存器的产生 段寄存器的产生源于Intel 8086 CPU体系结构中 ...

随机推荐

  1. PHP7中session_start 使用注意事项,会导致浏览器刷时页面数据不更新

    //PHP7中session_start 使用注意事项, session_start([ 'cache_limiter' => 'private', //在读取完毕会话数据之后马上关闭会话存储文 ...

  2. nginx--提供一键安装脚本

    nginx特点 基于进程池实现的fastcgi 单一进程即可实现处理上千的连接 易于扩展的插件系统 安装篇 *下载源码 curl -O http://nginx.org/download/nginx- ...

  3. HDU_1561_The more, The Better_树型dp

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1561 The more, The Better Time Limit: 6000/2000 MS (J ...

  4. 【Linux】centos7 添加脚本到/etc/rc.local文件里,实现开机自启

    Linux 设置开机自启动,添加命令到/etc/rc.d/rc.local,本文以设置tomcat自启动为例: 一:添加自启动命令 export JAVA_HOME=/usr/java/jdk1.8. ...

  5. java虚拟机(八)--java性能监控与故障处理工具

    问题定位: 除了个人经验,知识,工具也是很重要的,通过数据进行问题分析,包括:运行日志.异常堆栈.GC日志.线程快照(threaddump/javacore文件 ).堆转储快照(heapdump/hp ...

  6. @Inherited注解

    允许子类继承父类的注解 https://blog.csdn.net/renli2549/article/details/78432272

  7. layer iframe层ajax回调弹出layer.msg()

    ajax success方法 success: function(data){ layer.msg("输入你需要的提示",{time:1000,end:function(){ // ...

  8. Extjs选中多行Grid提交

    要实现的效果如图:可以选择多行grid然后提交给后台 1,Extjs中grid如何可以选择多行? 定义一个grid,将色了Type设置为多选即可 selType: 'checkboxmodel', 2 ...

  9. NOIp2017——追求那些我一直追求的

    谨以此祭奠我即将爆炸的NOIP2017. $Mingqi\_H\ \ 2017.09.24$ Day -47 突然发现半年来自己从来没有写对过SPFA,最近几天才发现自己的板子一直是错的...赶紧找个 ...

  10. 洛谷 3979 BZOJ 3083 遥远的国度

    [题解] 这道题除去根操作就是普通的树链剖分了.但是有换根操作怎么处理呢? 我们可以发现如果现在的根不在查询的点的子树里,那么对本次查询没有影响.如果现在的跟在查询的点x的子树里,那么答案将变为整棵树 ...