开发一个最简单的机器人“操作系统”new

开发一个最简单的机器人“操作系统”new

ID:34479868

大小:155.49 KB

页数:5页

时间:2019-03-06

开发一个最简单的机器人“操作系统”new_第1页
开发一个最简单的机器人“操作系统”new_第2页
开发一个最简单的机器人“操作系统”new_第3页
开发一个最简单的机器人“操作系统”new_第4页
开发一个最简单的机器人“操作系统”new_第5页
资源描述:

《开发一个最简单的机器人“操作系统”new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、开发一个最简单的机器人“操作系统”写在前面写一个PC机的引导程序比我们想象的容易很多,事实上所需要了解的只是知道PC机是怎样启动的。在网上看到不少类似的文章,说的很多,有的很麻烦,笔者觉得仅仅是写一个引导程序完全没有必要牵涉太多东西,知道足够的知识用于去实际地写一个出来看看是很多人最初的目的,那这篇文章就刚好适合你了。这篇文章的立足点就是短、简单、一看就懂,而又不会看完了什么都不知道就写出一个连自己都看不懂的代码。现在,让我们开始引导程序初探!什么是引导程序很多文章中把写一个引导程序称作是开发一个

2、最简单的操作系统,其实这是非常片面的,引导程序算不上操作系统,虽然此程序可以运行在裸机上。所谓引导程序,直观的说就是在系统加电启动时BIOS第一个执行的程序。引导程序要想发挥作用,让机器识别,就必须安置在一个特别的位置,这个位置就是磁盘的第一个扇区(0面0磁道1扇区,备注:没有0扇区),而一个包含引导程序的扇区叫作引导扇区。一个合法的引导扇区(1)通常包含512个字节(当然喽,一个扇区通常本来就是512个字节),(2)并且以0xAA55这样一个占用两个字节的数据结尾作为标志符。(备注:0x前缀说明

3、这是一个十六进制数)。也就是如果把引导扇区看成一个字符数组的BootSector[]话(因为一个字符,即char,刚好为一个字节),那么这个数组就拥有512个元素,如果用C语言申明的话即为charBootSector[512];接着,一个合法的引导扇区必须以0xAA55结束,即BootSector[510]=0x55;BootSector[511]=0xAA;除了结束标志必须符合上面的要求之外,中间虽然还有510字节的空间,但执行代码可以少于510字节,用无意义字符(通常用0x0)填充剩余空间即可

4、。过程PC是通过BIOS来启动机器的,当PC机加电之后BIOS启动相应的程序完成机器的自检,然后就寻找可以引导的驱动器,即大家通常所说的启动盘。在BIOS中可以设置从哪个盘启动,但通常总要检查硬盘,所以当BIOS检查完前面的启动设备之后,如果没有发现任何引导程序,那么就会开始检查主硬盘,即C盘。如果此时在C盘上找到了合法的引导扇区,那么就会将引导扇区的内容(共512字节)装载到内存0x0000:07C00处。此时BIOS把控制权限交给这段引导程序。那么,接下来,引导程序通常会简单的执行一些指令,比

5、如输出一段文字,显示一个启动界面等等,但最重要的,引导程序将会启动一个更大的程序,然后把权限交给他,这通常就是我们所说的操作系统内核。额外补充一句,目前对操作系统的定义有不少,但笔者比较赞成的观点如下:从形式上看,操作系统是:从计算机启动到结束的过程中始终在运行的程序。而这通常就是我们所说的操作系统内核。从功能上看,操作系统:管理和维护所有的硬件、软件、数据资源,并为上层应用或服务提供一个抽象的接口。从某种层面上看,第二中定义更接近于虚拟机。(闲话一段^_^)如何手制作引导扇区现在,已经了解了这些

6、基本的概念,那么,如何动手制作这样的引导扇区呢?这个过程十分简单,(1)首先按照要求写一个合法的引导程序(通常用汇编,机器码也可以,呵呵);(2)然后将其通过汇编程序,如NASM汇编成二进制文件;(3)最后,将这个二进制文件写入到目标盘的第一个扇区。跟我做上面说的很简单吧?那好,现在我们来写一个吧!第一步:写代码;文件名:boot.asm;代码如下,注意,汇编中通常用“;”来表示注释内容;此段代码参考《自己动手写操作系统》(于渊);;初始化函数org07c00h;告诉编译器将此段程序加载;到内存0

7、x0000:07C00处movax,csmovds,axmoves,axcallPrintStr;调用屏幕打印函数jmp$;无限循环PrintStr:;屏幕打印函数movax,HelloWorld;将字符串拷贝到axmovbp,ax;es:bp=串地址movcx,24;cx=串长度movax,01301h;ah=13,al=01hmovbx,000ch;页号为0(bh=0)黑底红字(bl=0ch,高亮)movdl,0int10h;10h号中断retHelloWorld:db"WelcometoLe

8、e'sOS*_*";字符串负值times510-($-$$)db0;用0x0填充剩余的空间使生成;的二进制代码刚好为512字节dw0xaa55;结束标志;整个程序结束!很短吧第二步:汇编假设你已经安装了NASM程序,那么进入命令行模式,然后输入以下命令:C:[PATH]asmboot.asm-oboot.bin其中“C:[PATH]”为boot.asm代码文件所在位置。现在如果不出意外的话,你已经拥有了boot.bin二进制文件,这个就是引导程序!第三步:制作引导盘由于不能随

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。