假设写一段代码引导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体系结构中 ...
随机推荐
- 清除浮动(float)的影响
浮动会导致父元素塌陷如图: 解决办法: 父元素overflow:hidden,如图 末尾插入子元素clear,如图 为甚么,父元素overflow:hidden会解决塌陷问题? 来自知乎貘吃馍香的回答 ...
- MyEclipse 快捷键大全(@Hcy)
MyEclipse 快捷键1(CTRL)-------------------------------------Ctrl+1 快速修复Ctrl+D: 删除当前行 Ctrl+Q 定位到最后编辑的地方 ...
- 26-Ubuntu-文件和目录命令-其他命令-管道
管道 Linux允许将一个命令的输出可以通过管道作为另一个命令的输入. 可以理解为现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里的 | 左右分为两端,左端塞东西(写),右端取东西(读). ...
- 在做导入一个excel文件的时候,数据有空值的时候
StringUtil.isNotEmpty(i.getFname()),用这个方法可以解决 java string 去除前后两端的空格和空字符使用.trim()
- 如何使用fio模拟线上环境
线上表现 这里我想通过fio来模拟线上的IO场景,那么如何模拟呢? 首先使用iostat看线上某个盘的 使用情况,这里我们需要关注的是 avgrq-sz, avgrq-qz. #iostat -dx ...
- cin的返回对象
//有时间回来补坑 //先记上几个有用的博客 https://blog.csdn.net/candj/article/details/4419585https://www.cnblogs.com/gy ...
- Gym - 101670J Punching Power(CTU Open Contest 2017 最大独立集)
题目: The park management finally decided to install some popular boxing machines at various strategic ...
- Platform 获取主机系统信息
该模块用来访问平台相关属性. 常见属性和方法 1. import platform(pip install platform) 2.获取操作系统名称及版本号 def get_platform(): ...
- intel compiler的表现
好久没弄这个东西,今天突然想试下,代码没写完,以后补. #include <stdio.h> #include <stdlib.h> #include <time.h&g ...
- Eclipse中使用JRebel实现项目热部署(Maven插件版)
JRebel实现项目热部署(Maven插件版) 热部署,就是在应用运行过程中不进行重启,可直接进行软件升级. 在开发过程中,热部署就是在项目运行过程中变更代码,无需重启服务器即可使代码生效. tomc ...