RM新时代网站-首页

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

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

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

指令如何執(zhí)行

CHANBAEK ? 來源:數(shù)殼智學(xué) ? 作者: 赤靈 ? 2023-10-30 15:58 ? 次閱讀

5.1.指令的本質(zhì)

雖然把“總線”比喻成“高速公路”,但是兩者之間還是有很大的不同,在現(xiàn)實(shí)的高速公路上,汽車向著同一個(gè)方向前進(jìn),每個(gè)汽車有不同的目的地,在不同的路口下高速。但是在電路中,電子的傳輸速度是光速,信號(hào)會(huì)同時(shí)出現(xiàn)在所有的路口,也就是說不可能要求“總線”中的信號(hào)去哪個(gè)路口,不去哪個(gè)路口。

所以我們控制信號(hào)的手段是當(dāng)數(shù)據(jù)信號(hào)在總線中的時(shí)候,可以通過控制哪些元件從“總線”中讀取信號(hào)或者控制哪些元件往總線中寫入數(shù)據(jù)的方式來達(dá)到控制整個(gè)電路運(yùn)行的目的。

那么具體到電路中,應(yīng)該如何實(shí)現(xiàn)控制信號(hào)進(jìn)出總線呢?從第四章我們知道,存儲(chǔ)器(寄存器、內(nèi)存)有兩個(gè)讀、寫兩個(gè)控制開關(guān)。讓我們好像找到了的“命門”,只要控制好這些讀、寫開關(guān),當(dāng)某個(gè)寄存器設(shè)置為讀,數(shù)據(jù)從寄存器傳導(dǎo)到總線,當(dāng)某個(gè)寄存器設(shè)置為寫,實(shí)現(xiàn)把數(shù)據(jù)從總線讀入寄存器,如此就能控制好整個(gè)電路,讓它做我們想做的事情。

為了更加清楚的說明整個(gè)控制過程,我們?cè)倏纯磸膬?nèi)存中讀取數(shù)據(jù)相加的控制過程,具體計(jì)算步驟實(shí)現(xiàn)如下(表 5-1):

表 5-1 相加電路的實(shí)現(xiàn)步驟

步驟序號(hào)步驟描述設(shè)置
1讀被加數(shù)內(nèi)存(M)的R=1;暫存寄存器(TR1)的W=1;其余開關(guān)=0
2讀加數(shù)和相加一起內(nèi)存(M)的R=1;暫存寄存器(TR1)的R=1;暫存寄存器(TR2)的W=1;其余開關(guān)=0
3保存結(jié)果內(nèi)存(M)的W=1;暫存寄存器(TR2)的R=1;其余開關(guān)=0

表中的每一行就是一個(gè)指令,指令是計(jì)算機(jī)程序發(fā)給計(jì)算機(jī)處理器的命令。每一個(gè)指令,我們通過完成幾個(gè)寄存器的讀寫設(shè)置,完成一個(gè)具有一定功能的動(dòng)作組合。

5.2.指令寄存器

為了保存當(dāng)前需要運(yùn)行的指令,設(shè)置指令寄存器組,由指令操作碼和地址寄存器兩個(gè)8位寄存器組成。指令操作碼寄存器存放的指令的編號(hào),通過指令譯碼器選擇執(zhí)行的動(dòng)作;地址寄存器指的是該指令執(zhí)行過程中需要的內(nèi)存地址。

圖 5-1 指令格式

表 5-2 電路支持的指令列表

操作碼說明
0000 0000讀取被加數(shù)
0000 0001讀取加數(shù),并相加
0000 0010將相加的結(jié)果存儲(chǔ)內(nèi)存
0000 0100在常量寄存器中存入一個(gè)常量
0000 0101把常量寄存器的數(shù)存到內(nèi)存中

5.3.指令譯碼器

為了使得控制更加簡(jiǎn)單,可以把每一個(gè)步驟(指令)設(shè)置一個(gè)開關(guān),一鍵完成一個(gè)步驟。

進(jìn)一步,可以在錯(cuò)誤!未找到引用源?;A(chǔ)上添加譯碼器,實(shí)現(xiàn)指令控制的電路。指令譯碼器的實(shí)現(xiàn)還是通過邏輯真值表來輔助設(shè)計(jì)。

