[Orange‘s:一个操作系统的实现]第一天:环境配置
2015-04-28 16:33
459 查看
前言:环境介绍
电脑:Macbook Air 2014年早期版系统:OS X 10.10.3
虚拟机:由于在Mac上编译Bochs一直不通过,原因在sourceforge上有说:sourceforge.net/p/bochs/bugs/1344 /1360,这两个地址说他们的程序员没有开发mac下的,所以会编译不通过。我不想多折腾,用VirtualBox,同时也是免费的。去官网下载VirtualBox,双击安装就行。同时,VirtualBox支持调试,在网上搜也有很多关于调试的文章,这里不贴地址。
#启动虚拟机调试的常见命令 VirtualBox --startvm /path_of_virtualmachine.vbox --debug
源码获取:作者在书的最后给出了源码的地址,如果买了书的同学可以去下载。
生成img文件:书中使用的是Bochs自带的bximage,由于我们没有编译成功,使用dd命令也是非常的方便
#生成一块1.44M空软盘命令。 dd if=/dev/zero of=os.img bs=512 count=2880 conv=notrunc
挂载img文件:在Linux可以使用mount命令, 但是在mac下需要-t选项,一直搞不清楚FAT12对应的代号,可能没有,后来发现了这么一个命令
#挂载img文件 hdiutil mount os.img #命令会有输出,将文件挂载在哪个位置,一般都是在/Volumes/文件夹下 hdiutil unmount /Volumes/path
Dos下进入不同的盘:
#直接输入盘符加:号 B:
第一章:一个引导程序
最开始介绍了一个是多行的代码,用于引导软盘进入系统org 07c00h ; 告诉编译器程序加载到7c00处 mov ax, cs mov ds, ax mov es, ax call DispStr ; 调用显示字符串例程 jmp $ ; 无限循环 DispStr: mov ax, BootMessage mov bp, ax ; ES:BP = 串地址 mov cx, 16 ; CX = 串长度 mov ax, 01301h ; AH = 13, AL = 01h mov bx, 000ch ; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮) mov dl, 0 int 10h ; 10h 号中断 ret BootMessage: db "Hello, OS world!" times 510-($-$$) db 0 ; 填充剩下的空间,使生成的二进制代码恰好为512字节 dw 0xaa55 ; 结束标志
对于上面的代码,不做过多的描述,第一行是跳转到7c00处,将控制权移交给系统,不再是BIOS,接着初始化几个寄存器之后调用字符显示函数,然后进入死循环。最后是填充数据,写入结束标志。
讲述一些NASM汇编中的规则,更详细内容去看官网手册:
对变量加[],取值,不加表示地址;
$:当前行被汇编后的地址
$$:当前段section被汇编之后的起始地址。
好的,到现在,如果你和我一样的系统,一样的硬件,你应该已经全部搞定书上的操作实例了。
那么接下来进入保护模式。
相关文章推荐
- 《Orange's 一个操作系统的实现》读书手记2--- [ 搭建你的工作环境]
- 《Orange’s 一个操作系统的实现》1.搭建操作系统开发环境
- orange's 一个操作系统的实现 实验环境搭建
- Orange‘s 一个操作系统的实现 配置问题
- Orange's一个操作系统的实现的开发环境的搭建
- orange's一个操作系统的实现之环境搭建
- 《Orange's 一个操作系统的实现》读书手记2--- [ 搭建你的工作环境]
- 《Orange’s 一个操作系统的实现》1.搭建操作系统开发环境
- Ubuntu 一个操作系统的实现环境配置
- orange's一个操作系统的实现--环境搭建
- <<orange‘s :一个操作系统的实现>>读书笔记(1)准备环境
- Orange_OS-一个操作系统的实现--搭建环境写一个最小的操作系统
- 《Orange's 一个操作系统的实现》学习笔记(一) 实验环境搭建
- 读书笔记:Orange's 一个操作系统的实现(1) - 实验环境搭建和引导扇区的编写
- ORANGE’S:一个操作系统的实现:Windows和Ubuntu分别安装bochs-hello world
- ORANGE’S:一个操作系统的实现-chap4之:软盘结构(磁头号和起始扇区的计算方法)
- 一个操作系统的实现-1_环境搭建
- Orange's一个操作系统的实现 安装Bochs
- ubuntu环境下写一个简单的操作系统(一)环境配置
- 于渊<orange's一个操作系统的实现>保护模式部分详解