24位地址和24位算术与24位地址与16位地址的算术之间的区别?

问题描述 投票:1回答:2

我在c167文档中找到了有关指针算术的注释。有两个宏_huge和_shuge。

来自Doku的引用:

_ huge或_shuge。大量数据可能位于内存中的任何位置,您可以

也请使用24位地址引用它。但是,地址算术是

使用完整地址(24位)完成。 Shuge数据也可能是

在内存中的任何位置,您也可以使用24位地址。

但是,地址算术是使用16位地址完成的。

那么_huge与_shuge的用法有什么区别?在我的理解中,指针的算法是使用距起始地址的偏移量

到目前为止我所了解的示例:

&a [0] +1,其中a的一个元素为int32&a [0]给我地址第一要素的s等于0x1234211 + 32Bit对于例如。**

从上面考虑注释时有什么区别,_huge和_shuge有什么区别?

最诚挚的问候

c++ microcontroller pointer-arithmetic
2个回答
1
投票

在(旧的?)旧的8086家庭模式寻址中使用了巨大的字符。这些是具有24位地址总线的16位处理器。一个完整的地址由一个段(16位)地址和一个偏移量(再次为16位)给出,其公式如下:

linear_address = segment * 16 + offset

通过先将两个地址转换为24位线性地址并减去该值来计算2个_huge地址之间的差,而对于_shuge,分别减去段和偏移量。

示例0010:1236-0011:1234如果以_huge0001:0002计算为_shuge,则将给出0000:0012(18)>


1
投票

在此PDF的第17页(标记为第7页)上有倾斜的说明:https://www.tasking.com/support/c166/c166_user_guide_v4.0.pdf

© www.soinside.com 2019 - 2024. All rights reserved.