在前面的预备知识里,我们已经知道,处理器加电或者复位之后,如果硬盘是首选的启动设备,那么,ROM-BIOS 将试图读取硬盘的0 面0 道1 扇区。传统上,这就是主引导扇区(Main Boot Sector,MBR)。
读取的主引导扇区数据有512 字节,ROM-BIOS 程序将它加载到逻辑地址0x0000:0x7c00处,也就是物理地址0x07c00 处,然后判断它是否有效。
一个有效的主引导扇区,其最后两字节应当是0x55 和0xAA。ROM-BIOS 程序首先检测这两个标志,如果主引导扇区有效,则以一个段间转移指令jmp 0x0000:0x7c00 跳到那里继续执行。
一般来说,主引导扇区是由操作系统负责的。正常情况下,一段精心编写的主引导扇区代码将检测用来启动计算机的操作系统,并计算出它所在的硬盘位置。然后,它把操作系统的自举代码加载到内存,也用jmp 指令跳转到那里继续执行,直到操作系统完全启动。
在本章中,我们将试图写一段程序,把它编译之后写入硬盘的主引导扇区,然后让处理器执行。当然,仅仅执行还不够,还必须在屏幕上显示点什么,要不然的话,谁知道我们的程序是不是成功运行了呢?
通过本章的学习,我们可以对处理器如何执行指令、如何访问内存以及如何进行算术逻辑运算有一个最基本的认知。