回覆列表
  • 1 # 使用者2849108494430

    1.分配地址編碼

    不管幾位機,儲存器永遠給每個位元組單元分配一個地址編碼!!!

    8086有20個地址線,共有2^20=1024x1024=1M個地址編碼,所以,8086最大儲存空間是1MByte。

    8位機, 1Word=1Byte

    16位機,1Word=2Byte

    32位機,1Word=4Byte

    所以8086,

    1MByte/(2Byte/Word) =0.5MWord=512KWord

    而不等於512KByte。

    2.段地址和段內偏移地址

    在段暫存器Rs(CS,DS,SS,ES)已經確定的情況下,段開始地址是16 x Rs,20位地址,這是1MByte儲存器空間中任何16倍數開始的地址。

    在指令中,

    邏輯地址=Rs:16位段內偏移

    物理地址=16 x Rs + 16位段內偏移

    16位段內偏移,共有2^16個地址編碼,所以段內最大範圍是64KByte。(這是你問題的直接答案。)

    8086內部都是16位暫存器,為了支援大於64KByte的儲存空間,採用,利用地址加法器,把段暫存器Rs乘以16變成20位地址,之後加上16位段內偏移地址的地址生成方案。

    IBM的老沃森曾經說“全球市場只需要5臺計算機就夠了”。所以,在40年前,Intel在設計8086時,以為20位地址就足夠了,能支援1MByte儲存空間,很大啊!

    3.穿越後的super8086

    如果讓你穿越到1978年,你可能在不改變8086內部16位暫存器的情況下,只改變地址加法器,可能會設計出支援更大的儲存空間的super8086,如設計出支援32MByte儲存空間,有25條地址線的super8086。也可以更大!

    只需要改變地址加法器,把段暫存器Rs左移9位!變成25位,之後加上16位偏移地址就行!

    此時,在32MByte空間內,25位段開始地址永遠是512的整數倍位置,而段內空間範圍還是64KByte。

    當然,現在大多數CPU或MCU方案是,32位機,採用32條地址方案,還不夠?採用透過儲存器管理軟體的虛擬儲存器空間管理方案,...。

    新的聲音,

    到了雲計算時代,世界上只需 5 片電腦雲就夠了!

    怎麼可能?歷史上這種模式的發聲很多!

  • 中秋節和大豐收的關聯?
  • 關於義氣的經典句子?