91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣通過改變寄存器中的內(nèi)容實現(xiàn)對CPU的控制呢?

冬至子 ? 來源:Flashield ? 作者:Flashield ? 2023-09-20 15:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

寄存器

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

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

2.1 通用寄存器

8086CPU的所有寄存器都是16位的,可以存放兩個字節(jié)。AX、BX、CX、DX這4個寄存器通常用來存放一般性的數(shù)據(jù),被稱為通用寄存器。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可以一次性處理以下兩種尺寸的數(shù)據(jù)。

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

2.3 幾條匯編指令

  • 匯編指令不區(qū)分大小寫。
  • 在進(jìn)行數(shù)據(jù)傳送或運算時,要注意指令的兩個操作對象的位數(shù)應(yīng)當(dāng)是一致的。

2.4 物理地址

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

2.5 16位結(jié)構(gòu)的CPU

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

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

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

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

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

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

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

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

2.8 段的概念

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

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

“數(shù)據(jù)在21F60H內(nèi)存單元中?!边@句話對于8086PC機(jī)一般不這樣講;而是如下說法:

  1. 數(shù)據(jù)存在內(nèi)存20001F60單元中;
  2. 數(shù)據(jù)存在內(nèi)存的2000H段中的1F60H單元中。

2.9 段寄存器

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

2.10 CS和IP

CS和IP是8086CPU中兩個最關(guān)鍵的寄存器,它們指示了 CPU當(dāng)前要讀取指令的地址 。

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

任意時刻,CPU將CS:IP指向的內(nèi)容當(dāng)作指令執(zhí)行。具體的工作過程:

  1. 從CS:IP指向的內(nèi)存單元讀取指令,讀取的指令進(jìn)入指令緩沖器;
  2. IP:=IP+所讀取指令的長度,從而指向下一條指令;
  3. 執(zhí)行指令。轉(zhuǎn)到步驟1,重復(fù)這個過程。

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

2.11 修改CS、IP的指令

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

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

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

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

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

    關(guān)注

    114

    文章

    17795

    瀏覽量

    193354
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5608

    瀏覽量

    130011
  • 存儲器
    +關(guān)注

    關(guān)注

    39

    文章

    7739

    瀏覽量

    171698
  • PC機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    201

    瀏覽量

    30147
  • 加法器
    +關(guān)注

    關(guān)注

    6

    文章

    183

    瀏覽量

    31429
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    解析CPU寄存器

    8位寄存器在16位寄存器,而16位寄存器在32位寄存器。
    發(fā)表于 09-19 10:10 ?5190次閱讀

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

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

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

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

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

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

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

    怎樣通過寄存器控制STM32F4 IO口的高低電平?并實現(xiàn)一個經(jīng)典的跑流水燈程序?
    發(fā)表于 02-11 08:02

    Audio HAL控制驅(qū)動寄存器是如何實現(xiàn)

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

    CPU寄存器詳解

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

    寄存器變量

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

    如何在VHDL實現(xiàn)一個簡單的寄存器

    存儲的位數(shù)上有所不同,具體取決于系統(tǒng)的配置。在本教程,我們將學(xué)習(xí)如何在 VHDL 實現(xiàn)一個簡單的寄存器
    發(fā)表于 07-29 16:48 ?5509次閱讀
    如何在VHDL<b class='flag-5'>中</b><b class='flag-5'>實現(xiàn)</b>一個簡單的<b class='flag-5'>寄存器</b>

    labview讀取三菱plc寄存器內(nèi)容

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

    CPU的6個主要寄存器

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

    CPU寄存器的用途

    在計算機(jī)體系結(jié)構(gòu),中央處理單元(CPU)無疑是整個系統(tǒng)的核心。CPU負(fù)責(zé)執(zhí)行指令、處理數(shù)據(jù)、控制計算機(jī)系統(tǒng)的運行等關(guān)鍵任務(wù)。而在這個過程
    的頭像 發(fā)表于 05-30 17:09 ?3767次閱讀

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

    寄存器是計算機(jī)中用于存儲數(shù)據(jù)的高速存儲單元,它們是CPU內(nèi)部的重要組成部分。寄存器可以分為基本寄存器和擴(kuò)展寄存器兩種類型。 一、基本
    的頭像 發(fā)表于 07-12 10:31 ?3071次閱讀

    寄存器尋址的實現(xiàn)方式

    在計算機(jī)體系結(jié)構(gòu),寄存器尋址是一種常見的尋址方式,它允許程序直接訪問CPU內(nèi)部的寄存器。寄存器尋址可以提高程序的執(zhí)行效率,因為它避免了對內(nèi)
    的頭像 發(fā)表于 07-12 10:36 ?2354次閱讀

    接口的控制與狀態(tài)寄存器什么作用

    的行為并獲取硬件的狀態(tài)信息。 接口的控制與狀態(tài)寄存器的作用 在現(xiàn)代計算機(jī)系統(tǒng),硬件設(shè)備與軟件之間的交互是通過一系列的接口來實現(xiàn)的。這些接口
    的頭像 發(fā)表于 10-17 10:42 ?2279次閱讀