【发布时间】:2022-10-24 18:38:30
【问题描述】:
在实模式和 32 位保护模式下,16 位寻址用于通过 ModR/M 字节引用内存。此寻址仅在使用传统前缀的 i386 指令中受支持,在 x86-64 指令中完全不支持。
但是,ModR/M 字节也被 8 位特定操作码使用,这让我怀疑 8 位寻址是否存在于原来的16 位 x86 指令集。尽管 8 位地址非常有限,但完全有可能以与具有不同操作码的 16 位指令相同的样式对此类指令进行编码。
例如,而不是
add (bx, si), ax
你会有
add (bl, dh), al
很难找到任何 pre-i386 文档,所以我一无所知。这曾经支持过吗?
【问题讨论】:
-
FWIW,我不相信。没有人说过“256 字节对任何人来说都应该足够了”;)
-
不,寻址是 a16、a32 或 a64。没有 a8 寻址大小。唯一类似的是
xlatb,它从byte [ds:rbx/ebx/bx+al]加载。 -
8088/86 文档很容易找到原始 iapx88 书的 pdf。我得到了pdf,也可以在亚马逊上以八美元的价格购买原件。嗯,8 美元来自英特尔通过亚马逊销售,二手卖家 5 美元......如果你得到正确的 pdf,即使它是扫描的,你也可以进行文本搜索......
-
20 位地址,不包括 i/o vs mem 信号。段/偏移量,偏移 4 位。这是在英特尔开始将它们分成两本书之前,一本用于硬件,一本用于软件。
-
bitsavers.org 是一个很好的历史文档来源。 Here 例如是 8086 用户手册。您可能还对Retrocomputing Stack Exchange 感兴趣。
标签: assembly x86 x86-16 addressing-mode