我知道它使用物理地址=段寄存器< < 4 +偏移寄存器。 儘管這兩個寄存器都是16位,8086如何處理20位加操作?如何在實模式下計算20位地址
回答
總線接口單元包括段寄存器,加法器,以產生20位的地址和指令預取隊列。一旦該地址從BIU發出,指令和數據字節就從存儲器中取出,並填充先入先出6字節隊列。
查看名爲「8086_Internal_Block_diagram_enotes.pdf」的文檔,很容易通過Google找到。另請參閱this document,關於總線接口單元的部分。
因此,如果您願意的話,處理器會根據需要使用專用的內部20位寄存器生成這些20位地址。
當你將一個16位的數字4位移到左邊時,你基本上創建了一個20位的數字。偏移量表示你將走多遠。請參閱Wikipedia article on Real mode addressing。
實施例:
0x0001 << 4 -> 0x00010 (5 sets of 4 bits in each hex digit -> 20 bits)
我想這個問題更多的是:因爲所有的寄存器都是16位的,處理器如何處理一個20位的值,這對於一個正常的寄存器來說太大了。 – DarkDust 2011-05-04 08:10:30
@DarkDust是的,我也是這樣解釋它的。你的問題比較完整,我只是試圖直接解決問題。 – jonsca 2011-05-04 08:12:05
@ DarkDust,jonsca,正好:) – Oxdeadbeef 2011-05-04 08:20:05
- 1. 如何計算下一個ipv6地址?
- 2. 計算模式如下
- 3. 在32位模式下計算64位值
- 4. 如何計算下一個IP地址具有位表示的IP?
- 5. Windbg + IDA:計算模塊中的地址
- 6. 如何計算16位地址指針中的頁面幀
- 7. 如何計算地址簿中的「kABPersonBirthdayProperty」?
- 8. 如何進行地址計算?
- 9. 如何在REAL模式下將彙編程序返回到32位地址?
- 10. 在x86實模式下選擇堆棧指針地址(對齊)
- 11. 如何從ip地址計算mac地址
- 12. 如何讓Azure計算仿真器在32位模式下運行?
- 13. X86指令在實模式下關閉計算機?
- 14. 如何在橫向模式下正確顯示iPhone地址簿?
- 15. :資源下載樣式地址URL的定位可能實現
- 16. 如何計算在ArangoDB模式?
- 17. 以16位模式加載地址
- 18. 計算標籤的地址
- 19. 如何讓CCCrypt在另一種模式下計算AES?
- 20. 如何計算Windows Phone 8在橫向模式下的角度
- 21. 按位模計算
- 22. 用戶地理位置到最近的地址計算
- 23. 如何使用兩個16位寄存器製作20位地址?
- 24. 如何獲得本地計算機的計算機名稱和IP地址
- 25. 如何在流星模式中實現地理位置
- 26. 如何從EC2實例文件下載到本地計算機
- 27. 這可以在保護模式或實地址模式下運行,我如何更改運行的內容?
- 28. 紋理地址模式鉗位,它是如何工作的?
- 29. 計算模式
- 30. 在彙編中計算有效地址
我明白了,謝謝!所以本質上地址計算不使用傳統的16位ALU(?) – Oxdeadbeef 2011-05-04 08:19:28
@ 0xdeadbeef:正確,它在BIU中有它自己的專用「迷你ALU」。 – DarkDust 2011-05-04 08:31:00