每個(gè)指令的操作碼對(duì)應(yīng)多個(gè)寄存器的設(shè)置操作。比如從內(nèi)存中讀取是指,并且把值放入加法的加數(shù)暫存器TR1中的指令,指令操作碼是 0000,需要將內(nèi)存的R端口和加數(shù)暫存起TR1的W端口設(shè)置為1;執(zhí)行加法的指令,指令操作碼是0001,需要同時(shí)設(shè)置M寄存器的R=1,暫存器TR1的R=1,暫存器TR2的W=1。根據(jù)(表 5-1),重新建立操作碼和寄存器設(shè)置的真值表如下表:

表 5-3 指令操作碼和設(shè)置動(dòng)作的真值表

指令操作碼A3A2A1A0指令描述內(nèi)存M加數(shù)暫存器TR1和暫存器TR2
WRWRW
0 0 0 0讀被加數(shù)11
0 0 0 1讀加數(shù),相加1
0 0 1 0存結(jié)果1

邏輯表達(dá)式:

圖片

邏輯電路:

圖片

圖 5-2指令譯碼器電路圖

5.4.內(nèi)存相加電路實(shí)現(xiàn)

圖片

圖 5-3 基于內(nèi)存的加法功能電路

圖片

圖 5-4 簡(jiǎn)單內(nèi)存示意圖

完成本章的內(nèi)存相加功能,假設(shè)如圖 5-4 a、b、c的內(nèi)存地址,讀取a、b的值,把相加的結(jié)果保存到c,完整指令步驟如下:

5.5.小節(jié)

本章提出一個(gè)如何將內(nèi)存中的兩個(gè)數(shù)字相加的功能的問題,繪制以內(nèi)存和加法器為主體的功能電路,同時(shí),為了電路圖的布局更加的合理,引入“數(shù)據(jù)總線”、“地址總線”、“控制總線”的概念。

詳細(xì)的闡述指令的本質(zhì)控制電路完成特定功能,解構(gòu)指令譯碼器的內(nèi)部解構(gòu),并提出增加指令寄存器,最后給出了較為完整的內(nèi)存數(shù)據(jù)相加的邏輯電路。

