实地址模式的问题

发布于 2022-09-23 12:21:13 字数 42 浏览 14 评论 0

这取决于8086当初这种看似"奇怪"的设计,人家的设计就是这样的

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

明天过后 2022-09-30 12:21:13

我不是说了吗?人家处理器就是这么设计的.

拥有 2022-09-30 12:21:13

内部地址中的高12位是全0吗?如果不是全0,在与段寄存器相加后,就有可能与其他段的内容相重叠啊。

我倒是能理解 段寄存器*16+偏移量 来形成 20位地址。

十级心震 2022-09-30 12:21:13

原帖由 c/unix 于 2008-11-30 16:16 发表

我不是这个意思啊。

设计我能理解,比如CS:IP, 就是2个16位的地址形成一个20位的实地址。

可是这个书作者的那句话为什么那么说呢,内部地址不就是保存在段寄存器里的吗,怎么又取高12位和段寄存器相加?

建议找原文对照一下,很多翻译比原文都难理解。

忘东忘西忘不掉你 2022-09-30 12:21:13

这个还是8086的思路

回忆追雨的时光 2022-09-30 12:21:13

原帖由 c/unix 于 2008-11-30 16:08 发表
在看Linux内核分析,前面就卡住了,

实地址模式是根据2个16位的寄存器得到一个20位地址,我没说错吧。

可是下面这句话(画红线部分)该怎么理解呢:

http://blog.chinaunix.net/photo/70442_0811301 ...

他的意思是说:

假如:ds:[0001] = 1000:0001

    0001 0000 0000 0000                          =  ds
+         0000 0000 0000 0001                 = [0001]        ==> '内部地址’的高12位与16位段寄存器相加,低4位不变
----------------------------------------------------------------------
    0001 0000 0000 0000 0001                  = 10001  (结果)

其实就等于 ds 左向移4位

这作者的水平真 TM 的烂~~~~~

这么简单的问题把它描述得这么复杂。

两个我 2022-09-30 12:21:13

原帖由 mik 于 2008-12-1 14:51 发表

他的意思是说:

假如:ds:[0001] = 1000:0001

    0001 0000 0000 0000                          =  ds
+         0000 0000 0000 0001                 = [0001]        ==> '内部地址’的高 ...

还是看 datasheet 好,呵呵。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文