精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎樣通過改變寄存器中的內容實現對CPU的控制呢?

冬至子 ? 來源:Flashield ? 作者:Flashield ? 2023-09-20 15:49 ? 次閱讀

寄存器

寄存器是CPU中程序員可以用指令讀寫的部件,通過改變寄存器中的內容實現對CPU的控制。

  • 運算器進行信息處理;
  • 寄存器進行信息存儲
  • 控制器控制各種器件進行工作;
  • 內部總線連接各種器件,在它們之間進行數據的傳送。

2.1 通用寄存器

8086CPU的所有寄存器都是16位的,可以存放兩個字節。AX、BX、CX、DX這4個寄存器通常用來存放一般性的數據,被稱為通用寄存器。8086CPU的上一代CPU中的寄存器都是8位的,為了保證兼容,8086CPU的AX、BX、CX、DX這4個寄存器都可分為兩個可獨立使用的8位寄存器來用:

  • AX可分為AH和AL;
  • BX可分為BH和BL;
  • CX可分為CH和CL;
  • DX可分為DH和DL。圖片

2.2 字在寄存器中的存儲

8086CPU可以一次性處理以下兩種尺寸的數據。

  • 字節 :記為byte,一個字節由8個bit組成,可以存在8位寄存器中。
  • :記為word,一個字由兩個字節組成,這兩個字節分別稱為這個字的高位字節和低位字節。一個字可以存在16位寄存器中。

2.3 幾條匯編指令

  • 匯編指令不區分大小寫。
  • 在進行數據傳送或運算時,要注意指令的兩個操作對象的位數應當是一致的。

2.4 物理地址

所有的內存單元構成的存儲空間是一個一維的線性空間,每一個內存單元在這個空間中都有唯一的地址,我們將這個唯一的地址稱為物理地址。CPU通過地址總線送入存儲器的,必須是一個內存單元的物理地址。

2.5 16位結構的CPU

16位結構(16位機、字長為16位等常見說法,與16位結構的含義相同)描述了一個CPU具有下面幾方面的結構特性。

  • 運算器一次最多可以處理16位的數據;
  • 寄存器的最大寬度為16位;
  • 寄存器和運算器之間的通路為16位。

2.6 8086CPU給出物理地址的方法

8086CPU采用一種在內部用兩個16位地址合成的方法來形成一個20位(地址總線)的物理地址。當8086CPU要讀寫內存時:

  1. CPU中的相關部件提供兩個16位的地址,一個稱為段地址,另一個稱為偏移地址;
  2. 段地址和偏移地址通過內部總線送入一個稱為地址加法器的部件;
  3. 地址加法器將兩個16位地址合成為一個20位的物理地址;
  4. 地址加法器通過內部總線將20位物理地址送入輸入輸出控制電路;
  5. 輸入輸出控制電路將20位物理地址送上地址總線;
  6. 20位物理地址被地址總線傳送到存儲器。

地址加法器采用物理地址=段地址×16+偏移地址的方法用段地址和偏移地址合成物理地址。

2.7 “段地址×16+偏移地址”的本質含義

“段地址×16+偏移地址=物理地址”的本質含義是:CPU在訪問內存時,用一個 基礎地址 (段地址×16)和一個相對于基礎地址的偏移地址相加,給出內存單元的物理地址。

2.8 段的概念

內存并沒有分段, 段的劃分來自于CPU ,由于8086CPU用“基礎地址(段地址×16)+偏移地址=物理地址”的方式給出內存單元的物理地址,使得我們可以用分段的方式來管理內存。

有兩點需要注意:段地址×16必然是16的倍數,所以一個段的起始地址也一定是16的倍數;偏移地址為16位(寄存器位數),16位地址的尋址能力為64KB,所以一個段的長度最大為64KB。

“數據在21F60H內存單元中。”這句話對于8086PC機一般不這樣講;而是如下說法:

  1. 數據存在內存20001F60單元中;
  2. 數據存在內存的2000H段中的1F60H單元中。

2.9 段寄存器

段地址在8086CPU的段寄存器中存放。8086CPU有4個段寄存器:CS、DS、SS、ES。當8086CPU要訪問內存時由這4個段寄存器提供內存單元的段地址。

2.10 CS和IP

CS和IP是8086CPU中兩個最關鍵的寄存器,它們指示了 CPU當前要讀取指令的地址

  • CS為代碼段寄存器;
  • IP為指令指針寄存器。

任意時刻,CPU將CS:IP指向的內容當作指令執行。具體的工作過程:

  1. 從CS:IP指向的內存單元讀取指令,讀取的指令進入指令緩沖器;
  2. IP:=IP+所讀取指令的長度,從而指向下一條指令;
  3. 執行指令。轉到步驟1,重復這個過程。

在8086CPU加電啟動或復位后(即CPU剛開始工作時)CS和IP被設置為CS= FFFFH,IP=0000H,即在8086PC機剛啟動時,CPU從內存 FFFF0H單元中讀取指令執行,FFFF0H單元中的指令是8086PC機開機后執行的第一條指令。

2.11 修改CS、IP的指令

在CPU中,程序員能夠用指令讀寫的部件只有寄存器,程序員可以通過改變寄存器中的內容實現對CPU的控制。

能夠改變CS、IP的內容的指令被統稱為 轉移指令 。若想同時修改CS、PP的內容,可用形如“jmp段地址:偏移地址”的指令完成。

