2024年9月自己动手写操作系统(怎么编写电脑系统)

 更新时间:2024-09-21 08:50:33

  ⑴自己动手写操作系统(怎么编写电脑系统

  ⑵选择“重新安装驱动程序”,系统会自动识别对应驱动程序并安装完成,安装好所有驱动之后重新启动计算机,本文目录怎么编写电脑系统写系统咋写自己动手安装XP操作系统XP系统怎么编写电脑系统.建立开发环境这一步非常的简单,如果直接将操作系统在系统启动时加载到x:x,二、从光盘安装XP系统在重启之前放入XP安装光盘,.开发操作系统我们自己的操作系统运行在实模式环境下(如果您不知道什么是实模式,安装操作系统并不难。

  ⑶建立开发环境这一步非常的简单。将masm和vc的压缩包分别解压到e:masm和e:msvc目录下。你也可以放到其他目录下,根据自己的情况而定,但是下面用到的编译命令需要作相应的修改。也不需要添加或修改任何的环境变量。.IBMPC的启动及当时的内存使用情况这一部分内容已经是老生常谈了,但又不能不说。我们只说从硬盘引导的情况。当BIOS经过POST(PowerOnTestSelf后,将硬盘MBR读到内存x:xC的位置,然后从这里开始执行。一般的情况,MBR将选择活动分区进行操作系统的启动。在MBR开始执行时,内存使用的情况如下图所示,地址数据用进制表示:这已经是老掉牙的内容了,但是,在年前却十分流行。如果想更详细的了解这方面的内容,找本讲解DOS的书看看吧。我们自己的操作系统将被加载到x:x。这不是必需或者必然的,是人为选择的,你也可以将其放在x:等其他地方。但是,上图中注明有其他用途的内存区域,应该保留,否则,你会后悔的。.开发操作系统我们自己的操作系统运行在实模式环境下(如果您不知道什么是实模式,也请看看年前出版的当时非常流行的书,或者直接请教当时的前辈高手。即使你的电脑是P的CPU,刚启动时,也只相当于主频较高的而已。但是,没有关系。首先,使用汇编语言写一个框架,文件名是entry.asm:;;entry.asm;Copyright(C),TianXiangYuan;.MODELTINY,C.poptionexproptioncasemap:nonecmainPROTONEARC.CODEh;偏移地址_start:jmpbeginnopDB’TianXiangYuan’,;themagicofmyosbegin:climovax,csmovds,axmoves,axmovss,axmovsp,FFFFhsticallcmain;调用C语言写的主函数movax,ch;调用DOS的功能(为了调试,与我们自己的操作系统无关inth这段代码非常简单,应该没有什么问题。已经说了,操作系统将从x:x加载,说是无心,实则有意。我们知道,TINY模式的程序,在DOS下运行时,其起始地址就是x,前面的Byte是参数部分。如果直接将操作系统在系统启动时加载到x:x,调试时非常麻烦。我们将其起始地址设为x,使其可以在DOS下运行(这也是在程序的最后包含inth指令的原因,确认正确无误后,再进行下一步的开发。下面再看C语言的代码,文件名是main.c:……staticvoidInitShell(){}voidcmain(){InitShell();TermShell();}顾名思义,其中实现了一个简单的shell。因为该程序本身是操作系统的一部分,所以,平时经常使用的一些C库函数,在这里就不能使用了。总之,一切都要自己动手实现。幸好,在实模式下,几乎所有的设备的驱动都包含在BIOS中了,我们可以直接使用。否则,连从键盘读一个键值这样的事都需要自己写键盘的驱动程序,实在太难了。也是这个原因,我们自己的操作系统没有将CPU转到保护模式下,有心之人可以试试。下面的事情几乎都可以使用C语言实现了。第一,初始化显示模式。系统启动时,显卡已经被初始化成模式了,就是X的彩色模式(除非你的显示器是单色显示器,我们不需要再做什么了。当然,你也可以将显卡设成VGA甚至SVGA模式,只要你的BIOS和显卡支持。第二,实现一个具有简单交互功能的shell。代码不全,请自己补齐,或参看附件。/**从键盘读一个字符,如果没有输入,则等待;返回值的低字节为asii码,高字节为键盘扫描码*/staticintgetch(){intchr=;__asm{movah,hinthmovchr,ax}returnchr;}/**使用TTY模式向屏幕输出一个字符*/staticvoidputch(unsignedcharkey){__asm{movbh,moval,keymovah,Ehinth}}#defineKEY_BACKSPACEx#defineKEY_ENTERxD#defineKEY_NEWLINExA#defineKEY_ESCAPExBstaticintprintk(constchar*str,...){……//给大家一点空间,自己实现吧}staticvoidendline(){putch(KEY_NEWLINE);//LineFeed(LF)putch(KEY_ENTER);//Enter(CR)}statiharmsg_prompt=“CMD:“;staticvoiddeal_cmd(char*cmd_line,intcmd_len){……//也请大家自己实现吧,例如,可以实现help,dir,cls,halt等命令……//其实,就是字符串比较的过程}staticvoidTermShell(){charcmd_line={,};intcmd_len=;endline();printk(msg_prompt,sizeof(msg_prompt));for(;;){cmd_line=getch();switch(cmd_line){caseKEY_ENTER:if(cmd_len》)deal_cmd(cmd_line,cmd_len);//break;caseKEY_ESCAPE:cmd_len=;endline();printk(msg_prompt,sizeof(msg_prompt));break;caseKEY_BACKSPACE:if(cmd_len》){putch(x);putch(’’);putch(x);cmd_len--;}break;default:putch(cmd_line);cmd_len++;}}}更复杂、功能更强大的方法请参考BIOS的相关文档。也请大家发挥想象力,不断的扩展功能。说心里话,这个“操作系统”比dos还原始!但毕竟是自己的操作系统。

  ⑷如何动手制作这样的引导扇区呢?这个过程十分简单,(首先按照要求写一个合法的引导程序(通常用汇编,机器码也可以,呵呵;(然后将其通过汇编程序,如NASM汇编成二进制文件;(最后,将这个二进制文件写入到目标盘的第一个扇区。第一步:写代码;文件名:boot.asm;代码如下,注意,汇编中通常用“;”来表示注释内容;此段代码参考《自己动手写操作系统》(于渊;;初始化函数ch;告诉编译器将此段程序加载;到内存x:C处movax,csmovds,axmoves,axcallPrintStr;调用屏幕打印函数jmp$;无限循环PrintStr:;屏幕打印函数movax,HelloWorld;将字符串拷贝到axmovbp,ax;es:bp=串地址movcx,;cx=串长度movax,h;ah=,al=hmovbx,ch;页号为(bh=黑底红字(bl=ch,高亮movdl,inth;h号中断retHelloWorld:db“WeletoLee’sOS*_*“;字符串负值times-($-$$)db;用x填充剩余的空间使生成;的二进制代码刚好为字节dwxaa;结束标志;整个程序结束!很短吧第二步:汇编假设你已经安装了NASM程序,那么进入命令行模式,然后输入以下命令:C:nasmboot.asm-oboot.bin其中“C:”为boot.asm代码文件所在位置。现在如果不出意外的话,你已经拥有了boot.bin二进制文件,这个就是引导程序!第三步:制作引导盘由于不能随便更改硬盘,否则系统无法进入原来的操作系统,所以我们用软盘来试验。那么,我们准备一张软盘。现在,我们要自己写一个程序将我们汇编得到的二进制文件写到软盘的第一个扇区。C语言程序代码如下:/***************START***************/#include#includeintmain(void){FILE*in;unsignedcharbuffer;if((in=fopen(“boot.bin“,“rb“))==NULL){printf(“Errorloadingfile

  ⑸“);exit();}fread(&buffer,,,in);while(biosdisk(,,,,,,buffer));fclose(in);return;}/****************END****************/注意,这个程序必须同boot.bin文件在同一目录下,然后将软盘放进软驱,运行此程序。第四步:GOGOGO好了,现在你拥有了一张从头到尾完全自制的引导盘,由于有了她,你想运行你的电脑再也不需要微软插手了,而且这很可能是你第一次能在裸机上运行一个自己的程序哦,哈哈!重新启动你的机器,记得把软盘放进去,现在你看见什么了?一行醒目的红字:WeletoLee’sOS*_*打印在屏幕上!

  ⑹自己动手安装XP操作系统XP系统

  ⑺对新手来说,安装系统可能心存畏惧。其实,安装操作系统并不难,也不神秘,只要按照下面的步骤去做,完全能够做出自己的系统来。不过,市场上的WindowsXP光盘太多太杂,而且做软件的也不会给你免费的午餐,总要在操作系统中做点手脚。对电脑知识稍微有点了解的朋友,都会看出其中的猫腻,在此不好细说。总之,自己动手动脑做出的原版系统,才会看着舒心,用起安全。好了,言归正传,现在就说说如何用光盘安装操作系统。一、设置光驱启动所谓光驱启动,意思就是计算机在启动的时候首先读取光驱,如果光驱中有具有光启功能的光盘就可以赶在硬盘启动之前读取出来。设置方法:()启动计算机,并按住DEL键(有的是按F或者F,具体请看电脑主板的有关说明不放,直到出现BIOS设置窗口(通常为蓝色背景,黄色英文字。()选择并进入第二项,“BIOSSETUP”(BIOS设置。在里面找到包含BOOT文字的项或组,并找到依次排列的“FIRST”、“SECEND”、“THIRD”三项,分别代表“第一项启动”、“第二项启动”、“第三项启动”。这里我们按顺序依次设置为“光驱”、“软驱”、“硬盘”即可。(如在这一页没有见到这三项E文,通常BOOT右边的选项菜单为“SETUP”,这时按回车进入即可看到了应该选择“FIRST”敲回车键,在出来的子菜单选择CD-ROM(意思首先从光驱启动系统。再按回车键。()选择好启动方式后,按F键保存,出现E文对话框,按“Y”键(可省略,并回车,计算机自动重启,证明更改的设置生效了。这一步很关键!二、从光盘安装XP系统在重启之前放入XP安装光盘,在看到屏幕底部出现“Pressanykeytobootfromcd”字样的时候,按回车键。才能实现光启,否则计算机开始读取硬盘,也就是跳过光启从硬盘启动了。XP系统盘光启之后便是蓝色背景的安装界面,这时系统会自动分析计算机信息,不需要任何操作,直到显示器屏幕变黑一下,随后出现蓝色背景的中文界面。这时首先出现的是XP系统的协议,按F键(代表同意此协议,之后可以见到硬盘所有分区的信息列表,并且有中文的操作说明。选择C盘,按D键删除分区(之前记得先将C盘的有用文件做好备份,C盘的位置变成“未分区”,再在原C盘位置(即“未分区”位置按C键创建分区,分区大小根据需要可以调整(至于系统盘容量空间要多大合适,建议控制在G以下。之后原C盘位置变成了“新的未使用”字样,按回车键继续。特别说明:如果电脑中了一些诸如“熊猫”这样的恶劣病毒,往往其它硬盘也感染了病毒,重装系统并不能彻底解决问题,因此要在此步将所有的硬盘分区全删除,再重新分区、格式化,这样就可以彻底清除病毒的残留。接下来有可能出现格式化分区选项页面,对于新手来说,建议选择“用NTFS格式化分区”。按回车键继续。”的字样系统开始格式化C盘,速度很快。格式化之后分析硬盘和以前的WINDOWS操作系统,速度同样很快,随后是复制文件,大约需要几分钟不等(根据机器的配置决定。复制文件完成(%后,系统会自动重新启动,这时当再次见到“Pressanykeytobootfromcd”的字样时,不需要按任何键,让系统从硬盘启动,因为安装文件的一部分已经复制到硬盘里了(注:此时光盘不可以取出。出现蓝色背景的彩色XP安装界面,左侧有安装进度条和剩余时间显示,起始值为分钟,也是根据机器的配置决定,通常配置的机器安装时间大约是到分钟。此时直到安装结束,计算机自动重启之前,除了输入序列号和计算机信息(随意填写,以及敲到次回车之外,不需要做任何其它操作。系统会自动完成安装。三、驱动的安装()重启之后,将光盘取出,让计算机从硬盘启动,进入XP的设置窗口。()依次按“下一步”,“跳过”,选择“不注册”,“完成”。()进入XP系统桌面。()在桌面上单击鼠标右键,选择“属性”,选择“显示”选项卡,点击“自定义桌面”项,勾选“我的电脑”,选择“确定”退出。()返回桌面,右键单击“我的电脑”,选择“属性”,选择“硬件”选项卡,选择“设备管理器”,里面是计算机所有硬件的管理窗口,此中所有前面出现黄色问号+叹号的选项代表未安装驱动程序的硬件,双击打开其属性,选择“重新安装驱动程序”,放入相应当驱动光盘,选择“自动安装”(如果对电脑操作比较熟悉的话,也可以直接指定从光盘安装驱动程序,系统会自动识别对应驱动程序并安装完成。(SM为主板,AUDIO为声卡,VGA为显卡,需要首先安装主板驱动,如没有SM项则代表不用安装。安装好所有驱动之后重新启动计算机。至此驱动程序安装完成。四、优化系统原版系统是没有进行任何优化和精简的系统,具有较强的完全性和稳定性。用户完全可以根据自己需要进行一定优化和精简,比如减少启动项提升计算机开机速度、删减一些不常用的软件等。

您可能感兴趣的文章:

相关文章