第六章指令系統(tǒng)_第1頁(yè)
第六章指令系統(tǒng)_第2頁(yè)
第六章指令系統(tǒng)_第3頁(yè)
第六章指令系統(tǒng)_第4頁(yè)
第六章指令系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第六章指令系統(tǒng)第一頁(yè),共四十八頁(yè),2022年,8月28日第6章指令系統(tǒng)指令是使計(jì)算機(jī)完成某種操作的指示或命令,又稱(chēng)為機(jī)器指令。計(jì)算機(jī)完成的各種功能,就是執(zhí)行各種指令的體現(xiàn)。所謂指令系統(tǒng)(InstructionSet)是指一臺(tái)計(jì)算機(jī)上全部指令的集合,也稱(chēng)指令集。它反映了該計(jì)算機(jī)的全部功能,機(jī)器類(lèi)型不同,其指令系統(tǒng)也不同,因而功能也不同。在計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)過(guò)程中,指令系統(tǒng)的設(shè)計(jì)占有十分重要的地位,合理的指令系統(tǒng)能夠提升計(jì)算機(jī)系統(tǒng)的性能。指令系統(tǒng)的設(shè)置和機(jī)器的硬件結(jié)構(gòu)密切相關(guān),一臺(tái)機(jī)器要有較好的性能,必須設(shè)計(jì)功能齊全、通用性強(qiáng)、指令豐富的指令系統(tǒng),這就需要復(fù)雜的硬件結(jié)構(gòu)來(lái)支持。本章介紹指令的格式、指令的尋址方式、指令的種類(lèi)以及指令的執(zhí)行方式等內(nèi)容。6.1指令的分類(lèi)6.2指令格式6.3尋址方式6.4指令的執(zhí)行6.5小結(jié)第二頁(yè),共四十八頁(yè),2022年,8月28日6.1指令的分類(lèi)6.1.1數(shù)據(jù)傳送類(lèi)指令數(shù)據(jù)傳送類(lèi)指令主要包括數(shù)據(jù)傳送、數(shù)據(jù)交換、壓棧和退棧三種指令。這類(lèi)指令主要用來(lái)實(shí)現(xiàn)主存和寄存器之間,或寄存器和寄存器之間的數(shù)據(jù)傳送。1.?dāng)?shù)據(jù)傳送指令這是一種常用指令,用以實(shí)現(xiàn)寄存器與寄存器、寄存器與存儲(chǔ)單元、存儲(chǔ)單元與存儲(chǔ)單元之間的數(shù)據(jù)傳送。進(jìn)行數(shù)據(jù)傳送時(shí),數(shù)據(jù)從源地址傳送到目的地址,源地址中的數(shù)據(jù)保持不變,這實(shí)際上是一種數(shù)據(jù)復(fù)制。應(yīng)該注意,有些計(jì)算機(jī)的數(shù)據(jù)傳送指令不能實(shí)現(xiàn)存儲(chǔ)單元與存儲(chǔ)單元之間的數(shù)據(jù)傳送,如Intel8086/8088的傳送指令MOV。2.?dāng)?shù)據(jù)交換指令這種指令的功能是實(shí)現(xiàn)兩個(gè)操作數(shù)之間的位置互換,包括寄存器與寄存器、寄存器與存儲(chǔ)單元、存儲(chǔ)單元與存儲(chǔ)單元之間的數(shù)據(jù)互換。同樣應(yīng)該注意的是,有些計(jì)算機(jī)的數(shù)據(jù)交換指令不能實(shí)現(xiàn)存儲(chǔ)單元與存儲(chǔ)單元之間的數(shù)據(jù)互換,如Intel8086/8088的XCHG指令就沒(méi)有這種功能。第三頁(yè),共四十八頁(yè),2022年,8月28日6.1指令的分類(lèi)3.壓棧和退棧指令壓棧和退棧指令都是針對(duì)堆棧進(jìn)行操作的指令。堆棧(Stack)是主存中專(zhuān)門(mén)用來(lái)存放數(shù)據(jù)的一個(gè)特定的區(qū)域,是由若干連續(xù)的存儲(chǔ)單元組成的按照先進(jìn)后出(FILO)原則存取數(shù)據(jù)的存儲(chǔ)區(qū)。壓棧指令的功能是把數(shù)據(jù)存入堆棧區(qū),而退棧指令的功能是把數(shù)據(jù)從堆棧中彈出。堆棧有兩種存放數(shù)據(jù)的方向,一種是由低地址向高地址存放,另一種是由高地址向址低地址存放,通常采用后者,如圖6-1所示。第四頁(yè),共四十八頁(yè),2022年,8月28日6.1指令的分類(lèi)對(duì)圖6-1說(shuō)明如下:(1)棧底以下是非棧區(qū),不能放入數(shù)據(jù),棧底以上是棧區(qū),可存放數(shù)據(jù)。(2)為了指示棧頂?shù)奈恢?,用一個(gè)寄存器或存儲(chǔ)器單元來(lái)指出棧頂?shù)牡刂罚@個(gè)寄存器或存儲(chǔ)器單元稱(chēng)為堆棧指針(StackPointerSP)。棧頂以上的數(shù)據(jù)為無(wú)效數(shù)據(jù)。SP的內(nèi)容就是棧頂?shù)刂?。用于訪問(wèn)堆棧的指令只有壓棧和退棧兩條指令,壓棧指令(在Intel8086/8088中是PUSH)用來(lái)把指定的操作數(shù)送人堆棧的棧頂,而退棧指令(Intel8086/8088中是POP)則用來(lái)把棧頂?shù)臄?shù)據(jù)取出。圖6-2表示了壓棧和退棧的過(guò)程。第五頁(yè),共四十八頁(yè),2022年,8月28日6.1指令的分類(lèi)6.1.2算術(shù)邏輯運(yùn)算類(lèi)指令這類(lèi)指令包括算術(shù)運(yùn)算指令、邏輯運(yùn)算指令和移位指令。1.算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令包括二進(jìn)制定點(diǎn)加、減、乘、除指令,浮點(diǎn)加、減、乘、除指令,求反、求補(bǔ)指令,算術(shù)比較指令,十進(jìn)制加、減運(yùn)算指令等。不同檔次的計(jì)算機(jī)具有不同數(shù)量的算術(shù)運(yùn)算指令,一般微、小型機(jī)的硬件結(jié)構(gòu)比較簡(jiǎn)單,支持的算術(shù)運(yùn)算指令比較少,只設(shè)有二進(jìn)制數(shù)的加、減、比較和求補(bǔ)等最基本的指令。高檔的機(jī)器,除了這些最基本的算術(shù)運(yùn)算指令外,還具有乘、除運(yùn)算指令,浮點(diǎn)運(yùn)算指令,以及十進(jìn)制運(yùn)算指令等。浮點(diǎn)運(yùn)算指令主要用于需要大量數(shù)值運(yùn)算的科學(xué)計(jì)算中,而十進(jìn)制運(yùn)算指令主要用于需要大量輸入輸出的商業(yè)數(shù)據(jù)處理中。大型機(jī)和巨型機(jī)則還設(shè)有向量運(yùn)算指令,可以直接對(duì)整個(gè)向量或矩陣進(jìn)行求和、求積等運(yùn)算。第六頁(yè),共四十八頁(yè),2022年,8月28日6.1指令的分類(lèi)2.邏輯運(yùn)算指令一般計(jì)算機(jī)都具有與、或、非、異或和測(cè)試等邏輯運(yùn)算指令。有些計(jì)算機(jī)還具有位測(cè)試、位清除、位求反等位操作指令。這些指令主要用于無(wú)符號(hào)數(shù)的位操作、代碼的轉(zhuǎn)換、判斷及運(yùn)算。3.移位指令移位指令用來(lái)對(duì)寄存器的內(nèi)容實(shí)現(xiàn)左移、右移或循環(huán)移位的功能,可分為算術(shù)移位、邏輯移位和循環(huán)移位三種指令,一般計(jì)算機(jī)都具有這三種指令。圖6-3顯示了這三種移位指令的操作過(guò)程。第七頁(yè),共四十八頁(yè),2022年,8月28日6.1指令的分類(lèi)圖6-3移位指令操作過(guò)程第八頁(yè),共四十八頁(yè),2022年,8月28日6.1指令的分類(lèi)6.1.3字符串處理指令字符串處理指令對(duì)于非數(shù)值數(shù)據(jù)的處理非常重要,由于現(xiàn)在數(shù)據(jù)處理已是計(jì)算機(jī)的主要應(yīng)用領(lǐng)域,因此無(wú)論是巨型機(jī)、大中型機(jī),還是微、小型機(jī),都設(shè)有字符串處理指令。這類(lèi)指令包括字符串傳送、字符串轉(zhuǎn)換、字符串比較、字符串查找、字符串匹配、字符串抽取和替換等指令。這類(lèi)指令可以在文字編輯中對(duì)大量字符串進(jìn)行處理。例如,Intel8086/8088中的字符串比較指令:REPZCMPSB這是一條無(wú)操作數(shù)的隱含指令,其含義是對(duì)兩個(gè)字符串逐個(gè)進(jìn)行比較,這兩個(gè)字符串的首地址分別隱含在源變址寄存器SI和目的變址寄存器DI中,字符串的長(zhǎng)度隱含在CX寄存器中。從首地址開(kāi)始,一個(gè)字節(jié)一個(gè)字節(jié)地進(jìn)行比較,每比較一次,SI和DI的內(nèi)容自動(dòng)加1,直至發(fā)現(xiàn)兩個(gè)字符串中有不同的字節(jié)或直到比較結(jié)束。然后,根據(jù)最后一次比較結(jié)果設(shè)置狀態(tài)位。第九頁(yè),共四十八頁(yè),2022年,8月28日6.1指令的分類(lèi)6.1.4輸入輸出指令在計(jì)算機(jī)系統(tǒng)中,輸入輸出是相對(duì)于主機(jī)或者CPU而言的。數(shù)據(jù)從輸入設(shè)備傳送到主機(jī)或CPU,稱(chēng)為輸入;而數(shù)據(jù)從主機(jī)或CPU傳送到輸出設(shè)備則稱(chēng)為輸出。輸入輸出指令主要用來(lái)啟動(dòng)外圍設(shè)備,檢查測(cè)試外設(shè)的工作狀態(tài),完成主機(jī)或CPU與輸入輸出設(shè)備之間的數(shù)據(jù)傳送。這類(lèi)指令對(duì)各種類(lèi)型的計(jì)算機(jī)都是很重要的。有些計(jì)算機(jī),例如DEC公司的PDPll,是把外設(shè)與存儲(chǔ)器統(tǒng)一編址,把外設(shè)看成是一個(gè)存儲(chǔ)單元,這類(lèi)計(jì)算機(jī)沒(méi)有輸入輸出指令,其輸入輸出功能由訪問(wèn)存儲(chǔ)器的指令來(lái)實(shí)現(xiàn)。第十頁(yè),共四十八頁(yè),2022年,8月28日6.1指令的分類(lèi)6.1.5特權(quán)指令和陷阱指令1.特權(quán)指令所謂特權(quán)指令是指具有特殊權(quán)限的指令。這類(lèi)指令只用于操作系統(tǒng)或其他系統(tǒng)軟件,一般不直接提供給用戶使用。通常在單用戶、單任務(wù)的計(jì)算機(jī)系統(tǒng)中是不需要特權(quán)指令的,而多用戶、多任務(wù)的計(jì)算機(jī)系統(tǒng)在進(jìn)行系統(tǒng)資源分配與管理上是離不開(kāi)特權(quán)指令的。這類(lèi)指令的功能包括:改變系統(tǒng)的工作方式,檢測(cè)用戶的訪問(wèn)權(quán)限,修改虛擬存儲(chǔ)器管理的段表、頁(yè)表,完成任務(wù)的創(chuàng)建和切換等。2.陷阱指令陷阱指令并非設(shè)置陷阱的指令,而是處理陷階的指令。陷階是指計(jì)算機(jī)系統(tǒng)在運(yùn)行中的一種意外事故,諸如電源電壓不穩(wěn)、存儲(chǔ)器校驗(yàn)出錯(cuò)、輸入輸出設(shè)備出現(xiàn)故障、用戶使用了未定義的指令或特權(quán)指令等等意外情況,使得計(jì)算機(jī)系統(tǒng)不能正常工作。一旦出現(xiàn)陷階,計(jì)算機(jī)應(yīng)當(dāng)能暫停當(dāng)前程序的執(zhí)行,及時(shí)轉(zhuǎn)入故障處理程序進(jìn)行相應(yīng)的處理。第十一頁(yè),共四十八頁(yè),2022年,8月28日6.1指令的分類(lèi)6.1.6轉(zhuǎn)移指令轉(zhuǎn)移指令是改變程序執(zhí)行順序的指令。一般情況下,CPU是按編程順序執(zhí)行指令的,但有時(shí)要根據(jù)所處理的結(jié)果進(jìn)行判斷,再根據(jù)判斷的結(jié)果來(lái)確定程序的執(zhí)行,這時(shí)就要使用轉(zhuǎn)移指令,以實(shí)現(xiàn)程序的分支。轉(zhuǎn)移指令分為無(wú)條件轉(zhuǎn)移和條件轉(zhuǎn)移兩類(lèi)指令。無(wú)條件轉(zhuǎn)移指令不受任何條件的約束,直接控制CPU轉(zhuǎn)移到指定的地點(diǎn)去執(zhí)行;有條件轉(zhuǎn)移指令則先測(cè)試某些條件,條件滿足就轉(zhuǎn)移,否則不轉(zhuǎn)移。條件轉(zhuǎn)移指令判斷條件是利用CPU中的狀態(tài)寄存器(又稱(chēng)條件碼寄存器),這個(gè)狀態(tài)寄存器中有某些標(biāo)志位,主要有:進(jìn)位標(biāo)志(C)、結(jié)果為零標(biāo)志(Z)、結(jié)果為負(fù)標(biāo)志(N)、結(jié)果溢出標(biāo)志(V)、奇偶標(biāo)志(P)。根據(jù)轉(zhuǎn)移條件的不同,轉(zhuǎn)移指令可分為若干種,如表6-1所示。第十二頁(yè),共四十八頁(yè),2022年,8月28日6.1指令的分類(lèi)表6-1條件轉(zhuǎn)移指令一覽表指令條件說(shuō)明有進(jìn)位轉(zhuǎn)移C無(wú)符號(hào)數(shù)比較時(shí)小于,C標(biāo)志位為1則轉(zhuǎn)移無(wú)進(jìn)位轉(zhuǎn)移C無(wú)符號(hào)數(shù)比較時(shí)大于或等于,C標(biāo)志位為0則轉(zhuǎn)移零轉(zhuǎn)移Z運(yùn)算結(jié)果為零,Z標(biāo)志位為1時(shí)轉(zhuǎn)移非零轉(zhuǎn)移Z運(yùn)算結(jié)果不為零,Z標(biāo)志位為0時(shí)轉(zhuǎn)移負(fù)轉(zhuǎn)移N運(yùn)算結(jié)果為負(fù),N標(biāo)志位為1時(shí)轉(zhuǎn)移正轉(zhuǎn)移N運(yùn)算結(jié)果不為負(fù),N標(biāo)志位為0時(shí)轉(zhuǎn)移溢出轉(zhuǎn)移V運(yùn)算結(jié)果發(fā)生溢出,V標(biāo)志位為1時(shí)轉(zhuǎn)移非溢出轉(zhuǎn)移V運(yùn)算結(jié)果不發(fā)生溢出,V標(biāo)志位為0時(shí)轉(zhuǎn)移奇轉(zhuǎn)移P運(yùn)算結(jié)果有奇數(shù)個(gè)1,P標(biāo)志位為1時(shí)轉(zhuǎn)移偶轉(zhuǎn)移P運(yùn)算結(jié)果有偶數(shù)個(gè)1,P標(biāo)志位為0時(shí)轉(zhuǎn)移無(wú)符號(hào)小于等于轉(zhuǎn)移C+Z無(wú)符號(hào)數(shù)比較時(shí)小于或等于,C標(biāo)志位或Z標(biāo)志位為1則轉(zhuǎn)移無(wú)符號(hào)大于轉(zhuǎn)移C+Z無(wú)符號(hào)數(shù)比較時(shí)大于,C標(biāo)志位和Z標(biāo)志位為0則轉(zhuǎn)移有符號(hào)小于轉(zhuǎn)移NV有符號(hào)數(shù)比較時(shí)小于,NV標(biāo)志位不為0則轉(zhuǎn)移有符號(hào)大于或等于轉(zhuǎn)移NV有符號(hào)數(shù)比較時(shí)大于或等于,NV標(biāo)志位為0則轉(zhuǎn)移有符號(hào)小于或等于轉(zhuǎn)移(NV)+Z有符號(hào)數(shù)比較時(shí)小于或等于,NV標(biāo)志位不為0或Z標(biāo)志位為1則轉(zhuǎn)移有符號(hào)大于轉(zhuǎn)移(NV)+Z有符號(hào)數(shù)比較時(shí)大于,NV標(biāo)志位和Z標(biāo)志位為0則轉(zhuǎn)移第十三頁(yè),共四十八頁(yè),2022年,8月28日6.1指令的分類(lèi)6.1.7子程序調(diào)用指令子程序調(diào)用指令包括轉(zhuǎn)子指令和返主指令。在進(jìn)行程序設(shè)計(jì)時(shí),一般都把常用的程序段編寫(xiě)成獨(dú)立的子程序或過(guò)程,在需要時(shí)隨時(shí)調(diào)用。調(diào)用子程序需要用到轉(zhuǎn)子指令。子程序執(zhí)行完畢,就需要使用返主指令返回到主程序。轉(zhuǎn)子指令的格式為:執(zhí)行轉(zhuǎn)子指令時(shí),通常采用堆棧來(lái)保存返回地址,即把下條指令的地址壓入堆棧中保存,然后才轉(zhuǎn)入所調(diào)用的子程序中執(zhí)行,子程序執(zhí)行完畢,由返主指令把壓入堆棧的返回地址從堆棧中彈出,返回調(diào)用程序。子程序調(diào)用和返回的過(guò)程如圖6-4所示。操作碼目的地址第十四頁(yè),共四十八頁(yè),2022年,8月28日6.1指令的分類(lèi)子程序調(diào)用指令和轉(zhuǎn)移指令都是改變程序的執(zhí)行順序的,但兩者有本質(zhì)的區(qū)別,主要區(qū)別是:目的地址不同。子程序調(diào)用指令的目的地址是子程序的首地址,而轉(zhuǎn)移指令的目的地址是在本程序內(nèi)。用途不同。子程序調(diào)用指令用于實(shí)現(xiàn)程序與程序之間的轉(zhuǎn)移,而轉(zhuǎn)移指令一般只用于實(shí)現(xiàn)同一程序內(nèi)的轉(zhuǎn)移。此外,子程序調(diào)用指令還可以進(jìn)行嵌套調(diào)用,即可調(diào)用別的子程序,還可以實(shí)現(xiàn)遞歸調(diào)用,即直接或間接自己調(diào)用自己。而轉(zhuǎn)移指令不能做到這些。6.1.8處理器控制指令處理器控制指令是直接控制CPU實(shí)現(xiàn)某種功能的指令。包括狀態(tài)標(biāo)志位的操作指令、停機(jī)指令、等待指令、空操作指令、封鎖總線指令等。第十五頁(yè),共四十八頁(yè),2022年,8月28日6.2指令格式指令格式是指一條指令由什么樣的代碼組成,應(yīng)該包含哪些內(nèi)容。計(jì)算機(jī)的指令格式與機(jī)器的字長(zhǎng)、存儲(chǔ)器的容量及指令的功能都有很大的關(guān)系。從便于程序設(shè)計(jì)、增加基本操作并行性、提高指令功能的角度來(lái)看,指令中應(yīng)包含多種信息。但在有些指令中,由于部分信息可能無(wú)用,這將浪費(fèi)指令所占的存儲(chǔ)空間,并增加了訪存次數(shù),也許反而會(huì)影響速度。為了指出數(shù)據(jù)的來(lái)源、操作結(jié)果的去向及所執(zhí)行的操作,一條指令必須包含操作碼和地址碼兩部分內(nèi)容,其中操作碼規(guī)定了操作的類(lèi)型,地址碼規(guī)定了要操作的數(shù)據(jù)所存放的地址,以及操作結(jié)果的存放地址,如下所示。6.2.1指令信息1.指令字長(zhǎng)度指令字長(zhǎng)度是指一條指令字中包含的二進(jìn)制代碼的位數(shù),它等于操作碼長(zhǎng)度加上地址碼長(zhǎng)度。機(jī)器字長(zhǎng)是指計(jì)算機(jī)能直接處理的二進(jìn)制數(shù)據(jù)的位數(shù),它決定了計(jì)算機(jī)的運(yùn)算精度。指令字長(zhǎng)度與機(jī)器字長(zhǎng)沒(méi)有固定的關(guān)系,二者可以相等,也可以不等。通常指令字長(zhǎng)度等于機(jī)器字長(zhǎng)度的指令,稱(chēng)為單字長(zhǎng)指令;指令字長(zhǎng)度等于半個(gè)機(jī)器字長(zhǎng)度的指令,稱(chēng)為半字長(zhǎng)指令;指令字長(zhǎng)度等于兩個(gè)機(jī)器字長(zhǎng)度的指令,稱(chēng)為雙字長(zhǎng)指令;指令字長(zhǎng)度大于兩個(gè)機(jī)器字長(zhǎng)度的指令,稱(chēng)為多字長(zhǎng)指令。操作碼地址碼第十六頁(yè),共四十八頁(yè),2022年,8月28日6.2指令格式2.操作碼操作碼具體規(guī)定了操作的性質(zhì)及功能,指定了相應(yīng)的硬件要完成的操作。指令不同,操作碼的編碼也不同。操作碼要占用一定的指令字長(zhǎng),其位數(shù)取決于指令系統(tǒng)的規(guī)模。指令操作碼的長(zhǎng)度確定了指令系統(tǒng)中完成不同操作的指令條數(shù),操作碼位數(shù)越多,所能表示的操作種類(lèi)就越多。若某機(jī)器的操作碼長(zhǎng)度為n位,則它最多只能編制2n條不同的指令。指令操作碼通常有兩種編碼格式:固定格式和可變格式。(1)固定格式操作碼的長(zhǎng)度是固定的,且集中放在指令字的某一個(gè)字段中。這種格式的優(yōu)點(diǎn)是簡(jiǎn)化硬件設(shè)計(jì),減少指令的譯碼時(shí)間。缺點(diǎn)是操作碼的平均長(zhǎng)度長(zhǎng),需要指令字長(zhǎng)較大。一般在字長(zhǎng)較長(zhǎng)的大中型機(jī)以及超級(jí)小型機(jī)上使用。(2)可變格式操作碼的長(zhǎng)度可變,且分散地放在指令字的不同字段中。這種格式的優(yōu)點(diǎn)是可壓縮操作碼的平均長(zhǎng)度。缺點(diǎn)是控制器的設(shè)計(jì)相對(duì)較為復(fù)雜,指令的譯碼時(shí)間也較長(zhǎng)。一般在字長(zhǎng)較短的微小型機(jī)上廣為采用。第十七頁(yè),共四十八頁(yè),2022年,8月28日6.2指令格式如某機(jī)器的指令長(zhǎng)度為16位,以4位為1個(gè)字段,分成4個(gè)字段,一個(gè)4位的操作碼字段,3個(gè)4位的地址碼字段,其指令格式為:其中4位基本操作碼可有16種編碼,可以表示16條三地址指令。假如,我們用可變格式編碼,要表示15條三地址指令,15條二地址指令,15條一地址指令和16條零地址指令,共表示61條指令,則可以進(jìn)行如下安排:l)三地址指令15條:其操作碼由4位基本操作碼的0000~1110給出,剩下的一個(gè)編碼1111用于把操作碼擴(kuò)展到A1字段。2)二地址指令15條:操作碼擴(kuò)展到A1字段,則操作碼有8位,可從11110000~11111111,用11110000~11111110作為15條二地址指令的操作碼,剩下的一個(gè)編碼11111111用于把操作碼擴(kuò)展到A2字段。第十八頁(yè),共四十八頁(yè),2022年,8月28日6.2指令格式3.地址碼地址碼用來(lái)指明指令操作的對(duì)象在什么位置,一般可以包含以下內(nèi)容:(1)操作數(shù)地址:明確指出要操作的操作數(shù)存放在哪里,以便CPU可以通過(guò)這個(gè)地址取得操作數(shù)。操作數(shù)地址可以有兩個(gè),即可以有兩個(gè)操作數(shù),其地址分別用A1和A2來(lái)表示。(2)操作結(jié)果的存放地址:指明對(duì)操作數(shù)的處理結(jié)果的存儲(chǔ)地址,用A3表示。(3)下一條要執(zhí)行的指令的地址:用A4表示。在一般情況下,程序是順序執(zhí)行的,下一條要執(zhí)行的指令的地址就由程序計(jì)數(shù)器(ProgramCounter,PC)給出,當(dāng)遇到轉(zhuǎn)移指令及調(diào)用子程序等程序轉(zhuǎn)移時(shí),下一條要執(zhí)行的指令的地址應(yīng)該由指令指明。并不是所有指令都必須包含地址碼,如果地址碼信息在指令中顯式地給出,則稱(chēng)為顯地址指令,反之稱(chēng)為隱地址指令。第十九頁(yè),共四十八頁(yè),2022年,8月28日6.2指令格式指令格式指令中所包含的地址碼信息并不總是相同的,根據(jù)地址碼所給出的地址的個(gè)數(shù),可以把指令格式分成零地址指令、一地址指令、二地址指令、三地址指令和多地址指令。1.零地址指令零地址指令只有操作碼而無(wú)操作數(shù),通常也叫無(wú)操作數(shù)指令。其格式為:其中,OPCode表示操作碼。只有操作碼的指令可能有兩種情況:(1)不需要操作數(shù)的控制類(lèi)指令,如空操作指令、停機(jī)指令、等待指令等。(2)隱含操作數(shù)的指令,如堆棧結(jié)構(gòu)計(jì)算機(jī)的運(yùn)算指令,其所需的操作數(shù)是隱含在堆棧中的,由堆棧指針SP指出,操作結(jié)果仍然放回堆棧中。又如Intel8086/8088中的字符串處理指令,源操作數(shù)和目的操作數(shù)分別隱含在源變址寄存器SI和目的變址寄存器DI所指定的存儲(chǔ)單元中。OPCode第二十頁(yè),共四十八頁(yè),2022年,8月28日6.2指令格式2.一地址指令一地址指令只包含一個(gè)操作數(shù)的地址,通常也叫單操作數(shù)指令,其指令格式為:其中,OPCode表示操作碼,A表示操作數(shù)的存儲(chǔ)器地址或寄存器名。一地址指令也有兩種情況:(1)這個(gè)地址既是操作數(shù)的地址,又是操作結(jié)果的地址。如加1指令、減1指令、移位指令等均可采用這種格式。這類(lèi)指令的操作原理是對(duì)地址碼中所指定的操作數(shù)進(jìn)行操作后,把操作結(jié)果又送回該地址中。(2)地址碼所指定的操作數(shù)是源操作數(shù),而目的操作數(shù)則隱含在累加器中,操作結(jié)果也存回累加器。如以Z-80、Intel8086/8088等微處理器為核心的8位、16位微型計(jì)算機(jī)的算術(shù)邏輯運(yùn)算指令大都采用這種格式。OPCodeA第二十一頁(yè),共四十八頁(yè),2022年,8月28日6.2指令格式3.二地址指令二地址指令一般是運(yùn)算類(lèi)指令,又稱(chēng)雙操作數(shù)指令。指令中顯式地給出參加運(yùn)算的兩個(gè)操作數(shù)地址,其格式為:其中,OPCode表示操作碼,A1表示源操作數(shù)的存儲(chǔ)器地址或寄存器名,A2表示目的操作數(shù)的存儲(chǔ)器地址或寄存器名。這類(lèi)指令是最常用的指令格式。操作后,其操作結(jié)果存放在A2所指定的地址中。OPCodeA1A2第二十二頁(yè),共四十八頁(yè),2022年,8月28日6.2指令格式4.三地址指令三地址指令中包含三個(gè)操作數(shù)地址,其中前兩個(gè)為源操作數(shù)地址,第三個(gè)為目的操作數(shù)地址,其指令格式為:其中,OPCode表示操作碼,A1表示第一個(gè)操作數(shù)的存儲(chǔ)器地址或寄存器名,A2表示第二個(gè)操作數(shù)的存儲(chǔ)器地址或寄存器名,A3表示操作結(jié)果的存儲(chǔ)地址。操作后A1、A2中的操作數(shù)均保持原來(lái)的數(shù)據(jù),操作結(jié)果存放在A3所指定的地址中。由于多了一個(gè)地址,造成指令碼較長(zhǎng),既耗費(fèi)存儲(chǔ)空間,又增加取指令時(shí)間,因此這類(lèi)指令一般應(yīng)用于運(yùn)算能力較強(qiáng)、內(nèi)存空間較大的大、中型機(jī)中。OPCodeA1A2A3第二十三頁(yè),共四十八頁(yè),2022年,8月28日6.2指令格式5.多地址指令這類(lèi)指令有三個(gè)以上操作數(shù)地址,指令碼長(zhǎng),在某些性能較好的大、中型機(jī)以及高檔小型機(jī)中采用。如字符串處理指令、向量、矩陣運(yùn)算指令等。應(yīng)該說(shuō)明的是,以上所述5種指令格式,并非所有的計(jì)算機(jī)都具有的,一般來(lái)說(shuō),零地址指令、一地址指令和二地址指令的指令碼較短,具有所需存儲(chǔ)空間少,執(zhí)行速度快,硬件實(shí)現(xiàn)簡(jiǎn)單等優(yōu)點(diǎn),為結(jié)構(gòu)簡(jiǎn)單的微、小型機(jī)所采用;在字長(zhǎng)較長(zhǎng)、功能較強(qiáng)的大、中型機(jī)中除采用零地址指令、一地址指令和二地址指令外,也使用三地址指令和多地址指令,如CDCSTAR-100機(jī)的矩陣運(yùn)算指令就有7個(gè)地址字段。第二十四頁(yè),共四十八頁(yè),2022年,8月28日6.3尋址方式所謂尋址就是尋找操作數(shù)或信息的地址,尋址技術(shù)就是指令按什么方式尋找到所需的操作數(shù)或信息,而尋址方式就是產(chǎn)生訪問(wèn)主存的實(shí)際地址的方法。尋址方式與計(jì)算機(jī)的硬件結(jié)構(gòu)密切相關(guān),從指令的執(zhí)行角度,可以將尋址方式分為指令的尋址方式和操作數(shù)的尋址方式兩種。6.3.1指令的尋址形成指令地址的方式稱(chēng)為指令的尋址方式。實(shí)際上指令的尋址是在程序執(zhí)行的過(guò)程中在主存中找到將要執(zhí)行的指令地址的過(guò)程。指令的尋址方式包括順序?qū)ぶ泛吞S尋址兩種。1.順序?qū)ぶ贩绞匠绦蛑械闹噶钔ǔJ且来未娣旁谥鞔嬷?,?dāng)執(zhí)行程序時(shí),首先把程序的首地址賦予程序計(jì)數(shù)器PC,然后根據(jù)PC內(nèi)容從內(nèi)存中取出指令,當(dāng)指令穩(wěn)定到達(dá)指令寄存器后,PC內(nèi)容自動(dòng)加1(對(duì)單字長(zhǎng)指令而言),以便指向下一條指令。當(dāng)?shù)谝粭l指令執(zhí)行完后,再根據(jù)PC的值從內(nèi)存中取出第二條指令,PC再自動(dòng)加1,如此反復(fù),直到程序執(zhí)行完畢,這種方式稱(chēng)為指令的順序?qū)ぶ贰m樞驅(qū)ぶ愤^(guò)程如圖6-5所示。第二十五頁(yè),共四十八頁(yè),2022年,8月28日6.3尋址方式圖6-5順序?qū)ぶ愤^(guò)程第二十六頁(yè),共四十八頁(yè),2022年,8月28日6.3尋址方式2.跳轉(zhuǎn)尋址方式若在內(nèi)存中取出的指令是轉(zhuǎn)移指令或轉(zhuǎn)子指令,則下一條指令就不能順序執(zhí)行了,需要根據(jù)本條指令給出的下一條指令地址修改程序計(jì)數(shù)器PC的內(nèi)容,以按照轉(zhuǎn)移指令或轉(zhuǎn)子指令中給出的新的指令地址去執(zhí)行,這種方式稱(chēng)為跳轉(zhuǎn)尋址方式。轉(zhuǎn)移指令或轉(zhuǎn)子指令的執(zhí)行即賦予PC新指令地址。采用跳轉(zhuǎn)尋址方式,可以實(shí)現(xiàn)程序轉(zhuǎn)移或構(gòu)成循環(huán),從而能縮短程序長(zhǎng)度,或?qū)⒛承┏绦蜃鳛楣渤绦蛞?。指令系統(tǒng)中的各種有條件或無(wú)條件轉(zhuǎn)移指令,就是為了實(shí)現(xiàn)指令的跳轉(zhuǎn)尋址而設(shè)置的。跳轉(zhuǎn)尋址過(guò)程如圖6-6所示。第二十七頁(yè),共四十八頁(yè),2022年,8月28日6.3尋址方式圖6-6跳轉(zhuǎn)尋址過(guò)程第二十八頁(yè),共四十八頁(yè),2022年,8月28日6.3尋址方式6.3.2操作數(shù)的尋址尋找操作數(shù)有效地址的方法,稱(chēng)為操作數(shù)的尋址方式,通常所講的尋址方式就是指操作數(shù)的尋址方式。指令中操作數(shù)的地址是由形式地址和尋址方式特征位等組合而成的,因此一般來(lái)說(shuō)指令中所給出的地址并非操作數(shù)的有效地址。操作數(shù)的有效地址用EA表示,尋址就是把操作數(shù)的形式地址轉(zhuǎn)換為有效地址EA。不同的計(jì)算機(jī)有不同的尋址方式,這里介紹大多數(shù)機(jī)器都具有的基本尋址方式。1.隱含尋址方式隱含尋址方式是指操作數(shù)隱含在CPU的某個(gè)通用寄存器或內(nèi)存的某指定單元中,指令中不直接給出操作數(shù)或操作數(shù)地址。該方式的優(yōu)點(diǎn)是可以縮短指令的長(zhǎng)度,因此隱含尋址方式是在字長(zhǎng)較短的微、小型機(jī)上普遍采用的尋址方式。如在Intel8086/8088中,乘法指令為MULOPRMUL是操作碼,表示乘法;OPR是乘數(shù),而被乘數(shù)則隱含在累加器AX(16位乘法)或AL(8位乘法)中。第二十九頁(yè),共四十八頁(yè),2022年,8月28日6.3尋址方式2.立即數(shù)尋址方式操作數(shù)由指令的地址碼直接給出的尋址方式稱(chēng)為立即數(shù)尋址方式。在這種尋址方式中,當(dāng)取出指令時(shí),操作碼和操作數(shù)同時(shí)被取出,不必再去訪問(wèn)存儲(chǔ)器,因此這類(lèi)尋址方式的指令執(zhí)行速度較快。但是,由于操作數(shù)是指令的一部分,因此操作數(shù)不能修改。另外在大多數(shù)指令系統(tǒng)中地址碼的長(zhǎng)度與字長(zhǎng)度相比是較短的,所以操作數(shù)的大小受地址長(zhǎng)度的限制。這種尋址方式適用于操作數(shù)固定的情況,通常用于給某一個(gè)寄存器或存儲(chǔ)器單元賦初值或提供一個(gè)常數(shù)等。例如,Intel8086/8088的傳送指令:MOVAX,imm由立即數(shù)imm直接給出的操作數(shù)傳送到累加器AX中。3.直接尋址方式指令的地址碼部分給出的不是操作數(shù),而是操作數(shù)的存儲(chǔ)器地址即有效地址,根據(jù)該地址就可以直接讀取操作數(shù),這種尋址方式稱(chēng)為直接尋址方式。直接尋址方式的尋址過(guò)程如圖6-7所示。第三十頁(yè),共四十八頁(yè),2022年,8月28日6.3尋址方式圖6-7直接尋址過(guò)程其中,X為直接尋址方式的代碼說(shuō)明。這種尋址方式的優(yōu)點(diǎn)是簡(jiǎn)單、直觀,便于硬件實(shí)現(xiàn),指令執(zhí)行只需要一次存儲(chǔ)器的訪問(wèn)時(shí)間且不需要任何地址計(jì)算,因此速度較快。但是由于操作數(shù)的地址是指令的一部分,不能修改,因此只能用于訪問(wèn)固定存儲(chǔ)器單元的指令。例如:Intel8086/8088的傳送指令:MOVAX,[address]源操作數(shù)放在直接地址address所指定的存儲(chǔ)器單元中。即有效地址為:EA=address第三十一頁(yè),共四十八頁(yè),2022年,8月28日6.3尋址方式4.寄存器尋址方式當(dāng)操作數(shù)不放在內(nèi)存而是放在CPU的通用寄存器中時(shí),可以采用寄存器尋址方式。應(yīng)用該種尋址方式指令的地址碼部分給出的是存放操作數(shù)的某一通用寄存器名稱(chēng)而不是內(nèi)存的地址單元號(hào)。寄存器尋址方式的尋址過(guò)程如圖6-8所示。其中,X為寄存器尋址方式的代碼說(shuō)明。其有效地址為:EA=R這種尋址方式的地址碼較短,而且從寄存器中存取數(shù)據(jù)比從存儲(chǔ)器中存取數(shù)據(jù)快得多,故這種尋址方式可以縮短指令的長(zhǎng)度,節(jié)省存儲(chǔ)空間,提高指令的執(zhí)行速度,在現(xiàn)代計(jì)算機(jī)中得到廣泛的應(yīng)用。但應(yīng)用這種尋址方式操作數(shù)必須事先由主存取出裝入寄存器。如果操作數(shù)經(jīng)過(guò)一次操作后又送回主存,則由寄存器暫存這些內(nèi)容實(shí)際上是一種浪費(fèi)。然而如果暫存在寄存器中的操作數(shù)能夠?yàn)槎鄠€(gè)操作使用,則寄存器尋址方式不失為提高指令執(zhí)行速度的上佳選擇。第三十二頁(yè),共四十八頁(yè),2022年,8月28日6.3尋址方式5.間接尋址方式指令的地址碼部分給出的不是操作數(shù),也不是操作數(shù)的地址,而是操作數(shù)地址的地址,即指示一個(gè)存儲(chǔ)器地址,在該地址中存放操作數(shù)的地址,這種尋址方式稱(chēng)為間接尋址方式,簡(jiǎn)稱(chēng)間址。間接尋址方式的尋址過(guò)程如圖6-9所示。其中,X為間接尋址方式的代碼說(shuō)明。其有效地址為:EA=(A0)=A1由于直接尋址的尋址范圍有限,間接尋址就成為擴(kuò)展地址空間的有效方法。在多數(shù)計(jì)算機(jī)中,只允許一次間址,即最多訪問(wèn)存儲(chǔ)器兩次,一次讀操作數(shù)的地址,另一次讀操作數(shù)。有的計(jì)算機(jī)允許多次間址,如美國(guó)DG公司的MV系列計(jì)算機(jī)。多次間址需要多次訪問(wèn)存儲(chǔ)器,這就降低了指令的執(zhí)行速度。第三十三頁(yè),共四十八頁(yè),2022年,8月28日6.3尋址方式6.寄存器間接尋址方式指令的地址碼部分給出的是寄存器名,寄存器中存放了操作數(shù)的地址,這種尋址方稱(chēng)為寄存器間接尋址方式。寄存器間接尋址方式的尋址過(guò)程如圖6-10所示。其中,X為寄存器間接尋址方式的代碼說(shuō)明。其有效地址為:EA=(R)例如:Intel8086/8088中的指令:MOVAL,[BX]其中的源操作數(shù)就是寄存器間接尋址方式。指令執(zhí)行的結(jié)果在AL中存放的不是BX中的內(nèi)容,而是將BX中的內(nèi)容作為地址的存儲(chǔ)單元的內(nèi)容。這種尋址方式只需一次訪問(wèn)存儲(chǔ)器,可以提高指令的執(zhí)行速度,在大多數(shù)計(jì)算機(jī)中被廣泛采用。第三十四頁(yè),共四十八頁(yè),2022年,8月28日6.3尋址方式7.相對(duì)尋址方式把程序計(jì)數(shù)器PC的當(dāng)前內(nèi)容與指令地址碼部分給出的形式地址(經(jīng)常是偏移量)之和作為操作數(shù)有效地址的尋址方式稱(chēng)為相對(duì)尋址。程序計(jì)數(shù)器的內(nèi)容就是當(dāng)前指令的地址。這種尋址方式實(shí)際上是用程序計(jì)數(shù)器作為變址寄存器使用的一種特殊的變址尋址方式,因而也稱(chēng)程序計(jì)數(shù)器尋址。相對(duì)尋址過(guò)程如圖6-11所示。其中,X為相對(duì)尋址方式的代碼說(shuō)明,K為指令寄存器內(nèi)容,即指令地址,A為偏移量。這類(lèi)尋址方式的尋址過(guò)程是,指令地址K與指令地址碼部分給出的地址A相加,得到操作數(shù)在存儲(chǔ)器中的實(shí)際地址。其有效地址為:EA=(PC)十A這種尋址方式的特點(diǎn)是,操作數(shù)的存儲(chǔ)地址是不固定的,它隨指令地址(程序計(jì)數(shù)器值)的變化而改變;程序員無(wú)需用指令的絕對(duì)地址編程,可以把程序放在內(nèi)存的任何地方;位移量可正可負(fù),通常用補(bǔ)碼表示。第三十五頁(yè),共四十八頁(yè),2022年,8月28日6.3尋址方式8.基址寄存器尋址方式在這種尋址方式中,把主存的整個(gè)存儲(chǔ)空間分成若干段,段的首地址存放于基址寄存器中,段內(nèi)位移量由指令直接給出。操作數(shù)在存儲(chǔ)器的存儲(chǔ)地址就等于基址寄存器RB的內(nèi)容(即段首地址)與段內(nèi)位移量A之和。其有效地址為EA=(RB)+A基址尋址技術(shù)原先用于大、中型機(jī)中,現(xiàn)已被移植到微、小型機(jī)上。該種尋址方式必須在CPU中設(shè)置基址寄存器。這種尋址方式的優(yōu)點(diǎn)是可以擴(kuò)大尋址能力?;芳拇嫫鞯奈粩?shù)可以設(shè)置得比較長(zhǎng),因此可以在較大的存儲(chǔ)空間中尋址。另外,基址寄存器尋址方式比較靈活,通過(guò)修改基址寄存器的內(nèi)容就可以訪問(wèn)存儲(chǔ)器的任一單元。第三十六頁(yè),共四十八頁(yè),2022年,8月28日6.3尋址方式9.變址尋址方式變址尋址方式與基址尋址方式計(jì)算有效地址的方法很相似,應(yīng)用變址尋址方式的指令地址碼中給出某個(gè)變址寄存器名稱(chēng),該寄存器存儲(chǔ)的內(nèi)容為某存儲(chǔ)器單元地址。所謂變址寄存器是通用寄存器中的某些寄存器。以變址寄存器中的內(nèi)容為基址,加上指令地址碼部分給出的偏移量之和作為操作數(shù)的有效地址的尋址方式稱(chēng)為變址尋址方式。變址尋址過(guò)程如圖6-12所示。其中,X為變址尋址方式的代碼說(shuō)明,K為變址寄存器內(nèi)容,A為偏移量。這類(lèi)指令的尋址過(guò)程是,指令地址碼部分給出的地址A(通常是偏移量)和指定的變址寄存器R的內(nèi)容K(通常是首地址)通過(guò)地址加法器相加,即得到操作數(shù)在存儲(chǔ)器中的存儲(chǔ)地址。其有效地址為:EA=(R)+A這類(lèi)指令通常用于字符串處理、向量運(yùn)算等成批數(shù)據(jù)處理中。例如,Intel8086/8088中的傳送指令:MOVAX,address[BX]該條指令中的源操作數(shù)的尋址方式為變址方式,源操作數(shù)的地址是BX寄存器的內(nèi)容與address之和。使用變址尋址方式的目的不在于擴(kuò)大尋址空間,而在于實(shí)現(xiàn)程序塊的規(guī)律性變化。第三十七頁(yè),共四十八頁(yè),2022年,8月28日6.3尋址方式10.塊尋址方式塊尋址方式經(jīng)常用在輸入輸出指令中,以實(shí)現(xiàn)外存儲(chǔ)器或外圍設(shè)備同內(nèi)存之間的數(shù)據(jù)塊傳送。塊尋址方式在內(nèi)存中還可用于數(shù)據(jù)塊搬移。塊尋址,通常在指令中指出數(shù)據(jù)塊的起始地址(首地址)和數(shù)據(jù)塊的長(zhǎng)度(字?jǐn)?shù)或字節(jié)數(shù))。如果數(shù)據(jù)塊是定長(zhǎng)的,只需在指令中指出數(shù)據(jù)塊的首地址;如果數(shù)據(jù)塊是變長(zhǎng)的,可用三種方法指出它的長(zhǎng)度:(1)指令中劃出字段指出長(zhǎng)度;(2)指令格式中指出數(shù)據(jù)塊的首地址與末地址;(3)由塊結(jié)束字符指出數(shù)據(jù)塊長(zhǎng)度。塊尋址的指令格式如下:操作碼首地址標(biāo)志位末地址第三十八頁(yè),共四十八頁(yè),2022年,8月28日6.3尋址方式11.段尋址方式微型機(jī)中采用了段尋址方式,它是為擴(kuò)大尋址范圍而采用的技術(shù)。例如在Intel8086/8088系統(tǒng)中,處理器為16位,其地址Reg也是16位,直接尋址范圍只有64KB。然而采用段尋址方式,由段寄存器提供16位段地址,與其他某寄存器提供的16位偏移地址共同形成20位物理地址,使得處理器直接尋址可達(dá)1MB。在形成20位物理地址時(shí),段寄存器中的16位數(shù)會(huì)自動(dòng)左移4位,然后與16位偏移量相加,即可形成所需的內(nèi)存地址。這種尋址方式的實(shí)質(zhì)還是基址尋址。段尋址的有效地址形成過(guò)程如圖6-13所示。第三十九頁(yè),共四十八頁(yè),2022年,8月28日6.4指令的執(zhí)行6.4.1指令的執(zhí)行過(guò)程每條指令的執(zhí)行過(guò)程,大致可以分為三步:即取指令、分析指令和執(zhí)行指令,分別稱(chēng)為取指、分析和執(zhí)行。1.有關(guān)指令周期的概念(1)指令周期指令周期是執(zhí)行一條指令所需要的時(shí)間。也就是從取指令開(kāi)始到執(zhí)行完這條指令為止的全部時(shí)間。一個(gè)指令周期由若干個(gè)機(jī)器周期組成。(2)機(jī)器周期機(jī)器周期也叫CPU周期。是指CPU訪問(wèn)一次主存或輸入輸出端口所需要的時(shí)間。一個(gè)機(jī)器周期由若干個(gè)時(shí)鐘周期組成。(3)時(shí)鐘周期時(shí)鐘周期是CPU處理操作的最小時(shí)間單位,也叫T周期、T狀態(tài)。(4)取指和取指周期從主存儲(chǔ)器中讀出指令,稱(chēng)為“取指”,讀出一條指令所需的時(shí)間稱(chēng)為“取指周期”。同一機(jī)器的所有指令的取指周期都相同。一般計(jì)算機(jī)的取指周期是一個(gè)機(jī)器周期的時(shí)間。(5)執(zhí)行指令和執(zhí)行時(shí)間取指操作后實(shí)現(xiàn)指令功能的全過(guò)程稱(chēng)為“執(zhí)行指令”,執(zhí)行一條指令所需的時(shí)間為“執(zhí)行時(shí)間”。指令不同其執(zhí)行時(shí)間也不同,一般一條指令的執(zhí)行時(shí)間需要若干個(gè)機(jī)器周期的時(shí)間。取指周期和執(zhí)行時(shí)間之和稱(chēng)為指令周期,即從取指開(kāi)始到指令執(zhí)行結(jié)束所需的總時(shí)間。第四十頁(yè),共四十八頁(yè),2022年,8月28日6.4指令的執(zhí)行2.指令執(zhí)行過(guò)程分析(1)數(shù)據(jù)傳送指令指令形式:MOVR1,R2 解釋?zhuān)涸撝噶钍前言醇拇嫫鞯膬?nèi)容傳送到目的寄存器之中。操作過(guò)程:該指令執(zhí)行的三個(gè)過(guò)程——取指、分析、執(zhí)行分別如下。1)取指要執(zhí)行數(shù)據(jù)傳送指令MOVR1,R2時(shí),程序計(jì)數(shù)器PC的內(nèi)容為這條指令在主存中的地址,把該地址值裝入地址寄存器MAR,再送地址總線,然后由地址總線尋找該地址所在的主存單元,讀出該指令的指令代碼,經(jīng)數(shù)據(jù)總線輸入CPU中的指令寄存器IR。2)分析(指令譯碼)指令的操作碼經(jīng)指令譯碼器譯碼后,識(shí)別出這是一條從源寄存器到目的寄存器的寄存器傳送指令,R1,R2所對(duì)應(yīng)的地址碼經(jīng)各目的地址譯碼器譯碼,分別選中源寄存器R1和目的寄存器R2。在指令譯碼的同時(shí),程序計(jì)數(shù)器PC的內(nèi)容加1,以指向下一條指令,保證程序的順序執(zhí)行。3)執(zhí)行根據(jù)指令譯碼的結(jié)果,以及所選中的源寄存器和目的寄存器,控制器發(fā)出相應(yīng)的控制信號(hào),有序地開(kāi)啟三態(tài)門(mén),通過(guò)數(shù)據(jù)總線進(jìn)行數(shù)據(jù)傳送操作。該指令執(zhí)行完,又按新的PC值進(jìn)入下一條指令的取指操作。第四十一頁(yè),共四十八頁(yè),2022年,8月28日6.4指令的執(zhí)行(2)加法指令指令形式:ADDEA解釋?zhuān)涸撝噶钪付ㄒ粋€(gè)操作數(shù)是累加器AC中的值,EA為存放另一個(gè)操作數(shù)的主存單元有效地址,指令的功能是把累加器AC和有效地址為EA的主存單元的內(nèi)容相加,其和送回到累加器AC中。即實(shí)現(xiàn)(AC)+(EA)→AC。操作過(guò)程:該指令執(zhí)行的三個(gè)過(guò)程是:1)取指把程序計(jì)數(shù)器PC的內(nèi)容(指令地址)裝入地址寄存器MAR,送到地址總線,然后由地址總線選中該地址所在的主存單元,取出該指令的指令代碼,經(jīng)數(shù)據(jù)總線輸入CPU中的指令寄存器IR。2)分析(指今譯碼)指令的操作碼經(jīng)指令譯碼器譯碼后,識(shí)別出這是一條累加器AC與主存單元相加的加法指令,存放在指令寄存器IR中的數(shù)據(jù)地址EA輸出到地址總線,地址總線根據(jù)地址EA在加法指令控制下從主存單元讀出相應(yīng)數(shù)據(jù),送上數(shù)據(jù)總線并裝入CPU中的暫存寄存器TR。在指令譯碼的同時(shí),程序計(jì)數(shù)器PC的內(nèi)容加1,產(chǎn)生下一條指令地址。3)執(zhí)行累加器AC中的數(shù)據(jù)和暫存寄存器TR中的數(shù)據(jù)送入算術(shù)邏輯運(yùn)算部件ALU進(jìn)行加法操作,操作后的兩數(shù)之和由ALU輸出,經(jīng)數(shù)據(jù)總線輸入累加器AC。該指令操作結(jié)束。該指令執(zhí)行完,又按新的PC值進(jìn)入下一條指令的指令周期。第四十二頁(yè),共四十八頁(yè),2022年,8月28日6.4指令的執(zhí)行(3)轉(zhuǎn)移指令指令形式:JMPEA解釋?zhuān)涸撝噶钍菬o(wú)條件轉(zhuǎn)移到以EA為轉(zhuǎn)移地址的轉(zhuǎn)移指令。操作過(guò)程:該指令執(zhí)行的三個(gè)過(guò)程是:1)取指把程序計(jì)數(shù)器PC的內(nèi)容(指令地址)裝入地址寄存器MAR,送到地址總線,然后由地址總線選中該地址所在的主存單元,取出該指令的指令代碼,經(jīng)數(shù)據(jù)總線輸入CPU中的指令寄存器IR。2)分析(指令譯碼)指令的操作碼經(jīng)指令譯碼器譯碼后,識(shí)別出這是一條無(wú)條件轉(zhuǎn)移指令。在指令譯碼的同時(shí),程序計(jì)數(shù)器PC的內(nèi)容加1,產(chǎn)生下一條指令地址。3)執(zhí)行識(shí)別出這是一條無(wú)條件轉(zhuǎn)移指令后,即把指令中的地址碼部分——轉(zhuǎn)移地址EA送上數(shù)據(jù)總線,再裝入程序計(jì)數(shù)器PC,至此,無(wú)條件轉(zhuǎn)移指令執(zhí)行結(jié)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論