Chinaunix首页 | 论坛 | 博客
  • 博客访问: 539111
  • 博文数量: 252
  • 博客积分: 6057
  • 博客等级: 准将
  • 技术积分: 1635
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-21 10:17
文章分类

全部博文(252)

文章存档

2013年(1)

2012年(1)

2011年(32)

2010年(212)

2009年(6)

分类:

2011-05-20 00:14:31

[原创] 操作系统学习笔记——引导

由于没有买到《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更详细的说明书可以在我的主页里面找到:
boot.asm是上面的那些汇编语言的源代码文件(在linux源代码会看到),
然后用打开vmware,将“软驱”选项设置为“选用软驱磁盘映像”就可以了,然后把生成的bin放进去就可以了

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



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

接受建议,改了一下!有笔误,请大家多多指点,多多批评!


























阅读(2387) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~