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. Python_购物车问题

    import os goods = [    {"name": "电脑", "price": 1999},    {"name&q ...

  2. bootstrap3无间距栅格/grid no-gutter

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  3. Python之数据聚合与分组运算

    Python之数据聚合与分组运算 1. 关系型数据库方便对数据进行连接.过滤.转换和聚合. 2. Hadley Wickham创建了用于表示分组运算术语"split-apply-combin ...

  4. 60使用nanopim1plus查看HDMI显示分辨率的问题(分色排版)V1.0

    60使用nanopim1plus查看HDMI显示分辨率的问题(分色排版)V1.0 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/5 17: ...

  5. UVM基础之-------uvm factory机制override<博>

    override功能是UVM中一个比较重要的功能,这个功能也是在factory里面实现的,我们会在env或者具体的case中使用override功能. class case_x extends bas ...

  6. thinkphp信息修改和分页

    关联两个数据表,在Model里建立StuModel.class.php: <?php //Belongs_to 关联表示当前模型从属于另外一个父对象 namespace Admin\Model; ...

  7. Hibernate框架之Criteria 详解

    自从学数据库以来,从SQL查询-HQL查询-到Criteria 查询.有人问我:掌握一种查询语句不就可以吗,为什么还要学Criteria 查询?我回答道:用到特定于数据库的SQL 语句,程序本身会依赖 ...

  8. java生成excel

    package test.poi; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; ...

  9. (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版

    http://blog.csdn.net/yerenyuan_pku/article/details/72863323 我们知道Jedis在处理Redis的单机版和集群版时是完全不同的,有可能在开发的 ...

  10. swift Hashable Equatable

    /// You can use any type that conforms to the `Hashable` protocol in a set or /// as a dictionary ke ...