假设写一段代码引导PC开机这段代码是 ? Here is a tiny "OS" :-D
Hello world -- OS
我找到了华科绍志远博士的相关代码,发现他依据MIT的JOS的boot.S 稍作改动。然后单独剥离出来,能够非常好玩~
资料下载地址:
http://download.csdn.net/detail/u011368821/8006465
原则上仅仅须要两个文件(boot.S mmu.h)就能够,可是我们这里还须要一些附带的虚拟器工具。以及makefile来做实验.
须要提示的就是地址0xb800是显存的开头地址 : )
通过SI和DI这两个寄存器控制字符串的源地址和目标地址,比方DS:SI这段地址的N个字节拷贝到ES:DI指向的地址,复制后DS:SI的内容保持不变。
以下这段代码中把%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的更多相关文章
- 如何写兼容浏览器和Node.js环境的Javascript代码
如果有打开过jQuery的源码(从1.11及以后),或者Vue.js.React.js的源码,都会在文件的前面看见这样一段代码: ( function( global, factory ) { &qu ...
- 重构一段基于原生JavaScript的表格绘制代码
为了在CardSimulate项目中方便的显示技能和效果列表,决定重构以前编写的一段JavaScript代码——att表格绘制库,这段代码的作用是将特定的JavaScript数据对象转化为表格,支持精 ...
- PC蓝牙通信C#代码实现
PC蓝牙通信C#代码实现 这篇文章主要为大家详细介绍了PC蓝牙通信C#代码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了C#实现PC蓝牙通信代码,供大家参考,具体内容如下 ...
- 一段完整的创建表格的SQL代码
一段完整的创建表格的SQL代码 使用SQL语句创建一张表,不仅可以可以快速熟悉SQL语句,还可以从这看出一个人对该技能点的熟悉程度. 这里先说明几点: PRIMARY KEY:主键,一张表中只允许有一 ...
- 写了一个具有future接口的rust测试代码
写了一个具有future接口的rust测试代码 但没有实现future功能,内部是直接求值 struct Future<T> { t: T, } impl<T> Future& ...
- 在纯HTML的静态网页中添加一段统计网页访问量的JAVA Script代码?
如何在网站上进行流量统计呢,可以找第三方服务网站去注册,但也可以在网站上直接添加代码,只需将以下代码copy到你的网页中,复制到</body>之前就可以啦!是不是很简单啊! <scr ...
- VS开发中的代码编写小技巧——避免重复代码编写的几种方法
上一篇文章中程序员的幸福生活--有你的日子,每天都是情人节,收到了大家的很多好评.鼓励和祝福,非常感动,真诚的谢谢大家.也希望每个朋友都能保持一个积极向上的心态,去迎接丰富多彩的人生. 在开发过程中, ...
- 如何通过VIM把代码格式化后生成HTML网页代码
本文转自http://wangxiaoyu.blog.51cto.com/922065/203471 需求及思路:演示需要,需要网站上嵌入一些代码,我的建议做法是根据代码文件,生成相应的HTML代码, ...
- “段寄存器”的故事[转](彻底搞清内存段/elf段/实模式保护模式以及段寄存器)
http://blog.csdn.net/michael2012zhao/article/details/5554023 一. 段寄存器的产生 段寄存器的产生源于Intel 8086 CPU体系结构中 ...
随机推荐
- CF822C Hacker, pack your bags!
思路: 对于一个区间[l, r],只需枚举所有满足r' < l并且二者duration之和为x的区间[l', r'],寻找其中二者cost之和最小的即可.于是可以开一个数组a[],a[i]表示所 ...
- 关于vue项目 路由中 使用的坑
关于vue路由重定向的时候 记得一定要先声明先声明
- C语言中结构体大小计算
1.普通结构体 struct student { char sex; char a; char b; int age; char name[100]; }; 该结构体大小为108 解答:1.先算str ...
- [转]汇编语言:MOVSB,MOVSW,MOVSD
汇编语言:MOVSB,MOVSW,MOVSD 转自: http://blog.csdn.net/zhenyongyuan123/article/details/8364011 目前80386系列的 ...
- Lazarus 日志工具 MultiLog
MultiLog是一种同时以灵活性和低开销为目标的日志系统.顾名思义,它可用于将日志实例到多个目标,如文本文件.可视控件或其他应用程序.添加新的日志目标使用两个方法就可以实现了,其中一个方法是可选的. ...
- 关于iframe与$.load()哪个更好
iframe与$.load()哪个更好 iframe可以直接加载页面,但是要付出降低搜索引擎搜索效率的代价,它引入静态文件的方式是完全独立的,简单意思就是,在页面一(父级页面)用ifram ...
- 牛客多校Round 5
Solved:3 rank:195 F. take 官方题解:小 A 在打开第 i 个箱子后会交换手中的钻石和第 i 个箱子中的钻石 当且仅当第 i个箱子的钻石是前 i 个箱子打开后出现的所有钻石里最 ...
- [Luogu] P3701 「伪模板」主席树
题目背景 byx和手气君都非常都非常喜欢种树.有一天,他们得到了两颗奇怪的树种,于是各自取了一颗回家种树,并约定几年后比一比谁种出来的树更加牛x. 题目描述 很快,这棵树就开花结果了.byx和手气君惊 ...
- 剑指offer---最小的K个数
题目:最小的K个数 要求:输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. class Solution { public: ...
- loadrunner12 + ie11 无internet, 代码中文乱码
第一次用lr 录制的时候显示无internet, 在网上找了好久答案, 无非是ie路径设置,还有证书...... 都试过了不好用,自己研究一下午 , 最后发现是协议没对应上,http协议 ...