如何从零开始写一个简单的 *** 作系统

如何从零开始写一个简单的 *** 作系统,第1张

 如何动手制作这样的引导扇区呢?这个过程十分简单, (1)首先按照要求写一个合法的引导程序(通常用汇编,机器码也可以,呵呵); (2)然后将其通过汇编程序,如NASM汇编成二进制文件; (3)最后,将这个二进制文件写入到目标盘的第一个扇区。 第一步:写代码 文件名:boot.asm 代码如下,注意,汇编中通常用“”来表示注释内容 此段代码参考《自己动手写 *** 作系统》(于渊) 初始化函数 org 07c00h 告诉编译器将此段程序加载 到内存0x0000:07C00处 mov ax, cs mov ds, ax mov es, ax call PrintStr 调用屏幕打印函数 jmp $ 无限循环 PrintStr: 屏幕打印函数 mov ax, HelloWorld 将字符串拷贝到ax mov bp, ax es:bp = 串地址 mov cx, 24 cx = 串长度 mov ax, 01301h ah = 13, al = 01h mov bx, 000ch 页号为0(bh = 0) 黑底红字(bl = 0ch,高亮) mov dl, 0 int 10h 10h号中断 ret HelloWorld: db "Welcome to Lee's OS *_*" 字符串负值 times 510-($-$$) db 0 用0x0填充剩余的空间使生成 的二进制代码刚好为512字节 dw 0xaa55 结束标志 整个程序结束!很短吧 第二步:汇编 假设你已经安装了NASM程序,那么进入命令行模式,然后输入以下命令: C:[PATH]\ nasm boot.asm -o boot.bin 其中“C:[PATH]\”为boot.asm代码文件所在位置。 现在如果不出意外的话,你已经拥有了boot.bin二进制文件,这个就是引导程序! 第三步:制作引导盘 由于不能随便更改硬盘,否则系统无法进入原来的 *** 作系统,所以我们用软盘来试验。 那么,我们准备一张软盘。 现在,我们要自己写一个程序将我们汇编得到的二进制文件写到软盘的第一个扇区。 C语言程序代码如下: /***************START***************/ #include #include int main(void) { FILE *inunsigned char buffer[520]if((in = fopen("boot.bin", "rb"))==NULL) { printf("Error loading file\n")exit(0)} fread(&buffer, 512, 1, in)while(biosdisk(3, 0, 0, 0, 1, 1, buffer))fclose(in)return 0} /****************END****************/ 注意,这个程序必须同boot.bin文件在同一目录下,然后将软盘放进软驱,运行此程序。 第四步:GOGOGO 好了,现在你拥有了一张从头到尾完全自制的引导盘,由于有了她,你想运行你的电脑再也不需要微软插手了,而且这很可能是你第一次能在裸机上运行一个自己的程序哦,哈哈! 重新启动你的机器,记得把软盘放进去,现在你看见什么了? 一行醒目的红字: Welcome to Lee's OS *_* 打印在屏幕上!

1.1在dos和 Windows 下安装NASM

如果你拿到了 NASM 的 DOS 安装包,'nasmXXX.zip'(这里.'XXX'表示该安装包的 NASM 版

本号),把它解压到它自己的目录下(比如:‘c:\nasm')

该包中会包含有四个可执行文件:NASM 可拟行文件'nasm.exe'和'nasmw.exe',还有

NDISASM 可执行文件'ndisasm.exe'和'ndisasmw.exe'。文件名以'w'结尾的是'Win32'

可执行格式。是运行在'Windows 95'或'Windows NT'的 Intel处理器上的,另外的是

16 位的'DOS'可执行文件。

NASM 运行时需要的唯一文件就是它自己的可执行文件,所以可以拷贝'nasm.exe'

和'nasmw.exe'的其中一个到你自己的路径下,或者可以编写一个'autoexec.bat'把

nasm 的路径加到你的'PATH'环境变量中去。(如果你只安装了 Win32 版本的,你可能

希望把文件名改成'nasm.exe'。)

就这样,NASM 装好了。你不需要为了运行 nasm 而让'nasm'目录一直存在(除非你把它

加到了你的'PATH'中,所以如果你需要节省空间,你可删掉它,但是,你可能需要保留

文档或测试程序。

如果你下载了 DOS 版的源码包,'nasmXXXs.zip',那'nasm'目录还会包含完整的 NASM源

代码,你可以选择一个 Makefiles 来重新构造你的 NASM 版本。

注意源文件`insnsa.c', `insnsd.c', `insnsi.h'和`insnsn.c'是由'standard.mac'中

的指令自动生成的,尽管 NASM0.98发布版中包含了这些产生的文件,你如果改动了

insns.dat,standard.mac或者文件,可能需要重新构造他们,在将来的源码发布中有

可能将不再包含这些文件,多平台兼容的 Perl可以从 www.cpan.org 上得到。

开机时,按下DEL键,进入BIOS设置,光标控制到第二项,回车,里面有FIRST 、SECOND。。。什么的选FIRST项回车,然后选CD-ROM 按F10保存并退出,放入光盘重新启动,就等这鼠标点点就好了


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7915194.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存