Orange's笔记(1)

第一章

写一个小的引导程序 代码:

 1     org    07c00h
 2     mov    ax,cs
 3     mov    ds,ax
 4     mov     es,ax
 5     call     DispStr
 6     jmp    $
 7 DispStr:
 8     mov    ax,BootMessage
 9     mov    bp,ax
10     mov    cx,16
11     mov    ax,01301h
12     mov    bx,000ch
13     mov    dl,0
14     int    10h
15     ret
16 BootMessage:    db    "Hello, OS World!"
17 times    510-($-$$)    db    0
18 dw    0xaa55

用NASM编译

nasm boot.asm -o boot.bin

安装 bochs

安装环境 :

sudo apt-get install build-essential xorg-dev libgtk2.0-dev

在官网下载最新版本 然后安装

./configure --enable-debugger --enable-disasm
make
sudo make install

make的时候提示

/usr/bin/ld: gui/libgui.a(gtk_enh_dbg_osdep.o): undefined reference to symbol ‘[email protected]@GLIBC_2.1‘
//lib/i386-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [bochs] 错误 1

解决方法

在makefile的libs中添加如下内容 :

-lz -lrt -lm -lpthread 

利用bximage生成虚拟软盘,将引导扇区写入虚拟软盘:

dd if=boot.bin of=a.img bs=512 conv=notrunc

配置 bochs  然后启动

###############################################################
# Configuration file for Bochs
###############################################################

# how much memory the emulated machine will have
 megs: 32

# filename of ROM images
 romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
 vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest

# what disk images will be used
 floppya: 1_44=a.img, status=inserted

# choose the boot disk.
 boot: floppy

# where do we send log messages?
# log: bochsout.txt

# disable the mouse
 mouse: enabled=0

# enable key mapping, using US layout as default.
 keyboard_mapping: enabled=1, map=/usr/local/share/bochs/keymaps/sdl-pc-us.map

在新版bochs中无dump_cpu命令。

Orange's笔记(1)

时间: 06-30

Orange's笔记(1)的相关文章

Orange's笔记(2)保护模式(暂存)

1:GDT的第一项总为空,称为空段描述符,其结构如下: G:=0的时候段长度单位为字节 ,=1的时候单位为4096字节,所以段长度可以达到2的20(段接线2+段界限1)次方*4096=4GB DPL:描述符特权级,定义了被引用段的特权级,其值为0-3 S和TYPE:确定该段类型,S=1代码段和数据段描述符.s=0系统段描述符. 2:就WINDOWS而言,LDT是依个孤立的数据结构 3:GTDR是一个特殊的寄存器,它用来保存GDT的基地址,该寄存器的大小为48位,低16位存储GDT的大小,高32位

python----数据结构

数据结构 列表 Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能. 以下是 Python 中列表的方法: 方法 描述 list.append(x) 把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]. list.extend(L) 通过添加指定列表的所有元素来扩充列表,相当于 a[len(a):] = L. list.insert(i, x) 在指定位置插入一个元素.第一个参数是准备插入到其前面的那个元素的索引,

《Orange'S:一个操作系统的实现》笔记(一)

感觉自己对于操作系统始终没有一个清楚的概念,尤其最近困扰于实模式.保护模式以及寻址方式等一些概念.转而一想,所有的程序,最终都是操作的计算机资源,需要和操作系统打交道,所以操作系统有必要深入了解一下.最终想要自己动手编写一个简单的版本,上网查.网友对于于渊的<Orange'S:一个操作系统的实现>和<30天自制操作系统>评价挺高的,先选<orange>为学习手册.<30>为参考手册,开始自己的操作系统之旅. 首先是平台的搭建问题,首先因本人编程一般都是在自己

Android:日常学习笔记(8)———探究UI开发(5)

Android:日常学习笔记(8)---探究UI开发(5) ListView控件的使用 ListView的简单用法 public class MainActivity extends AppCompatActivity { private String[] data={"Apple","Banana","Orange","Watermelon","Pear","Grape","

Sass学习笔记

阅读目录 一. Sass安装 1.1 Ruby安装 1.2 运行gem命令 1.3 安装Sass 二. Sass基本用法 2.1 导入 2.2 注释 2.3 变量 2.4 嵌套 2.5 继承 2.6 占位符 2.7 混合宏 三. Sass编程 3.1 数学计算 3.2 条件 3.3 循环 3.4 函数 Sass被称为"CSS预处理器",就是用一种编程的思想去写CSS样式表.在还没接触Sass的时候,很多人都不愿意去了解,认为都会了CSS,为什么还要去写Sass,Sass最终生成的还是C

Sass学习笔记之入门篇

Sass又名SCSS,是CSS预处理器之一,,它能用来清晰地.结构化地描述文件样式,有着比普通 CSS 更加强大的功能. Sass 能够提供更简洁.更优雅的语法,同时提供多种功能来创建可维护和管理的样式表.以下是我的学习笔记. Sass安装环境 1.安装sass(mac) ①:Ruby安装 ②:安装sass sudo gem install sass 可以通过 sass -v检测是否完成安装   2.更新sass gem update sass 3.卸载(删除)sass gem uninstal

TJI读书笔记15-持有对象

body, td { font-family: 微软雅黑; font-size: 10pt; } TJI读书笔记15-持有对象 总览 类型安全和泛型 Collection接口 添加元素 List 迭代器 LinkedList 栈 Set Map Queue Collection和Iterator Foreach与迭代器 总结 总览 It's a fairly simple program that only has a fixed quantity of objects with known l

PHP学习笔记-GD库与Jpgraph的使用

转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/52281196 本文出自:[顾林海的博客] 前言 学习PHP从第一篇笔记到现在这篇,已经十多篇了,每天花时间去学习是需要毅力的,好在自己对IT这行也是比较感兴趣,算是每天自娱自乐吧,下周一就去考科目三了,想想也是醉了,拖这么长时间. GD库 GD库是一个开放的动态创建图像.源代码公开的函数库,可以从官方网站http://www.boutell.com/gd处下载.目前,

kobuki 学习笔记for ROS

kobuki 学习笔记 具体参考:http://wiki.ros.org/kobuki/Tutorials 1.安装 1.1.安装包: sudo apt-get install ros-hydro-kobuki ros-hydro-kobuki-core 1.2.是能USB连接 rosrun kobuki_ftdi create_udev_rules 1.3.键盘控制 roslaunch kobuki_node minimal.launch    最小操作 roslaunch kobuki_ke