02-一个引导程序的框架——boot.s
抛个砖:电脑启动后,如何加载OS? 引块玉: CPU上电后自动把CS设置为0xF000,段基地址为0xFFFF0000,段长度为64KB,而IP设置为0xFFF0 故,CPU代码指针指向0xFFFFFFF0处,即ROM BIOS存放的位置,开始执行BIOS的硬件自检和初始化功能 在执行完准备加载操作系统的引导程序到0x7c00处前,会检查引导程序是否有效,有效标志0xAA55. 若有效,则跳转到0x7c00处开始执行引导程序(这里是boot.s),否则会转去尝试其它启动设备, 若没有找到则显示“NO ROM BASIC”后死机。 boot.s测试程序: ! ! boot . s Linux0 . 12 内核的bootsect . s的框架 ! 功能:在屏幕上显示“Loading system . . . ”且鸣叫一声 ! ! . global 声明全局标识符,供链接器使用 ( 主要通过这些标识符可合并不同源文件的段 ) ! . global begtext , begdata , begbss , endtext , enddata , endbss ! 三个段定义在同一重叠地址范围中,因此本程序实际不分段 . text begtext : ! 在代码段定义begtext标号 . data begdata : ! 在数据段定义begdata标号 . bss begbss : !