引导扇区的最终签名是什么?是0xaa55还是0x55aa?
引导扇区签名0xaa55与0x55aa差异说明
两种标注的本质区别
两种标注都是正确的,差异来自描述维度的不同:
- 按物理存储的字节序列描述:512字节引导扇区的最后两个字节位置固定,偏移
0x1FE(第510个字节)存储0x55,偏移0x1FF(第511个字节)存储0xAA,按低地址到高地址的顺序拼接单字节值,就会写成0x55aa。 - 按CPU读取的16位字值描述:x86架构采用小端字节序,低地址存储的是字的低字节,高地址存储的是字的高字节,把这两个字节作为一个16位字读取时,得到的数值就是
0xaa55,这也是BIOS执行引导扇区校验时实际匹配的判断值。
字长相关疑问解答
你提到的32位字长的情况不会出现,原因如下:
- 引导扇区校验逻辑是从16位x86 CPU时代就确定的规范,BIOS执行校验时CPU处于16位实模式,默认按16位字长处理数据,和后续系统启动后切换的32位、64位保护模式无关。
- 校验仅针对扇区最后两个字节,不存在按32位字长读取四个字节的逻辑,所以不会出现
0x0000aa55或0x55aa0000的取值情况。
内容的提问来源于stack exchange,提问作者Bug Hunter 219
相关产品推荐
相关产品推荐

