DIY BOOT CODE
来源:互联网 发布:淘宝秒杀软件手机版 编辑:程序博客网 时间:2024/05/02 14:01
看了《自己动手写操作系统》后尝试一下。因为不想用windows作为开发平台,所以,构建了一个Linux的卡发平台。
需要的工具:nasm、qemu、dd
首先,创建软盘镜像文件。
下面编辑一个boot.asm文件如下:
代码:
org 07c00h //bios启动后将控制权交给了0x7c00
mov ax, cs //下面是把ds,es等都设为7c00
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
mov bx, 000ch
mov dl, 0
int 10h //bios 调用
ret
BootMessage: db "Hello,OS world!"
times 510-($-$$) db 0 ;填充剩下的空间,使生成的二进制代码恰好为512字节
dw 0xaa55 //启动扇区标志
在程序中$-$$经常会被用到。
times 510-($-$$) db 0;表示将0重复510-($-$$)遍,也就是在剩下的空间里不停的填充0,直到程序有510B为止。这样加上结束0xAA55,正好512B。
该信息是用于BIOS的,如果它识别出该设备是一个可启动的设备,那么在第510和511的位置,该值就应该是0x55和0xaa。程序会把文件boot读至名为boot_buf的缓冲中。它要求改变第510和第511字节,然后把boot_buf写至软盘之上。如果执行代码,软盘上的前512字节就包含了启动代码。最后,把文件存为write.c。
1、用nasm编译:
$ nasm boot.asm -o boot.bin
这样就得到了一个512字节的boot.bin文件了,这个就是软盘启动扇区里面应该放的代码。
2、你可以用下面这个命令生成软盘镜像文件:
$ dd conv=sync if=boot.bin of=boot.img bs=1440k count=1
这样我们就得到软盘镜像boot.img了。注意命令中的conv=sync,使用这个选项后可以使得在把每个输入块填充到ibs个字节时,不足部分用空(NULL)字符补齐。在这个例子里由于输入文件只有512个字节,输出文件却需要1.44MB所以我用了这个选项。
3、利用qemu启动镜像文件:
qemu -fda boot.img -boot a -m 64 -localtime
- DIY BOOT CODE
- diy.asp code
- deassemble the code of MBR boot code
- DIY
- DIY
- DIY
- Embedded Linux Boot- Code Walkthrough
- 初识Spring Boot框架(二)之DIY一个Spring Boot的自动配置
- 初识Spring Boot框架(二)之DIY一个Spring Boot的自动配置
- 初识Spring Boot框架(二)之DIY一个Spring Boot的自动配置
- 初识Spring Boot框架(二)之DIY一个Spring Boot的自动配置
- 初识Spring Boot框架(二)之DIY一个Spring Boot的自动配置
- Minix Master Boot Record code reading
- imx51 ROM boot code 启动分析
- imx51 ROM boot code 启动分析
- imx51 ROM boot code 启动分析 .
- imx51 ROM boot code 启动分析 .
- imx51 ROM boot code 启动分析 .
- Linux dmesg中关于TCP: Treason uncloaked!信息
- 主题:JSON学习
- http://user.qzone.qq.com/18398259/infocenter?ptlang=2052
- NP-Hard问题分类
- 第七天休息
- DIY BOOT CODE
- myeclipse最牛破解方法
- 关于InstallShield Projects
- 免费的svn空间
- C++ interview C/C++的堆栈,内存分配
- Criteria大全
- SourceInsight3.5序列号
- 非装载模块的初始化方法
- CLS(Certified LeanScrumer)培训课程内容