我知道它使用物理地址=段寄存器< < 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. Windbg + IDA:計算模塊中的地址
- 4. 如何計算地址簿中的「kABPersonBirthdayProperty」?
- 5. 如何進行地址計算?
- 6. 如何在REAL模式下將彙編程序返回到32位地址?
- 7. 如何在橫向模式下正確顯示iPhone地址簿?
- 8. 以16位模式加載地址
- 9. 如何計算在ArangoDB模式?
- 10. 用戶地理位置到最近的地址計算
- 11. 如何使用兩個16位寄存器製作20位地址?
- 12. 如何獲得本地計算機的計算機名稱和IP地址
- 13. 如何在流星模式中實現地理位置
- 14. 紋理地址模式鉗位,它是如何工作的?
- 15. 在用戶計算機上選擇下載地址
- 16. 20位整數運算
- 17. sed地址模式
- 18. 如何從Perl中確定本地計算機的IP地址?
- 19. 如何使用按位運算符實現模式2^n-1
- 20. 計算地理位置
- 21. 如何計算以下表達式
- 22. 如何正確計算以下等式?
- 23. 如何計算下面的公式
- 24. 如何在Java中獲取計算機的WAN IP地址?
- 25. 在R計算模式
- 26. 在現代計算機中如何實現字節尋址?
- 27. Drupal下載計數模塊 - 如何計算下載次數
- 28. 如何在內核模塊開發下解析IP地址的Mac地址?
- 29. 如何計算Fortran系列的模式
- 30. 如何計算計算機體系結構中的物理地址?
我明白了,謝謝!所以本質上地址計算不使用傳統的16位ALU(?) – Oxdeadbeef 2011-05-04 08:19:28
@ 0xdeadbeef:正確,它在BIU中有它自己的專用「迷你ALU」。 – DarkDust 2011-05-04 08:31:00