jmp 2AE3:3 #執行后:CS=2AE3H,IP=0003H,CPU將從2AE33H處讀取指令。
jmp 3:0B16 #執行后:CS=0003H,IP=0B16H,CPU將從00B46H處讀取指令。

若想僅修改IP的內容,可用形如“jmp某一合法寄存器”的指令完成。

jmp ax, #指令執行前:ax=1000H,CS=2000H,IP=000H
        #指令執行后:ax=1000H,CS=2000H,IP=1000H
jmp bx, #指令執行前:bx=0B16H,CS=2000H,IP=0003H
        #指令執行后:bx=0B16H,CS=2000H,IP=0B16H
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 控制器
    +關注

    關注

    112

    文章

    16214

    瀏覽量

    177479
  • 寄存器
    +關注

    關注

    31

    文章

    5325

    瀏覽量

    120052
  • 存儲器
    +關注

    關注

    38

    文章

    7455

    瀏覽量

    163623
  • PC機
    +關注

    關注

    2

    文章

    201

    瀏覽量

    28556
  • 加法器
    +關注

    關注

    6

    文章

    183

    瀏覽量

    30093
收藏 人收藏

    評論

    相關推薦

    解析CPU寄存器

    8位寄存器在16位寄存器,而16位寄存器在32位寄存器。
    發表于 09-19 10:10 ?3992次閱讀

    使用FPGA通過SPI總線控制AD9266寄存器無法改變寄存器

    使用FPGA通過SPI總線控制AD9266寄存器,可以回讀寄存器默認值,但是無法改變寄存器值。不
    發表于 01-16 11:52

    怎樣通過寄存器的輸出來控制GPIO從而點亮LED

    GPIO端口的結構部件是由哪些部分組成的?GPIO的工作模式有哪幾種?怎樣通過寄存器的輸出來控制GPIO從而點亮LED
    發表于 11-29 07:33

    CPU的主要部件之寄存器詳解

    寄存器寄存器CPU中程序員可以用指令讀寫的部件,CPU的主要部件是寄存器,程序員通過
    發表于 12-10 06:02

    怎樣通過寄存器控制STM32F4 IO口的高低電平

    怎樣通過寄存器控制STM32F4 IO口的高低電平?并實現一個經典的跑流水燈程序?
    發表于 02-11 08:02

    Audio HAL控制驅動寄存器是如何實現

    Audio HAL控制驅動寄存器是如何實現的?[RK3288][Android6.0] 用戶空間對音頻寄存器
    發表于 03-10 08:00

    CPU寄存器詳解

    計算機是一種數據處理設備,它由CPU和內存以及外部設備組成。CPU負責數據處理,內存負責存儲,外部設備負責數據的輸入和輸出,它們之間通過總線連接在一起。CPU內部主要由
    發表于 06-04 20:32 ?1.2w次閱讀
    <b class='flag-5'>CPU</b><b class='flag-5'>寄存器</b>詳解

    寄存器變量

    C語言中使用關鍵字register來聲明局部變量為寄存器變量。寄存器變量的值會被存放在CPU寄存器,每當需要使用它們時,
    發表于 06-03 10:13 ?2345次閱讀

    如何在VHDL實現一個簡單的寄存器

    存儲的位數上有所不同,具體取決于系統的配置。在本教程,我們將學習如何在 VHDL 實現一個簡單的寄存器。
    發表于 07-29 16:48 ?4566次閱讀
    如何在VHDL<b class='flag-5'>中</b><b class='flag-5'>實現</b>一個簡單的<b class='flag-5'>寄存器</b>

    labview讀取三菱plc寄存器內容

    如何使用LabVIEW讀取三菱PLC的寄存器內容,并提供一些實例代碼和注意事項。 首先,我們需要了解PLC寄存器的基本概念。PLC寄存器是一種用于存儲數據的內部變量,被用于傳輸和保存信
    的頭像 發表于 12-27 16:31 ?2125次閱讀

    CPU的6個主要寄存器

    CPU寄存器是中央處理內的組成部分,是有限存貯容量的高速存貯部件。寄存器CPU內部的元件,包括通用
    的頭像 發表于 02-03 15:15 ?3941次閱讀

    CPU寄存器的用途

    在計算機體系結構,中央處理單元(CPU)無疑是整個系統的核心。CPU負責執行指令、處理數據、控制計算機系統的運行等關鍵任務。而在這個過程
    的頭像 發表于 05-30 17:09 ?1268次閱讀

    寄存器分為基本寄存器和什么兩種

    寄存器是計算機中用于存儲數據的高速存儲單元,它們是CPU內部的重要組成部分。寄存器可以分為基本寄存器和擴展寄存器兩種類型。 一、基本
    的頭像 發表于 07-12 10:31 ?1146次閱讀

    寄存器尋址的實現方式

    在計算機體系結構寄存器尋址是一種常見的尋址方式,它允許程序直接訪問CPU內部的寄存器寄存器尋址可以提高程序的執行效率,因為它避免了對內
    的頭像 發表于 07-12 10:36 ?565次閱讀

    接口的控制與狀態寄存器什么作用

    的行為并獲取硬件的狀態信息。 接口的控制與狀態寄存器的作用 在現代計算機系統,硬件設備與軟件之間的交互是通過一系列的接口來實現的。這些接口
    的頭像 發表于 10-17 10:42 ?284次閱讀