首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引导扇区中的最终签名是什么?是0xaa55还是0x55aa?

引导扇区中的最终签名是什么?是0xaa55还是0x55aa?
EN

Stack Overflow用户
提问于 2021-09-26 08:26:55
回答 1查看 98关注 0票数 2

在研究BIOS和引导时,我发现使用0xaa55作为签名来检查512字节的引导扇区是否损坏。现在,在某些情况下,它被提到为0xaa55,在一些情况下是0x55aa。我很困惑。我也认为这是因为CPU的字节顺序。但是字符顺序不应该是单词的吗?因此,0000aa55或55aa0000 (假设是32位字)。或者是因为引导扇区本身就有16位字?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-27 04:46:43

从历史上看,PC的功能早于32位x86 CPU,而我们所知的引导过程可以追溯到16位8086。有些元素可能比这更老,但那比我的时代早了一点。

您说得对,这种混淆与endian相关。512字节引导扇区的最后一个字节是aa,它之前的字节是55。因此,通常将签名称为55aa,因为这是它在引导扇区中按字节显示的顺序。这也是它在内存中作为单个字节出现的顺序-当在0000:7c00加载引导扇区时,7dff处的字节是aa

但是,当在小端x86上表示为16位字时,它就是aa55。由于这种顺序,通常会将块结束签名放在汇编文件中,如下所示:

代码语言:javascript
复制
.word 0xaa55          # this is AT&T syntax

因为它比两个.byte指令简单,这两个指令的顺序是相反的:

代码语言:javascript
复制
.byte 0x55
.byte 0xaa

所以人们有时会以这种方式提到签名。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69333080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档