gpt4 book ai didi

x86-16 - 为什么8085从00000开始而8086从FFFF0开始?

转载 作者:行者123 更新时间:2023-12-05 01:25:49 25 4
gpt4 key购买 nike

我无法理解 CS:IP 在 8085-86 中生成的 Physical Address 的不同起始地址。这是因为堆栈吗?我认为Stack的概念在8085之前就存在了。请帮忙。谢谢。

最佳答案

我认为答案在于中断向量表 (IVT)。 IVT 是在 8086 处理器中引入的。 8085(其设计基于 8080 处理器)使用不同的方法来处理中断。在 8086/8088 上,IVT 占用内存的前 1024 个字节(256 个中断向量,每个中断向量由 4 个字节组成)。因此,该区域中不能有任何可执行代码。从 80286 开始,x86/x64 处理器有一个可以更改的中断描述符表寄存器 (IDTR),以便软件可以将中断向量表重新定位到处理器地址空间中任何方便的地方。

从技术上讲: - 8085 没有 CS 寄存器,地址空间限制为 64KiB - 8085 上电后从地址 0x0000 开始执行 - 在 x86 和 x64 系列处理器上的执行从可寻址内存的最后 16 个字节开始。因此在具有 20 个地址线的 16 位处理器上,这将是线性地址 0xFFFF0。在 32 位处理器上它的地址是 0xFFFFFFF0,在 64 位处理器上它是 0xFFFFFFFFFFFFFFFF0。系统 ROM 必须以能够响应这些地址的方式连接到内存总线。

查看 Intel processor manuals求官方解释。

关于x86-16 - 为什么8085从00000开始而8086从FFFF0开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10380388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com