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