在實模式和 32 位保護模式下,16 位尋址用于通過 ModR/M 位元組參考記憶體。此尋址僅在使用傳統前綴的 i386 指令中受支持,在 x86-64 指令中完全不支持。
但是,8 位特定操作碼也使用 ModR/M 位元組,這讓我懷疑原始16 位 x86 指令集中是否存在 8 位尋址。盡管 8 位地址非常有限,但完全有可能以與具有不同操作碼的 16 位指令相同的樣式對此類指令進行編碼。
例如,而不是
add (bx, si), ax
你會有
add (bl, dh), al
很難找到任何 pre-i386 檔案,所以我一無所知。這曾經支持過嗎?
uj5u.com熱心網友回復:
僅通過XLAT有效mov al, [bx al](不能編碼為 a mov)。
現代 16 位實模式使用與 8086 相同的機器代碼格式,這就是向后兼容的含義。(只有非常小的差異,比如現在指令長度限制為 15 個位元組,而 8086 會愉快地獲取無限數量的前綴,即使這意味著將 IP 包裝在一個充滿rep前綴的 64k 段中。)
NASM x86 16 位尋址模式列出了所有 ModRM 模式:它們僅包括 16 位暫存器。
add [bx si], al是可編碼的(as 00 00),但add [bl dh], al不是。
如果您想查看歷史檔案,可以使用 8086 手冊的 PDF 格式。此外,8086 的 ISA 的主要架構師 Stephen Morse 寫了一本書“8086/8088 入門”,現在可以在他的網站上免費獲得:https ://stevemorse.org/8086/ 。
8086 的早期祖先,例如只有 8 位暫存器的 8080,不是x86 CPU。
有關的:
- 在 x86-64 索引尋址模式中使用 8 位暫存器- 不,地址編碼的 32/64 位模式版本
ModRM [ SIB]也不能做到這一點。 - 參考記憶體位置的內容。(x86 尋址模式)(32 位和 64 位)
- 8086 中通用暫存器的區別:[bx] 有效,[cx] 無效?
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/519520.html
標籤:Intel Collective 部件x86x86-16寻址模式
下一篇:使用個性系統呼叫使堆疊可執行
