<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          計(jì)算機(jī)各個(gè)部件配合完成加減乘除(計(jì)組學(xué)習(xí)二)

          共 1766字,需瀏覽 4分鐘

           ·

          2022-01-17 02:47

          大家好,我是賀賀。

          預(yù)熱一下

          當(dāng)我們了解了計(jì)算機(jī)的五大組成部分后,下面我來聊聊計(jì)算機(jī)的各個(gè)部件是怎么配合完成加減乘除的。在進(jìn)行講解之前,先說一下什么是指令,指令是由操作碼和地址碼構(gòu)成的,一條指令是由多條微指令構(gòu)成的,或者說,一條指令是由一個(gè)微程序構(gòu)成的。是不是感覺有點(diǎn)懵,不用擔(dān)心,下面通過例子就可以理解了。先放個(gè)圖,簡(jiǎn)單回憶一下,回憶不起來的可以看看往期的文章。

          加法運(yùn)算

          加法運(yùn)算想必大家都不陌生吧,但是對(duì)于計(jì)算機(jī)的加法運(yùn)算,可就比較復(fù)雜了,具體的運(yùn)算這篇文章暫不討論,后續(xù)文章會(huì)進(jìn)行詳細(xì)講解,這篇文章主要進(jìn)行講解各個(gè)部件是如何完成加減乘除的。首先要用到的是程序計(jì)數(shù)器PC,PC是記錄下一條要執(zhí)行的指令地址,假設(shè)此時(shí)剛好指向a+b;這行代碼,需要注意的是,看似簡(jiǎn)單的一行代碼是由很多條指令組成的,例如有取數(shù)指令加法指令等,另外假設(shè)數(shù)據(jù)在主存中已經(jīng)存在,我們主要研究是如何實(shí)現(xiàn)加法運(yùn)算的,各個(gè)部件的細(xì)節(jié),在后續(xù)文章中會(huì)逐一講解。正文開始,假設(shè)第一條指令的地址是0,PC指向0號(hào)地址。
          第一步:PC的值0給MAR
          第二步:通過MAR的值去存儲(chǔ)體中取數(shù)據(jù)
          第三步:把取到的數(shù)據(jù)放到MDR中(這里的數(shù)據(jù)是一條指令)
          第四步:將MDR的指令放到IR中(IR中存放的是要執(zhí)行的指令)
          第五步:IR的操作碼送到CU里,CU通過分析發(fā)現(xiàn)是取數(shù)指令
          第六步:IR里的地址碼放到MAR中
          第七步:通過MAR的值去存儲(chǔ)體取數(shù)據(jù)(也就是a的值)
          第八步:把取得的數(shù)據(jù)放到MDR中
          第九步:把MDR的值放到ACC累加寄存器中(至此取數(shù)完成)
          上面這九步完成了一個(gè)取數(shù)的指令。其中1 ~ 4是取指令,5是分析指令,6 ~ 9是執(zhí)行指令??梢姡@個(gè)取數(shù)指令由9條微指令組成。需要注意的是,在這條指令取指完成后,PC的值會(huì)自動(dòng)加一,也就是指向下一條指令地址,也就是+b操作,同樣的,這一條指令的執(zhí)行,也分為取指令,分析指令,執(zhí)行指令三個(gè)階段。與上面不同的是,取出的加數(shù)b要放到通用寄存器X中,這樣好讓ACC的值與X通過算術(shù)邏輯單元ALU進(jìn)行加法操作,得到的結(jié)果放到ACC中。

          減法、乘法、除法運(yùn)算

          a-b,學(xué)完加法之后,減法與之類似,需要注意的是累加器ACC中存放的是被減數(shù)a,通用寄存器X里存的是減數(shù)b,減得的結(jié)果放在ACC中。

          a*b,乘法運(yùn)算,累加器ACC放的是被乘數(shù)a,而乘數(shù)b放到乘商寄存器MQ中,在運(yùn)算之前,累加器中的被乘數(shù)會(huì)放到通用寄存器X中(因?yàn)橐獔?zhí)行的是乘法),并把ACC清零,此時(shí)運(yùn)算是通過MQ里的b與X里的a進(jìn)行乘法運(yùn)算。乘得的結(jié)果高位放到ACC中,低位放到MQ中。

          a/b,除法運(yùn)算,累加器ACC放的是被除數(shù)a,而除數(shù)放到X中,這里需要注意的是,運(yùn)算之前沒有用到乘商寄存器MQ(乘商寄存器,可能只用來存乘和商吧),ACC里的被除數(shù)與X里的除數(shù)相除,所得的商放到MQ中,而余數(shù)放到ACC中。

          存數(shù)指令

          當(dāng)我們把結(jié)果計(jì)算出來之后,要存放到主存中,而存數(shù)指令也是一條指令,指令呢,又分為三個(gè)階段,分別是:取指令、分析指令、執(zhí)行指令。假設(shè)這條指令所指的指令地址是3,也就是PC的值等于3。
          取指令
          第一步:將PC的值給MAR
          第二步:通過MAR的值去存儲(chǔ)體中取指令
          第三步:把取到的指令放到MDR中
          第四步:將MDR的指令放到IR中
          分析指令
          第五步:IR的操作碼送到CU里,CU通過分析發(fā)現(xiàn)是存數(shù)指令
          執(zhí)行指令
          第六步:IR里的地址碼放到MAR中
          第七步:ACC的值放到MDR中
          第八步:MAR的值放到存儲(chǔ)體中
          第九步:與之對(duì)應(yīng)的MDR的值也放到存儲(chǔ)體中
          這樣一來,就把ACC里的值通過一條存數(shù)指令,存到了存儲(chǔ)體中。

          小七的故事

          小七是個(gè)初中生,總分全靠一門物理來撐著,然而物理滿分只有七十分,所以小七是個(gè)學(xué)渣,但是呢,他心里一直以為自己是個(gè)很認(rèn)真很踏實(shí)的學(xué)生,他犯了一個(gè)很大的錯(cuò),那就是,他以為只要把一件事情做到極致,就可以彌補(bǔ)其他的缺陷,就像學(xué)習(xí),他想用70分的物理,來彌補(bǔ)120分的英語,然后他的物理并沒有考到70分,而英語卻如他所愿,考的一塌糊涂。

          瀏覽 135
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲日韩欧美另类 | 婷婷好色五月天 | 天天操天天插 | 大长腿啪啪 | 婷婷综合视频 |