我对引导程序的看法,不足之处请补充,谢谢

zhangze 2003-08-31 10:21:15
微机在进行自检完成之后,会调用中断int 19h将硬盘的0面0磁道1扇区的代码加载到0:7c00h位置开始执行,我们自己的程序代码才开始真正的控制计算机.这个扇区被称为mbr(master boot record).这个扇区中的程序被称为引导程序.
由于引导程序是计算机执行我们编写的第一个程序,所以这个程序的成功与否直接关系到后来的操作系统是否能够加载成功,能够执行.以前不少病毒也喜欢在这里做点手脚.一些具有硬盘还原功能的软件也会使用这里的内容.我不想说他们如何破环如何还原,这要结合许多其他的内容,像硬盘分区表等等,只想谈谈这部分程序编写的规则.
一 计算机在自检完成之后所用的是实模式,如果你想使用保护模式,就必须自己动手来进入保护模式,所以原来在保护模式下正常工作的程序如果直接放在这部分,可能不能执行成功.
二 计算机自检完成后,所提供的接口就是bios中断,还有一部分中断是其他板卡在计算机自检过程中板卡自己设置了的中断,所以我们所说的dos中断在程序中是没有办法使用的.
三 计算机在最初加载的时候只会加载1个扇区的内容,所以如果你的程序的内容大于512字节(1个扇区的大小),你必须在程序执行完开始的512字节完成前将其他的部分加载到合适的位置(注:).如果引导是从软盘引导的,应该在引导完成之后将软盘驱动器关闭,软盘驱动器是不会自行关闭的,光盘应该也一样.
四 引导程序没有文件头,从第一各字节开始就是可执行代码,数据代码不可以放在执行代码的前面.像exe之内的具有文件头的可执行程序也不能直接作为引导程序,由于com程序是直接的可执行代码,如果满足了上面的条件,就可以作为引导程序.我曾经将一个简单的作图程序变为com程序放到mbr部分并且执行成功.
以上就是我对引导程序编写的一些看法.我并没有谈到分区表等等,因为我认为这部分是认为定义的,只是为了让别的操作系统可以辨识出来,让操作系统可以辨认分区.
注:计算机在自检过程中,会监测板卡芯片中的程序,并且转入其中执行.显卡就是在这个时候将内存中的a0000h部分作为显存在内存中的映射.硬盘还原卡也是在这个时候使用自己的int 13中断来替换bios的int 13中断,从而达到可以还原的目的.(对于硬盘还原卡,我并没有真实的去研究它是如何还原,从原理上推断应该是这样的)引导程序不应该为了自己的目的而影响了别的程序或者硬件的工作,除非你认为它是必要的.
...全文
40 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawndu 2003-09-04
  • 打赏
  • 举报
回复
楼上的,楼上的楼上牛人啊,保存
spbabyba 2003-09-04
  • 打赏
  • 举报
回复
PC机开机后CPU从0000开始执行.就是BIOS起始地址. BIOS 进行自检,结束后调用INT19.
W32API 2003-08-31
  • 打赏
  • 举报
回复
是的

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