注册 登录
编程论坛 汇编论坛

[求助]20位地址线的cpu段地址和偏移地址允许取值范围?

shuihuibian 发布于 2007-08-05 20:03, 1750 次点击
20位地址线的cpu段地址和偏移地址允许取值范围?
书上讲 偏移地址 最大64k 那偏移地址 范围应该是 0000~ffff 又因为 地址线是20位 推算出 段地址范围 应该是 0000~f000
但在机器上实验(用debug)却 可以找到 ffff:fff0 这样的地址 好象这已经超出了 20位地址线能表示的范围
但可能我的机子是32位的
如果假设 我实验机是32位的地址线 但实验中发现debug中最大的地址是ffff:fff0 如此推断此没达到32位
其次 如果机器是32位的地址线 那也就没必要使用“物理地址=段地址*16+偏移地址”的寻址方式 那32位机器中debug d 命令中 段地址 和偏移地址 是何种含义呢?
5 回复
#2
danielliujp2007-08-05 21:16

这个应该跟CPU 的工作方式有关吧,在实方式下是用段地址与偏移地址算,在保护方式下就与描述符表有关了

#3
robertluo2007-08-11 08:40
应该是一样的啊
#4
redhao2007-08-12 16:14

主要看cpu数据线有多少?

#5
W6498972007-08-15 22:47
20位数据总线是指cpu和外部的连线,其实8086内部是16位的,因为cpu内部有一个叫指令加法的东西,才使得它可以寻址20位的地址空间即1m,
#6
Joforn2007-08-21 23:33
以下是引用shuihuibian在2007-8-5 20:03:15的发言:
20位地址线的cpu段地址和偏移地址允许取值范围?
书上讲 偏移地址 最大64k 那偏移地址 范围应该是 0000~ffff 又因为 地址线是20位 推算出 段地址范围 应该是 0000~f000
但在机器上实验(用debug)却 可以找到 ffff:fff0 这样的地址 好象这已经超出了 20位地址线能表示的范围
但可能我的机子是32位的
如果假设 我实验机是32位的地址线 但实验中发现debug中最大的地址是ffff:fff0 如此推断此没达到32位
其次 如果机器是32位的地址线 那也就没必要使用“物理地址=段地址*16+偏移地址”的寻址方式 那32位机器中debug d 命令中 段地址 和偏移地址 是何种含义呢?

8086实际寻址是20位,但系统把内存分段,所以实际地址是 段地址左移四位+偏移地址

1