发新话题
打印

[转载]boot学习笔记

[转载]boot学习笔记

信息来源:www.zggo.com

由于没有买到《linux设备驱动程序》,但是老天对我还好,买到了本《自己动手写操作系统》,我跟着于渊前辈写的那些内容进行操作,中间有段没有弄明白,所以研究了一阵子,但是后来没有成功,结果就来这里问大家了,现在清楚了,也明白了。(在flw前辈的帮助下)
同时也感谢回答过我的问题的各位牛银!~~
把引导代码帖出来(代码非本人写的,是从书上抄的,把信息改了改)。
代码:
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 "QQ:314064349"
times 510-($-$$) db 0 ; 填充剩下的空间,使生成的二进制代码恰好为512字节
dw 0xaa55 ; 结束标志



用nasm编译成bin,命令
代码:
c:\>cd nasm\bin
c:\>nasm boot.asm -o boot.bin


下面说明一下上面的命令

nasm是一种汇编语言的编译器(可以在win下用,linux下用等很多环境下使用,在baidu中,或者找我要,可以得到)

-o 是nasm里的一个命令参数
用过gcc的朋友会知道,gcc下的命令也如此:
代码:
[1jjk@linux.com]$gcc 1jjk.c -o 1jjk

这个 -o 和gcc里的 -o意思是一样的,最后的那个boot.bin是生成的目标文件,是二进制文件。

下面说说其他的一些命令:

-o参数:指定输出文件名
-f参数:指定输出文件格式
-l参数:输出列表文件
-E参数:输出错误信息到文件中
-s参数:输出错误信息到屏幕
-i参数:指定头文件路径
-p参数:预编译头文件
-d参数:预编译宏
-u参数:取消宏定义
-e参数:只预处理
-a参数:根本不预处理
-w参数:允许或禁止汇编警告信息

nasm更详细的说明书可以在我的主页里面找到:http://www.zggo.com/xoops
boot.asm是上面的那些汇编语言的源代码文件(在linux源代码会看到),
然后用打开vmware,将“软驱”选项设置为“选用软驱磁盘映像”就可以了,然后把生成的bin放进去就可以了

下面给大家放几张图片看一看!



参考书籍《自己动手写操作系统》作者:于渊

接受建议,改了一下!有笔误,请大家多多指点,多多批评!
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

发新话题