物理地址 = 段地址*10H + 偏移地址


程序如何執行:

     CPU先找到程序在內存中的入口地址 -- 地址總線

          (8086有20根地址總線,每一根可以某一時傳0或1,

            20位的二進制數字可以表示的不同的數字的個數是2^20=1048576

           1048576 byte/1024=1024 KB    (注:8bit(位)=1Byte(字節) 1024Byte(字節)=1KB 1MB=1024kb=1024x1024b)

           1024KB/1024=1 MB

           所以尋址范圍為2的20次方byte=1M

          )

          因此有多少根地址總線(總線寬度)決定了CPU內存尋址的范圍

          以上也可以理解為:CPU是多少位的尋址就是2的位的次方,ex:32位CPU尋址范圍就是2的32次方=4G

          即使此刻內存容量有8G,CPU也只能夠利用當中的低4G中的內存地址,高4G地址無法尋址到

     然后通過一定的途徑將程序輸送給CPU存於CPU的對應的寄存器中,再去執行 -- 數據總線

     如果CPU需要控制外圍設備、是加是減、或是讀是寫內存等 -- 控制總線

     CPU對數據的+-/*等運算 -- 運算器    

     總結:CPU的組成=寄存器+運算器+控制器+內部總線(連接各種器件在它們之間傳送數據)

      控制器

          |                    |

     -------------------------------------------  內部總線

              |                          |

         運算器                                      CPU結構圖

 

什么是CPU的寄存器:

    寄存器分為通用寄存器、段寄存器...

    寄存器用於存放CPU要執行的數據或指令

    例如:8086CPU的AX通用寄存器結構如下:

   

物理地址的表示方法:

    問題:8086主板地址線20根,所以進行尋址操作一次需要傳送20位的二進制數據

                但是CPU最大一次只能夠傳送16位的二進制數據,那如何處理呢?

    例子:如何將 兩個3位的數 進化為 一個4位數

               ex:   23        -->          234 ×10       +           xxxx

                          ↑                                ↑                       ↑

                      偏移地址   -->    物理地址

     以上的類似實現在CPU中通過地址加法器實現:

     實際內存地址=基地址:偏移地址

     實際內存地址=基地址×16(×16進位,類似10進制中的×10進位) + 偏移地址

     demo:1402:100

                    1402H (16進制數 4*4=16位的二進制數)  ×  16    + 0100

             即   14020H       --基地址×16

                +    0100H       --偏移地址

                --------------

                    14120H       --實際物理地址

計算機中是不是這么表示的呢?

WIN+R --> cmd,進入Widows環境下的命令行下  輸入debug命令  

[plain] view plain copy
  1. C:\Documents and Settings\Administrator>debug  

debug工具是DOS/Widows提供的實模式程序調試工具,可以用它檢查內存中任何地方的字節以及修改任何地方的字節。

它可以用於逐指令執行某個程序以驗證程序運行的正確性,

也可以追蹤執行過程、比較一個指令執行前后的值以及比較與移動內存中數據的范圍,讀寫文件與磁盤扇區等

輸入d命令查看寄存器的內容:

[plain] view plain copy
  1. -d  
  2. 0B5D:0100  02 00 EB 0E 50 B0 03 B4-FF E8 9E 00 58 EB 03 E8   ....P.......X...  
  3. 0B5D:0110  1D 01 58 C3 F9 C3 55 51-26 8A 4F 08 34 00 4C 0B   ..X...UQ&.O.4.L.  
  4. 0B5D:0120  74 0D 8D 6F 09 E8 19 04-73 08 E8 0E 00 E2 F6 F9   t..o....s.......  
  5. 0B5D:0130  EB 06 2E 89 2E 5D 91 F8-59 5D C3 26 80 7E 00 00   .....]..Y].&.~..  
  6. 0B5D:0140  74 03 45 EB F6 45 C3 2E-80 0E 56 91 10 E8 C6 FF   t.E..E....V.....  
  7. 0B5D:0150  72 4A 2E 80 26 56 91 EF-50 2E A1 59 91 2B C6 2E   rJ..&V..P..Y.+..  
  8. 0B5D:0160  01 06 57 91 58 2E 8B 36-59 91 2E 80 3C 00 75 26   ..W.X..6Y...<.u&  
  9. 0B5D:0170  2E 80 7C FF 3A 75 09 2E-C7 06 4A 91 09 00 EB 1F   ..|.:u....J.....  

 可以看到物理地址的表示方法都是基地址:偏移地址 ex:0B5D:0100

 

在CPU中 基地址 存於 段寄存器,偏移地址 存於通用寄存器


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM