微型計(jì)算機(jī)的基本工作原理
微型計(jì)算機(jī)是通過(guò)執(zhí)行程序來(lái)工作的,機(jī)器執(zhí)行不同的程序就能完成不同的任務(wù)。因此,微型計(jì)算機(jī)執(zhí)行程序的過(guò)程體現(xiàn)了微型計(jì)算機(jī)的基本工作原理。下面通過(guò)程序執(zhí)行過(guò)程說(shuō)明微型計(jì)算機(jī)的基本工作原理。
1.指令和程序
指令是控制計(jì)算機(jī)操作的代碼,又稱(chēng)指令碼。指令碼由操作碼和地址碼構(gòu)成。操作碼用于控制機(jī)器執(zhí)行何種操作;地址碼用于指示參加操作的操作數(shù)。指令碼的格式為:
操作碼︱地址碼
指令用計(jì)算機(jī)可識(shí)別的二進(jìn)制代碼形式表示,這種代碼稱(chēng)為機(jī)器碼。但機(jī)器碼既不便于記憶又不便于書(shū)寫(xiě),因此人們通常采用助記符表示指令,如表1-4所示。
一種微處理器所有指令的集合或指令的全體稱(chēng)為它的指令系統(tǒng)。微處理器類(lèi)型不同,它的指令系統(tǒng)也不一樣,因此Intel8050有78條指令,MCS-51系列中的80C51有111條指令等等。
程序是為完成某項(xiàng)任務(wù)而由指令系統(tǒng)中的若干指令組成的有序集合。編制程序稱(chēng)為程序設(shè)計(jì)。計(jì)算機(jī)可直接識(shí)別和執(zhí)行的用機(jī)器碼編寫(xiě)的程序,稱(chēng)為目標(biāo)程序。用指令的助記符編寫(xiě)的程序稱(chēng)為匯編語(yǔ)言源程序,該程序計(jì)算機(jī)不能識(shí)別和執(zhí)行,需經(jīng)匯編程序匯編生成目標(biāo)程序才能被計(jì)算機(jī)執(zhí)行。由此可見(jiàn),計(jì)算機(jī)只能執(zhí)行機(jī)器碼程序。
表 1 指令的三種形式
機(jī)器碼 | 機(jī)器碼 | 助記符 | 功能 |
01110100 00010101 | 74 15H | MOV A, #15H | (A) ←15H |
00100100 00101011 | 24 2BH | ADD A, #2BH | (A) ←(A)+2BH |
10000000 11111110 | 80 FEH | SJMP $ | 停止 |
2.程序執(zhí)行過(guò)程舉例
圖1是計(jì)算21+43的程序。以此為例說(shuō)明微型計(jì)算機(jī)的工作原理。該程序由三條指令組成,即為:
MOV A, #15H
ADD A, #2BH
SJMP $
每條指令均為雙字節(jié)指令(即第一字節(jié)為操作碼,第二字節(jié)為操作數(shù))。第一條指令的作用是把15H傳送到累加器A;第二條指令是加法指令,它把累加器A中的15H和2BH相加,將結(jié)果保存在累加器A中;第三條是停機(jī)指令,執(zhí)行后計(jì)算機(jī)處于動(dòng)態(tài)停機(jī)狀態(tài)。為了執(zhí)行程序,首先將程序放入內(nèi)存,假設(shè)從3000H單元開(kāi)始存放程序,共占用了6個(gè)存儲(chǔ)單元;然后將程序在內(nèi)存的起始地址3000H放入程序計(jì)數(shù)器PC,如圖1(a)所示,此時(shí)即可讓計(jì)算機(jī)開(kāi)始執(zhí)行程序。
圖1 程序執(zhí)行過(guò)程中PC的變化
(1)執(zhí)行第一條指令
第一條指令是雙字節(jié)指令,執(zhí)行過(guò)程為:
①微操作控制器將程序計(jì)數(shù)器PC中的地址3000H經(jīng)地址寄存器送入地址總線后,向存儲(chǔ)器發(fā)出讀信號(hào),同時(shí)使程序計(jì)數(shù)器PC中的內(nèi)容自動(dòng)加1而變成3001H,為讀取
指令的第二個(gè)字節(jié)做好準(zhǔn)備;
②存儲(chǔ)器根據(jù)地址總線上的地址找到3001H存儲(chǔ)單元,在讀信號(hào)控制下讀出3001H單元的內(nèi)容即操作碼74H送到數(shù)據(jù)總線上;
③經(jīng)數(shù)據(jù)總線將操作碼74H送入指令寄存器IR,經(jīng)緩沖后送入指令譯碼器ID;
④經(jīng)指令譯碼器ID對(duì)操作碼74H譯碼并結(jié)合時(shí)序部件產(chǎn)生微操作序列,將程序計(jì)數(shù)器PC中的地址3001H經(jīng)地址寄存器送入地址總線后發(fā)出讀信號(hào),同時(shí)使程序計(jì)數(shù)器
PC自動(dòng)加1變成3002H,為讀取第二條指令做好準(zhǔn)備;
⑤存儲(chǔ)器由地址總線中的新地址3001H把3001H單元的內(nèi)容15H送入數(shù)據(jù)總線;
⑥微操作控制序列將數(shù)據(jù)總線上的操作數(shù)15H送人累加器A中。
至此,第一條指令執(zhí)行結(jié)束,將3001H單元中的第一個(gè)操作數(shù)15H送人累加器A。
(2)執(zhí)行第二條指令
第二條指令也是雙字節(jié)指令,第一字節(jié)24H為操作碼,指示進(jìn)行加法操作,兩個(gè)操作數(shù)中一個(gè)在累加器A中,另一個(gè)為該指令的第二個(gè)字節(jié)。
第一條指令執(zhí)行結(jié)束,程序計(jì)數(shù)器PC中內(nèi)容為3002H。圖1(b)為將要執(zhí)行的第二條指令的內(nèi)存地址。首先將PC中的地址3002H送入地址總線并向存儲(chǔ)器發(fā)出讀
信號(hào),同時(shí)PC加1而變?yōu)?003H。存儲(chǔ)器由地址總線上的地址找到3002H單元,在讀信號(hào)的控制下,讀出操作碼24H經(jīng)數(shù)據(jù)總線送人IR。經(jīng)IR譯碼,將PC中的3003H送入地址
總線,發(fā)出讀信號(hào),同時(shí)使PC自動(dòng)加1變?yōu)?004H,則PC指向第三條指令,如圖1(c)所示。在操作碼24H的微操作控制下從存儲(chǔ)器3003H單元讀出操作數(shù)2BH送入TMP,控
制ALU將累加器A中15H和TMP中的2BH相加,將兩數(shù)的和經(jīng)內(nèi)部總線送入累加器A,并根據(jù)運(yùn)算結(jié)果設(shè)置程序狀態(tài)字PSW某些狀態(tài)位的值,完成本條指令的執(zhí)行。
(3)執(zhí)行第三條指令
第三條指令的執(zhí)行過(guò)程和第一、第二兩條指令類(lèi)似,先讀取指令,分析、執(zhí)行指令后,MPU處于動(dòng)態(tài)停機(jī)狀態(tài)。
至此,整個(gè)程序的執(zhí)行結(jié)束。
編輯:admin 最后修改時(shí)間:2018-11-26