纯C语言 写引导程序 系统,【骗精】。。简单操作系统制作~~~~~~系统引导程序。...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

什么样的程序。。。。才能算是引导程序呢??

就是从开机加电的那刻,BIOS将检查磁盘的第一个扇区512字节(话说。。。这个512跟磁盘有关。每一扇区大小为512)

载入内存,放于内存的0x0000:0x07c00处

如果第一扇区的最后两个字节是55AA那么它就是一个引导程序

废话不说。。直接贴代码。

(话说有一部分是汇编写的)

org 07c00h ;指令明确告诉编译器我程序开始地址是0c7c00h

;原来的00000

;int 汇编指令 int 10h

int 10h

mov ax,cs

mov es,ax

mov bp,msgstr ;es:bp指向的内容就是我们要显示的字符串地址

mov cx,12 ;字符串长度

mov dh,12 ;x显示的行号

mov dl,36 ;显示的列好号

mov bh,1 ;显示的页数

mov al,1 ;显示的是串结构

mov bl,0ch ;显示的是字符的属性

mov ah,13h ;明确调用13h子程序

msgstr: db "hello my os!"

int 10h

times 510-($-$$) db 0 ;重复N次每次填充为0

dw 0x55aa

jmp $ ;不断跳转到当前位置是个死循环

然后用nasm编译成.bin的二进制文件

。。将写好的汇编程序写入其中。。。。并覆盖

其前512字节

将上面汇编程序命名为boot.bin

用winImage创建一个空白的软盘镜像,选择1.44M

软盘镜像文件名为virtual_floppy.vfd

下面是一个拷贝的c程序

(linux下的c程序哦)

#include

#include

#include

#include

int main(int argc,char *argv[])

{

int fd_source;

int fd_dest;

int read_count=0;

char buffer[512]={0};

fd_source=open("boot.bin",O_RDONLY);

if(fd_source<0)

{

perror("open bppt.bin error:");

return 0;

}

fd_dest=open("virtual_floppy.vfd",O_WRONLY);

wile((read_count=read(fd_source,buffer,512))>0)

{

write(fd_dest,buffer,read_count);

memset(buffer,0,512);

}

printf("write image ok!");

return 0;

}

然后。。的步骤。。。大家都会。。就不麻烦打字了

(话说。。。打字。。真心累)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值