昨天在使用Debug工具的时候,想看看BIOS第一条指令的跳转之后是如何的。
在16位80x86的机器上,机器上电,第一条指令的地址在FFFF:0000处。我想尽管我在Win7的cmd命令中的虚拟8086环境下,但在这环境里应该和实际的实模式是差不多的,比如BIOS的所在的位置什么的。
于是使用debug
放心的输入-u ffff:0000

随便一看,恩,第一条指令的确是一个长跳转。再仔细一看,不对头啊,怎么还有FFFF:0011及之后的东东呢?按道理讲应该最后顶多是ffff:000f啊。
然后用d命令一看

前面5个字节的长跳转指令,跟着一些BIOS的信息,比如出厂时间等等,然后还真的有FFFF:000F之后的东西啊。
后来想想,难道地址回绕了?溢出之后当从0000:0000开始算起了?
那看一下0000:0000吧
发现不对啊,似乎对应不起来,然后就搞不懂了。在网上搜索一番,发现了这个帖子。
转载上来(转载的内容是考虑的FFFF:FFFF的回绕,其实应该从FFFF:000F之后就开始了)
以下部分属于转载:
debug &n

本文探讨了8086处理器在1M地址空间后的回绕问题,通过Debug工具观察到FFFF:000F之后的地址内容,解释了地址回绕的原因和早期PC如何通过A20地址线控制实现兼容性。在现代操作系统如Win7的cmd中,由于A20地址线默认开启,无法直接观察到地址回绕的效果。
最低0.47元/天 解锁文章
758

被折叠的 条评论
为什么被折叠?



