假设写一段代码引导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体系结构中 ...
随机推荐
- Hadoop的数据采集框架
问题导读: Hadoop数据采集框架都有哪些? Hadoop数据采集框架异同及适用场景? Hadoop提供了一个高度容错的分布式存储系统,帮助我们实现集中式的数据分析和数据共享.在日常应用中我们比如要 ...
- JS获取到时间转换成字符串类型
JS获取到时间格式为:/Date(1479279579047)/ 提供一个函数可将其转换为“yyyy-MM-dd”和“yyyy-MM-dd hh:mm:ss” //时间日期转换成string func ...
- opencv函数之cv.InRange函数
2018-03-0421:22:46 (1)cv.InRange函数 void cvInRange(//提取图像中在阈值中间的部分 const CvArr* src,//目标图像const CvArr ...
- opencv3.31+vs2015终于配置成功了
风萧萧兮易水寒, 熬了几个夜晚,终于把opencv配好了, 来图一 唉试了很多方法,终于成功. 教程和资料会发在个人网站里. 测试 代码 #include <iostream> #incl ...
- oracle dos命令
1.无账户密码登录数据库:sqlplus/nolog 后面不能加分号,否则不能识别 2.登录数据库:sqlplus 3.在sql下测试连接性:conn oracle_name/oracle_passw ...
- UVM基础之------uvm phases机制
代码的书写顺序会影响代码的实现,在不同的时间做不同的事情,这是UVM phase的设计哲学,UVM phase提供了一个通用的TB phase 解决方案.支持显示的隐式的同步方案,运行时刻的线程控制和 ...
- 本地调试hbase
需求说明 如果要本地调试Hbase程序,那么可以用本地连接集群的方式 配置文件 在maven里,配置文件cluster.properties放在target/classes里 cluster.prop ...
- vue(数据改变,DOM不渲染问题)
1.组件内部,属性值地址空间内引用地址改变,DOM不能渲染. 问题举例:this.items = [[],[],[],[]] 1.在items 中,修改任意一项数组中的值,DOM是不会更新的,2.解决 ...
- Spring Boot 2.0的属性绑定
Spring Boot2.0的属性绑定 原文从Spring boot第一个版本以来,我们可以使用@ConfigurationProperties注解将属性绑定到对象.也可以指定属性的各种不同格式.比如 ...
- eBPF监控工具bcc系列一启航
eBPF监控工具bcc系列一启航 在eBPF篇中,我们知道虽然可用 C 来实现 BPF,但编译出来的却仍然是 ELF 文件,开发者需要手动析出真正可以注入内核的代码.工作有些麻烦,于是就有人设计了 B ...