但是本章對(duì)于指令寄存器的指令的加載和按順序執(zhí)行指令的過程沒有闡述,下一章將重點(diǎn)解決這個(gè)問題。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5336

    瀏覽量

    120230
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3019

    瀏覽量

    74003
  • 指令
    +關(guān)注

    關(guān)注

    1

    文章

    607

    瀏覽量

    35692
  • 譯碼器
    +關(guān)注

    關(guān)注

    4

    文章

    310

    瀏覽量

    50314
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    轉(zhuǎn):?jiǎn)纹瑱C(jī)指令執(zhí)行過程

    單片機(jī)執(zhí)行程序的過程,實(shí)際上就是執(zhí)行我們所編制程序的過程。即逐條指令的過程。計(jì)算機(jī)每執(zhí)行一條指令都可分為三個(gè)階段進(jìn)行。即取
    發(fā)表于 08-17 12:47

    請(qǐng)問BX,BLX指令執(zhí)行的時(shí)候會(huì)發(fā)生CPU寄存器入棧嗎?

    BX,BLX指令執(zhí)行的時(shí)候會(huì)發(fā)生CPU寄存器入棧嗎
    發(fā)表于 09-24 23:00

    一條指令執(zhí)行需要多少個(gè)時(shí)鐘周期

    在keil中編程時(shí),寫了一行代碼,然后就想知道,執(zhí)行這句C代碼需要多長(zhǎng)時(shí)間。時(shí)鐘周期在這就不解釋了,頻率的倒數(shù)。指令周期,個(gè)人理解就是cpu執(zhí)行一條匯編指令所需要的時(shí)間。我們知道cm3
    發(fā)表于 08-04 06:42

    到底一條指令執(zhí)行需要多少個(gè)時(shí)鐘周期呢

    到底一條指令執(zhí)行需要多少個(gè)時(shí)鐘周期呢?怎樣去計(jì)算一個(gè)指令所需的時(shí)鐘周期呢?
    發(fā)表于 10-28 09:25

    MOVX指令執(zhí)行過程

    MOVX指令執(zhí)行過程MOVX指令是51單片機(jī)訪問片外外設(shè)的唯一指令,與外部RAM或I/O空間進(jìn)行數(shù)據(jù)的讀寫或者ADC和DAC等都需要使用這條指令
    發(fā)表于 12-07 09:38

    c語言指令執(zhí)行過程是怎樣的

    [STM32]STM32F407系列教程之三,c語言知識(shí)點(diǎn)鞏固 指令執(zhí)行過程
    發(fā)表于 12-09 06:31

    ARM與X862.ARM中指令執(zhí)行

    文章目錄零.預(yù)備知識(shí)1.ARM與X862.ARM中指令執(zhí)行3.ARM的九種尋址方式立即數(shù)尋址寄存器尋址寄存器間接尋址寄存器偏移尋址寄存器基址變址尋址批量寄存器尋址相對(duì)尋址堆棧尋址塊拷貝尋址一.移位
    發(fā)表于 12-14 06:32

    請(qǐng)問哪里能查到ARM A53各個(gè)指令執(zhí)行所需要的cycle數(shù)

    請(qǐng)問哪里能查到ARM A53各個(gè)指令執(zhí)行所需要的cycle數(shù) ?謝謝
    發(fā)表于 10-09 15:38

    請(qǐng)問C8051F?MCU的指令執(zhí)行速度為多少?

    C8051F?MCU的指令執(zhí)行速度為多少?
    發(fā)表于 09-28 07:41

    求助,平常MCU的指令執(zhí)行速度為多少?

    平常MCU的指令執(zhí)行速度為多少?
    發(fā)表于 11-01 08:23

    淺談51單片機(jī)指令執(zhí)行的過程

    單片機(jī)執(zhí)行程序的過程,實(shí)際上就是執(zhí)行我們所編制程序的過程。即逐條指令的過程。計(jì)算機(jī)每執(zhí)行一條指令都可分為三個(gè)階段進(jìn)行。即取
    發(fā)表于 04-16 11:20 ?6293次閱讀
    淺談51單片機(jī)<b class='flag-5'>指令</b><b class='flag-5'>執(zhí)行</b>的過程

    淺析單片機(jī)指令執(zhí)行過程

    單片機(jī)執(zhí)行程序的過程,實(shí)際上就是執(zhí)行我們所編制程序的過程。即逐條指令的過程。
    的頭像 發(fā)表于 08-07 14:47 ?5595次閱讀

    RAMP的指令執(zhí)行模式與脈沖輸出指令

    斜坡信號(hào)指令RAMP的編程手冊(cè)截圖如下圖23-1所示,有4個(gè)操作數(shù),僅適用于16位,無脈沖執(zhí)行型。
    的頭像 發(fā)表于 01-17 09:54 ?1w次閱讀
    RAMP的<b class='flag-5'>指令</b><b class='flag-5'>執(zhí)行</b>模式與脈沖輸出<b class='flag-5'>指令</b>

    單片機(jī)MOVX指令執(zhí)行時(shí)序深入分析

    MOVX指令執(zhí)行過程MOVX指令是51單片機(jī)訪問片外外設(shè)的唯一指令,與外部RAM或I/O空間進(jìn)行數(shù)據(jù)的讀寫或者ADC和DAC等都需要使用這條指令
    發(fā)表于 11-24 15:36 ?11次下載
    單片機(jī)MOVX<b class='flag-5'>指令</b><b class='flag-5'>執(zhí)行</b>時(shí)序深入分析

    [STM32]STM32F407系列教程之三,c語言知識(shí)點(diǎn)鞏固 指令執(zhí)行過程

    [STM32]STM32F407系列教程之三,c語言知識(shí)點(diǎn)鞏固 指令執(zhí)行過程
    發(fā)表于 11-26 13:21 ?13次下載
    [STM32]STM32F407系列教程之三,c語言知識(shí)點(diǎn)鞏固 <b class='flag-5'>指令</b><b class='flag-5'>執(zhí)行</b>過程
    RM新时代网站-首页