版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第3章處理器3.1處理器的指令集
3.2處理器的基本組成與工作過程
3.3從CISC到RISC3.4Intel80x86系列微處理器
3.5ARM系列微處理器
2023/7/26第3章處理器3.1處理器的指令集
3.1.1概述
人們與計算機交流所用的“詞匯”叫做“指令(Instruction)”,所有可以采用的“詞匯”組成的集合叫做“指令集(InstructionSet)”,這些“詞匯”按照一定的順序組合就形成了程序(Program)。在國內(nèi),“指令集”常稱為“指令系統(tǒng)”。
2023/7/26第3章處理器3.1.1概述
計算機能直接識別的是由0和1排列而成的指令,即所謂“機器指令”。使用不方便。匯編語言是基于英文的機器指令助記符。例如,某個機器指令原來用0101表示加法運算,現(xiàn)在引入助記符ADD或add來表示0101,方便了人們編寫程序。按匯編語言書寫的程序叫做匯編語言源程序,匯編語言源程序由匯編程序(Assembler)轉(zhuǎn)換成機器指令,供計算機接受并執(zhí)行。2023/7/26第3章處理器3.1.1概述
匯編語言的提出是計算機技術(shù)的一大進步,體現(xiàn)了計算思維的一個重要概念——抽象。
計算機程序設(shè)計語言的發(fā)展過程就是不斷抽象的過程。通過抽象,程序設(shè)計語言具有了更好的可編程性、可移植性、可重用性。2023/7/26第3章處理器3.1處理器的指令集
3.1.2指令的操作碼與操作數(shù)
指令操作碼(OperationCode)指令操作數(shù)(Operand)3.1.1概述
馮·諾依曼型計算機機器指令的邏輯格式
規(guī)定了指令所具有的功能。課程中主要用匯編語言助記符表示。指令所要處理的數(shù)據(jù)。常以數(shù)據(jù)所在存儲單元的地址形式給出。也稱“指令地址碼”。2023/7/26第3章處理器3.1.2指令的操作碼與操作數(shù)
一條指令中,操作數(shù)可能有一個、兩個或三個,甚至更多。當(dāng)然,操作數(shù)的個數(shù)也可以是零,即指令沒有操作數(shù),如停機指令。
在這些操作數(shù)中,作為處理單元輸入的叫源操作數(shù)(SourceOperand),用于存放處理結(jié)果的叫目的操作數(shù)(DestinationOperand)。2023/7/26第3章處理器3.1.2指令的操作碼與操作數(shù)
指令中所能表示的操作數(shù)數(shù)據(jù)類型,即能夠被計算機硬件直接辨識的操作數(shù)數(shù)據(jù)類型,稱為“數(shù)據(jù)表示”。常見的“數(shù)據(jù)表示”有定點數(shù)(含有符號數(shù)和無符號數(shù))、浮點數(shù)(含單精度浮點數(shù)和雙精度浮點數(shù))、字符、邏輯數(shù)(又稱布爾型數(shù)據(jù))。2023/7/26第3章處理器3.1.2指令的操作碼與操作數(shù)
“堆棧(Stack)”是一個重要的數(shù)據(jù)結(jié)構(gòu),廣泛應(yīng)用于子程序調(diào)用和中斷服務(wù)等領(lǐng)域。堆棧的存取原則是后進先出(LastInFirstOut,LIFO)。對堆棧的操作都是針對棧頂單元進行的,有“壓入(PUSH)”和“彈出(POP)”兩條指令。2023/7/26第3章處理器3.1.2指令的操作碼與操作數(shù)
用專門的硬件設(shè)備來實現(xiàn)的堆棧稱為級聯(lián)堆?;蛴布褩!榱私档陀布杀?,大多數(shù)計算機(特別是微型計算機)常用軟件來實現(xiàn)堆棧,即在內(nèi)存中開辟一個堆棧區(qū),并在處理器中設(shè)置指示堆棧棧頂單元地址的“堆棧指針寄存器(StackPointer,SP)”來管理這個堆棧。2023/7/26第3章處理器3.1.2指令的操作碼與操作數(shù)
相對于硬件堆棧,軟件堆棧有三個優(yōu)點:可以有較大的深度??梢栽O(shè)置多個堆棧。除了專門的堆棧指令PUSH和POP外,還可以使用任何訪問主存的指令來訪問堆棧中的數(shù)據(jù)。2023/7/26第3章處理器3.1.2指令的操作碼與操作數(shù)
只有標(biāo)量數(shù)據(jù)表示和標(biāo)量指令的處理器叫標(biāo)量處理器,這是最常見、最通用的處理器。帶有向量數(shù)據(jù)表示和向量指令的處理器叫向量處理器,例如我國于20世紀(jì)80年代研制的銀河-1超級計算機就裝備有向量處理器。2023/7/26第3章處理器3.1處理器的指令集
3.1.3尋址方式
所謂尋址方式(Addressing)指的是指令按照何種方式尋找或訪問到所需的操作數(shù)或信息。尋址方式分為指令尋址和數(shù)據(jù)尋址。指令尋址是為了找到下一條指令;數(shù)據(jù)尋址是為了找到本條指令所需的操作數(shù)。
2023/7/26第3章處理器3.1.3尋址方式
分為順序?qū)ぶ泛吞S尋址兩種。順序?qū)ぶ肪褪浅绦蛴嫈?shù)器PC中的值就是下一條指令的存儲地址。每讀取一次PC后,PC自動加1,指向下一條指令。跳躍尋址則是先由當(dāng)前指令改寫PC的內(nèi)容,然后計算機讀取PC,根據(jù)PC的值訪問主存儲器,取下一條指令。1.指令尋址
2023/7/26第3章處理器改寫PC的指令有“跳轉(zhuǎn)指令(Jump)”和“分支指令(Branch)”。在國內(nèi),“跳轉(zhuǎn)指令”常稱為“無條件轉(zhuǎn)移指令”,“分支指令”常稱為“條件轉(zhuǎn)移指令”。這兩種指令既可直接賦予PC一個新的值,也可在PC現(xiàn)有值的基礎(chǔ)上增加或減少一定數(shù)量。后者也稱“相對尋址”或“PC相對尋址”,其中增加或減少的數(shù)量叫做“相對位移量”,它是一個補碼表示整數(shù)。1.指令尋址
2023/7/26第3章處理器3.1.3尋址方式
立即數(shù)尋址直接尋址間接尋址堆棧尋址1.指令尋址
2.數(shù)據(jù)尋址
寄存器尋址寄存器間接尋址基址尋址變址尋址2023/7/26第3章處理器(1)立即數(shù)尋址(ImmediateAddressing)(2)直接尋址(DirectAddressing)2.數(shù)據(jù)尋址
在指令中直接給出操作數(shù)的數(shù)值。只要取到指令,就可以立即處理指令中的操作數(shù),這種操作數(shù)叫做“立即數(shù)”。在指令中直接給出操作數(shù)內(nèi)存地址?!爸苯訉ぶ贰眻?zhí)行時間較長。另外,由于指令長度的限制,指令中采用“直接尋址”的操作數(shù)的個數(shù)一般不超過兩個,所能尋址的范圍較小。
2023/7/26第3章處理器(3)間接尋址(IndirectAddressing)
2.數(shù)據(jù)尋址
指令中給出的主存地址中存放的并不是操作數(shù),而是操作數(shù)的內(nèi)存地址。先按指令給出的地址訪問主存讀出操作數(shù)的存放地址,然后再次訪問主存,訪問目標(biāo)操作數(shù)?!伴g接尋址”的優(yōu)點一是擴大了主存中操作數(shù)的尋址范圍,二是使用同一條指令可以訪問/處理存放于不同主存單元中的數(shù)據(jù)。
2023/7/26第3章處理器(4)寄存器尋址(RegisterAddressing)
2.數(shù)據(jù)尋址
操作數(shù)是寄存器名(即寄存器編號),指令要處理的數(shù)據(jù)就存儲在該寄存器中。處理器的寄存器數(shù)量很少,所以寄存器名很短,采用“寄存器尋址”的指令格式中可以放下兩個或三個寄存器地址。優(yōu)點是增加了指令中操作數(shù)的個數(shù),增強了指令的功能;獲取操作數(shù)的速度快。2023/7/26第3章處理器(5)寄存器間接尋址(RegisterIndirectAddressing)
2.數(shù)據(jù)尋址
存儲在寄存器中的是操作數(shù)的內(nèi)存地址。在讀取寄存器后,要按照讀取值訪問內(nèi)存,才能獲得真正的操作數(shù)。優(yōu)點是,通過改變寄存器中的內(nèi)存地址,可用相同的指令處理不同的數(shù)據(jù);指令較短,執(zhí)行速度較快
。
2023/7/26第3章處理器(6)基址尋址(
BaseAddressing
)
2.數(shù)據(jù)尋址
“邏輯地址”是程序員編寫程序時使用的地址。“主存物理地址”是程序段/數(shù)據(jù)段在主存中的實際存放地址。程序段/數(shù)據(jù)段的“邏輯地址”都是從零開始編址的。而程序段/數(shù)據(jù)段每次裝入主存的起始地址是不確定的,每次運行時,某條指令或某個數(shù)據(jù)的“主存物理地址”也是不確定的。但是這條指令或這個數(shù)據(jù)的“邏輯地址”是固定的。2023/7/26第3章處理器(6)基址尋址(
BaseAddressing
)
2.數(shù)據(jù)尋址
為了實現(xiàn)“邏輯地址”到“主存物理地址”的轉(zhuǎn)換,可以在處理器內(nèi)部設(shè)置一個專門存放程序段/數(shù)據(jù)段在主存中起始地址的寄存器,稱起始地址為“基地址”,簡稱“基址”,稱該寄存器為“基址寄存器”。這樣在執(zhí)行時將“邏輯地址”與基址寄存器中的值相加即得到指令或數(shù)據(jù)的“主存物理地址”。指令中給出的“邏輯地址”又稱為相對于基址的“位移量”,位移量是一個有符號的整數(shù),常用補碼表示。
2023/7/26第3章處理器(7)變址尋址(IndexedAddressing)
2.數(shù)據(jù)尋址
為支持用循環(huán)結(jié)構(gòu)處理數(shù)組/向量而提出。尋址過程:將數(shù)組/向量的起始地址作為操作數(shù)在指令中給出,將數(shù)組/向量的元素下標(biāo)i存放在一個專門的寄存器——變址寄存器中。指令執(zhí)行時,用變址加法器將指令中的起始地址與變址寄存器中的內(nèi)容相加,得到數(shù)組/向量元素的地址。由于對數(shù)組/向量的訪問既可能是順序訪問,又可能是隨機訪問,這樣只需改變變址寄存器中的i值,就可/訪問到數(shù)組/向量的任一元素。2023/7/26第3章處理器2.數(shù)據(jù)尋址
為了支持同時處理多個數(shù)組或向量,處理器可設(shè)置多個變址寄存器。例如,8086微處理器有兩個變址寄存器,一個是存放源操作數(shù)變址值的寄存器SI,另一個是存放目的操作數(shù)變址值的寄存器DI。此時,采用“變址尋址”指令中除了要給出數(shù)組/向量的起始地址外,還需指明使用的是哪個變址寄存器。變址尋址還可與其他尋址方式結(jié)合使用。例如與基址尋址結(jié)合可得到“基址變址尋址”,與“間接尋址”結(jié)合可以得到“先變址后間接尋址”等。
2023/7/26(7)變址尋址(IndexedAddressing)
第3章處理器(8)堆棧尋址2.數(shù)據(jù)尋址
采用“堆棧尋址”的前提是處理器支持堆棧數(shù)據(jù)結(jié)構(gòu),設(shè)置有“堆棧指針寄存器SP”?!岸褩ぶ贰睙o須給出操作數(shù)的存儲地址,只要聲明操作數(shù)采用堆棧尋址,機器就會根據(jù)棧頂指示寄存器的內(nèi)容找到棧頂單元,然后對棧頂單元進行彈出或壓入操作。2023/7/26第3章處理器根據(jù)堆棧的增長方向,基于主存儲器實現(xiàn)的堆棧分為:①遞增堆棧(AscendingStack),也稱向上增長堆棧。隨著數(shù)據(jù)的壓入,這種堆棧向高地址方向增長;②遞減堆棧(DescendingStack),也稱向下增長堆棧。隨著數(shù)據(jù)的壓入,這種堆棧向低地址方向增長。2023/7/26(8)堆棧尋址第3章處理器根據(jù)SP所指示棧頂單元的屬性,堆棧也可分為:①滿堆棧(FullStack)。SP指示棧頂單元存儲的是最后壓入數(shù)據(jù)。②空堆棧(EmptyStack)。SP指示棧頂單元用于接收下一個要壓入的數(shù)據(jù)。
2023/7/26(8)堆棧尋址第3章處理器2023/7/262009年全國研究生入學(xué)統(tǒng)一考試計算機專業(yè)試題某機器字長16位,主存按字節(jié)編址,轉(zhuǎn)移指令采用相對尋址,由兩個字節(jié)組成,第一字節(jié)為操作碼字段,第二字節(jié)為相對位移量字段。假定取指令時,每取一個字節(jié)PC自動加1。若某轉(zhuǎn)移指令所在主存地址為2000H,相對位移量字段的內(nèi)容為06H,則該轉(zhuǎn)移指令成功轉(zhuǎn)移后的目標(biāo)地址是
。A.2006HB.2007HC.2008HD.2009H2011年全國研究生入學(xué)統(tǒng)一考試計算機專業(yè)試題偏移尋址通過將某個寄存器內(nèi)容與一個形式地址相加而生成有效地址。下列尋址方式中,不屬于偏移尋址的是
。A.間接尋址B.基址尋址C.相對尋址D.變址尋址第3章處理器3.1處理器的指令集
3.1.4指令的基本功能
通用計算機系統(tǒng)的指令集可分為5類基本指令:(1)算術(shù)/邏輯/移位指令(簡稱算邏指令)(2)數(shù)據(jù)傳送指令(簡稱數(shù)傳指令)(3)控制轉(zhuǎn)移指令(4)輸入/輸出指令(5)處理器控制及調(diào)試指令2023/7/26第3章處理器3.1.4指令的基本功能
(1)算邏指令定點加法指令A(yù)DD定點減法指令SUB定點乘法指令MUL定點除法指令DIV加1指令I(lǐng)NC減1指令DEC比較指令CMP浮點加法指令A(yù)DDF浮點減法指令SUBF浮點乘法指令MULF浮點除法指令DIVF十進制數(shù)算術(shù)運算指令使用這些指令時,要注意它們對處理器中狀態(tài)標(biāo)志位的影響算術(shù)指令2023/7/26第3章處理器3.1.4指令的基本功能
(1)算邏指令“與”運算指令A(yù)ND“或”運算指令OR“非”運算指令NOT“異或”運算指令XOR位測試位清除位求反
算術(shù)左移指令算術(shù)右移指令邏輯左移指令邏輯右移指令帶進位循環(huán)左移指令不帶進位循環(huán)左移指令帶進位循環(huán)右移指令不帶進位循環(huán)右移指令邏輯指令移位指令2023/7/26第3章處理器3.1.4指令的基本功能
(2)數(shù)傳指令根據(jù)數(shù)據(jù)的流向分:寄存器與寄存器之間的數(shù)據(jù)傳送寄存器與主存儲器單元之間的數(shù)據(jù)傳送寄存器與堆棧之間的數(shù)據(jù)傳送堆棧與主存儲器單元之間的數(shù)據(jù)傳送內(nèi)存單元與內(nèi)存單元之間的數(shù)據(jù)傳送2023/7/26第3章處理器(2)數(shù)傳指令根據(jù)傳輸?shù)墓δ芊郑阂话銈魉椭噶顚崿F(xiàn)數(shù)據(jù)復(fù)制功能,即把源操作數(shù)的內(nèi)容寫入目的操作數(shù)。其匯編語言助記符通常為MOV。在有些計算機上,將主存儲器單元的內(nèi)容寫入寄存器的數(shù)據(jù)傳送指令,其匯編語言助記符為LOAD;將寄存器內(nèi)容寫入主存儲器單元的數(shù)據(jù)傳送指令,其匯編語言助記符為STORE。2023/7/26第3章處理器(2)數(shù)傳指令根據(jù)傳輸?shù)墓δ芊郑憾褩2僮髦噶顗喝霔m擯USH彈出棧頂POPPUSH的源操作數(shù)和POP指令的目的操作數(shù),一般是寄存器號,也可能是主存儲器單元地址.2023/7/26第3章處理器(2)數(shù)傳指令
上述兩類數(shù)據(jù)指令的數(shù)據(jù)流動是單方向的。要實現(xiàn)兩個數(shù)據(jù)的交換,需要編寫三條指令并額外占用一個存儲單元。因此大多數(shù)計算機都提供“數(shù)據(jù)交換指令”來簡化雙向數(shù)據(jù)流動的實現(xiàn),如Intel80x86中的XCHG指令。這類指令的源操作數(shù)和目的操作數(shù)一般都是寄存器,至多允許源操作數(shù)是主存儲器單元。數(shù)據(jù)交換指令的執(zhí)行時間一般較長。2023/7/26第3章處理器3.1.4指令的基本功能
(1)算邏指令(2)數(shù)傳指令(3)控制轉(zhuǎn)移指令跳轉(zhuǎn)指令JUMP分支指令子程序調(diào)用CALL/返回指令RET循環(huán)控制指令LOOP中斷系統(tǒng)指令
將指令操作數(shù)的內(nèi)容寫入PC之中,強制改變指令執(zhí)行的順序。也稱無條件轉(zhuǎn)移指令2023/7/26第3章處理器3.1.4指令的基本功能
(3)控制轉(zhuǎn)移指令跳轉(zhuǎn)指令JUMP分支指令根據(jù)特定條件(往往是上一條指令的執(zhí)行結(jié)果),決定程序是順序執(zhí)行還是轉(zhuǎn)移到一個新的位置執(zhí)行,即有條件地改變指令執(zhí)行的順序。也稱條件轉(zhuǎn)移指令。條件轉(zhuǎn)移指令可能依據(jù)的條件有:為0、為正/負數(shù)、發(fā)生進位/借位、為奇數(shù)/偶數(shù)、發(fā)生溢出或以上條件的組合。
2023/7/26第3章處理器3.1.4指令的基本功能
(3)控制轉(zhuǎn)移指令分支指令條件轉(zhuǎn)移指令又分為“絕對轉(zhuǎn)移”和“相對轉(zhuǎn)移”兩種。對于“絕對轉(zhuǎn)移”,當(dāng)條件滿足時,計算機將把該指令中所含操作數(shù)的內(nèi)容直接寫入PC中。對于“相對轉(zhuǎn)移”,當(dāng)條件滿足時,計算機將把該指令中所含操作數(shù)的內(nèi)容與PC中的內(nèi)容相加后,把結(jié)果寫入PC中。
2023/7/26第3章處理器常見的條件轉(zhuǎn)移指令有:等于零轉(zhuǎn)移BEQ不等于零轉(zhuǎn)移BNEQ小于轉(zhuǎn)移BLS大于轉(zhuǎn)移BGT小于等于轉(zhuǎn)移/不大于轉(zhuǎn)移BLEQ大于等于轉(zhuǎn)移/不小于轉(zhuǎn)移BGEQ不帶符號小于轉(zhuǎn)移BLSU不帶符號大于轉(zhuǎn)移BGTU不帶符號小于等于轉(zhuǎn)移/不帶符號不大于轉(zhuǎn)移BLEQU不帶符號大于等于轉(zhuǎn)移/不帶符號不小于轉(zhuǎn)移BGEQU沒有進位轉(zhuǎn)移BCC有進位轉(zhuǎn)移BCS沒有溢出轉(zhuǎn)移BVC有溢出轉(zhuǎn)移BVS2023/7/26第3章處理器(3)控制轉(zhuǎn)移指令跳轉(zhuǎn)指令JUMP分支指令子程序調(diào)用CALL/返回指令RET
在程序中,有一些具有特定功能的程序段會被反復(fù)使用。為了提高程序的可讀性、可重用性和可維護性,人們將這樣的程序段獨立出來,將其定義成一個子程序。這樣,在需要執(zhí)行特定功能時,主程序中不再需要編寫一個程序段,而只需要編寫一條調(diào)用子程序的指令即可。
2023/7/26第3章處理器子程序調(diào)用CALL/返回指令RET調(diào)用子程序的指令格式:CALLSubprogram_Name功能是,首先把當(dāng)前程序的斷點(也稱主調(diào)程序的返回地址,即當(dāng)前程序計數(shù)器PC中的值)保存到系統(tǒng)堆棧中,然后由子程序名Subprogram_Name求得子程序的入口地址,最后把子程序的入口地址寫入PC,從而將程序控制轉(zhuǎn)移至被調(diào)子程序。調(diào)用子程序指令CALL一般都與“返回指令RET”一起配合使用。RET指令的功能是把保存在堆棧中的程序斷點彈回到PC之中。2023/7/26第3章處理器3.1.4指令的基本功能
(1)算邏指令(2)數(shù)傳指令(3)控制轉(zhuǎn)移指令(4)輸入/輸出指令為了完成主機與外設(shè)之間信息交換的各種操作而設(shè)置,包括:啟動輸入/輸出設(shè)備、停止輸入/輸出設(shè)備、測試輸入/輸出設(shè)備及數(shù)據(jù)的輸入或輸出等指令。例如,Intel80x86中的輸入指令為IN指令,輸出指令為OUT指令。
2023/7/26第3章處理器3.1.4指令的基本功能
(1)算邏指令(2)數(shù)傳指令(3)控制轉(zhuǎn)移指令(4)輸入/輸出指令(5)處理器控制及調(diào)試指令包括各種設(shè)置/清除標(biāo)志位(如陷阱標(biāo)志、中斷允許標(biāo)志、處理器工作狀態(tài)標(biāo)志位)指令、特權(quán)指令、進程同步指令、調(diào)試指令、停機指令(HALT)等。調(diào)試指令用于硬件或軟件的調(diào)試。硬件調(diào)試指令包括鑰匙位置、開關(guān)狀態(tài)的讀取指令,重要寄存器和主存儲器單元內(nèi)容的顯示等。軟件調(diào)試指令包括斷點的設(shè)置及跟蹤指令,自陷阱指令等。2023/7/26第3章處理器對于面向多用戶系統(tǒng)的處理器,為了保證信息安全,處理器的工作狀態(tài)被分為核心態(tài)(Kernelmode/Systemmode)和用戶態(tài)(Usermode)。僅能在核心態(tài)(也叫管理態(tài)/管態(tài))下運行的指令稱為特權(quán)指令(Privilegedinstruction)。用戶態(tài)(也叫目態(tài))下的程序要想執(zhí)行管態(tài)下的功能(由操作系統(tǒng)實現(xiàn)并提供用戶使用)必須通過執(zhí)行“訪管指令”來實現(xiàn)。2023/7/26第3章處理器此外,還有:空操作指令NOP和等待指令WAIT一般通用計算機應(yīng)具有的指令及其功能參見表4-1訪管指令是一條可以在目態(tài)下執(zhí)行的指令,用戶程序中凡是要調(diào)用操作系統(tǒng)功能的地方就安排一條訪管指令。當(dāng)執(zhí)行到訪管指令時,處理器就自愿地產(chǎn)生一個中斷事件(訪管中斷),暫停用戶程序的執(zhí)行,陷入管態(tài),讓操作系統(tǒng)為用戶服務(wù)。2023/7/26第3章處理器3.1處理器的指令集
3.1.5指令的格式
涉及指令的操作碼長度、指令“地址制”及采用的尋址方式、指令長度等三方面的問題。
2023/7/26第3章處理器3.1.5指令的格式
(1)指令操作碼的長度有定長和不定長兩種選擇選擇定長的操作碼可以簡化指令譯碼器的設(shè)計與實現(xiàn);選擇不定長操作碼(也稱擴展操作碼)可使常用指令擁有較短的操作碼而不常用指令擁有較長的操作碼(即哈夫曼壓縮編碼),從而壓縮程序所占的存儲空間。2023/7/26第3章處理器3.1.5指令的格式
(2)在一條指令中出現(xiàn)幾個操作數(shù)地址,這是指令的“地址制”所要解決的問題。一般情況下,指令中地址的個數(shù),可以取4,3,2,1,0個。在四地址指令中,兩個地址分別指示兩個源操作數(shù),一個地址指示目的操作數(shù),最后一個地址指示下一條指令的存儲單元。2023/7/26第3章處理器三地址指令是在四地址指令的基礎(chǔ)上,將指令中下一條指令的地址省略掉,改用PC來指示下一條指令的地址。兩地址指令是在三地址指令的基礎(chǔ)上,將一個源操作數(shù)同時作為目的操作數(shù)。一地址指令是在兩地址指令的基礎(chǔ)上,隱含使用某個寄存器(如ACC)作為一個源操作數(shù)或目的操作數(shù)。停機指令、清除/設(shè)置特定標(biāo)志位指令無須操作數(shù),即為零地址。2023/7/26第3章處理器“地址制”設(shè)計或改進的目的是為了壓縮指令長度,縮短指令的執(zhí)行時間。在相同的指令長度內(nèi),減少地址個數(shù)可以擴大所能表示指令的條數(shù)或操作數(shù)的尋址范圍。同一條指令中不同操作數(shù)可采用不同的尋址方式例如,一條指令中的操作數(shù)可以都存放在寄存器里,也可以把一個操作數(shù)存放在寄存器里,而另一個操作數(shù)存放在主存里。存放在主存里的操作數(shù)可以按基址尋址、變址尋址或間接尋址。2023/7/26第3章處理器3.1.5指令的格式
指令長度可以是固定或變化的。固定長度的指令便于指令的存取和譯碼,但會限制操作數(shù)個數(shù)的增加和復(fù)雜尋址方式的使用;而變化長度的指令的特點正好相反。例如,IBMS/370指令采用定長的8位操作碼,有單地址、兩地址和三地址三種地址制,不同的操作數(shù)可以采用不同的尋址方式,指令字長有16位、32位和48位三種。2023/7/26第3章處理器3.1處理器的指令集
3.1.1概述
3.1.2指令的操作碼與操作數(shù)3.1.3尋址方式3.1.4指令的基本功能
3.1.5指令的格式3.1.6面向多媒體處理的增強指令
請同學(xué)們自行閱讀、了解。2023/7/26第3章處理器3.1處理器的指令集
3.2處理器的基本組成與工作過程
3.2.1處理器的基本功能和基本組成1.處理器概述從外觀上看,處理器是矩形或正方形的塊狀物,通過密密麻麻的管腳與主板相連。
實現(xiàn)處理器內(nèi)部各個單元之間信號傳輸?shù)木€路稱為片內(nèi)總線,它又分為片內(nèi)控制總線和片內(nèi)數(shù)據(jù)總線。用于實現(xiàn)處理器與主存儲器和輸入/輸出設(shè)備之間信號傳輸?shù)木€路稱為片外總線,簡稱總線。2023/7/26第3章處理器3.2.1處理器的基本功能和基本組成1.處理器概述除了電源引腳(Vcc)和接地引腳(GND)外,大部分引腳都用于信號傳輸。按照傳輸信號類別的不同,這些引腳可以分為數(shù)據(jù)總線引腳、地址總線引腳和控制總線引腳。若數(shù)據(jù)總線的寬度是8位,則數(shù)據(jù)總線引腳將被命名為D0,D1,…,D7;若數(shù)據(jù)總線的寬度是16位,則數(shù)據(jù)總線引腳將被命名為D0,D1,…,D15。32位的數(shù)據(jù)總線可類推。2023/7/26第3章處理器3.2.1處理器的基本功能和基本組成1.處理器概述若處理器的訪存地址寬度是10位,則地址總線引腳將被命名為A0,A1,…,A9;若訪存地址寬度是20位,則地址總線引腳將被命名為A0,A1,…,A19。32位的地址總線可類推。常見的控制總線引腳有時鐘CLK、復(fù)位RESET、總線請求HRQ、總線允許HLDA、中斷請求INTR、中斷響應(yīng)INTA、讀RD、寫WR等。
2023/7/26第3章處理器3.2.1處理器的基本功能和基本組成2.處理器的基本功能處理器的工作就是周而復(fù)始地執(zhí)行指令,它的基本功能包括取指令、分析指令、取數(shù)據(jù)、處理數(shù)據(jù)、寫回結(jié)果。(1)取指令。處理器根據(jù)PC給出的主存地址訪問主存儲器,取出一個標(biāo)準(zhǔn)字長的指令,將其送入處理器內(nèi)部專門存放當(dāng)前指令的指令寄存器IR,然后PC加1。2023/7/26第3章處理器(2)分析指令。處理器將IR中的操作碼部分取出送入指令譯碼器(Decoder)進行譯碼。根據(jù)譯碼結(jié)果判斷出指令的功能(即指令將要執(zhí)行什么操作)、操作數(shù)的尋址方式以及操作數(shù)的數(shù)據(jù)類型,形成源操作數(shù)或目的操作數(shù)的物理地址。(3)取數(shù)據(jù)。根據(jù)源操作數(shù)的物理地址訪問主存,取出源操作數(shù)。源操作數(shù)將被送入處理器內(nèi)部的數(shù)據(jù)寄存器,如累加器ACC。2023/7/26第3章處理器(4)處理數(shù)據(jù)。處理器將源操作數(shù)送入運算器,并根據(jù)指令譯碼結(jié)果啟動運算器的相應(yīng)操作對數(shù)據(jù)進行處理。處理結(jié)果存回通用數(shù)據(jù)寄存器。(5)寫回結(jié)果。如果指令要求將結(jié)果寫回主存,那么處理器將根據(jù)目的操作數(shù)的地址,將目的操作數(shù)寫入主存。
2023/7/263.2.1處理器的基本功能和基本組成2.處理器的基本功能第3章處理器3.2.1處理器的基本功能和基本組成3.處理器的基本組成訪問主存是處理器經(jīng)常執(zhí)行的一個公共操作。為此,處理器設(shè)置了專門存放訪存地址的寄存器MAR、專門存放與主存交換數(shù)據(jù)的寄存器MDR/MBR。在用戶看來,只要把主存地址送入MAR,啟動讀命令,在一個訪存周期內(nèi),目標(biāo)數(shù)據(jù)就會從主存被讀入到MDR中;或者只要把主存地址送入MAR并把目標(biāo)數(shù)據(jù)送入MDR,啟動寫命令,在一個訪存周期內(nèi),目標(biāo)數(shù)據(jù)就會從MDR被寫回到主存中。2023/7/26第3章處理器3.2.1處理器的基本功能和基本組成3.處理器的基本組成處理數(shù)據(jù)的功能單元叫算術(shù)邏輯單元ALU,它的功能是對數(shù)據(jù)進行各種算術(shù)運算或邏輯運算。2023/7/26第3章處理器3.2.1處理器的基本功能和基本組成2023/7/26第3章處理器3.處理器的基本組成根據(jù)馮·諾依曼型計算機的特點,處理器的所有工作都是在控制單元CU的指揮下完成的。CU的功能是,通過對指令的分析(譯碼),按照一定的時序,發(fā)出控制信號,使CPU在控制信號的驅(qū)動下,完成相應(yīng)指令的功能。2023/7/26第3章處理器3.處理器的基本組成處理器內(nèi)部設(shè)置有大量的寄存器。高級語言程序員,無須了解這些寄存器。中級程序(如C語言)程序員,可能需要了解一些寄存器的知識。匯編語言程序員需要對寄存器有深入的了解。但是即使是匯編語言程序員,處理器內(nèi)部的某些寄存器也是無須關(guān)心的,如MAR和MDR。即,MAR和MDR對匯編程序員是“透明的”。2023/7/26第3章處理器寄存器分為“用戶可見的寄存器”和“用戶透明的寄存器”,這里的“用戶”是指匯編語言程序員?!坝脩艨梢姷募拇嫫鳌卑ㄍㄓ脭?shù)據(jù)寄存器、基址寄存器、變址寄存器、FR、PC等“用戶透明的寄存器”包括MAR、MDR、ALU的輸入寄存器A和B以及輸出寄存器SUM
3.處理器的基本組成2023/7/26第3章處理器目前,中斷已經(jīng)成為計算機/處理器不可或缺的功能。沒有中斷,很多現(xiàn)代計算機系統(tǒng)的功能(比如多用戶、多任務(wù))都無法實現(xiàn)。所謂中斷,是指計算機在執(zhí)行程序的過程中,當(dāng)出現(xiàn)異常情況或特殊請求時,計算機會在適當(dāng)時機暫停現(xiàn)行程序的運行,轉(zhuǎn)向執(zhí)行處理這些異常情況或特殊請求的程序(即中斷處理程序或中斷服務(wù)程序),處理結(jié)束后再返回到現(xiàn)行程序的間斷處繼續(xù)執(zhí)行。3.處理器的基本組成2023/7/26第3章處理器能夠發(fā)出中斷請求的部件或事件,稱為“中斷源”。為了區(qū)分不同請求信號,不同的中斷源被賦予了一個不同的“中斷類型號”。由于中斷請求信號到來的時間是隨機的,處理器不可能隨時對它進行處理。通常約定:中斷可以中斷程序,但不能中斷指令。處理器只會在指令執(zhí)行的末尾,去檢測是否有中斷請求。若有,并且處理器處于允許響應(yīng)的狀態(tài),則響應(yīng)中斷請求,否則執(zhí)行下一條指令。3.處理器的基本組成2023/7/26第3章處理器為此,控制總線要增加接收中斷請求(InterruptRequest)信號的引腳INTR和發(fā)出中斷響應(yīng)(InterruptAcknowledge)信號的引腳INTA。處理器內(nèi)部要設(shè)置一個“中斷允許(EnableInterrupt,EINT)”標(biāo)志和一個中斷狀態(tài)觸發(fā)器“INT”。EINT=1,表示允許響應(yīng)中斷請求,否則不允許。響應(yīng)中斷請求后,處理器將進入中斷狀態(tài)——INT被置成1。可以通過“開中斷(SetInterrupt,STI)”指令將EINT置為1,也可以通過“關(guān)中斷(ClearInterrupt,CLI)”指令將EINT清成0。2023/7/26第3章處理器處理器內(nèi)部與中斷有關(guān)的邏輯電路稱為中斷單元,實現(xiàn)中斷的所有硬件和軟件稱為中斷系統(tǒng)。中斷技術(shù)的詳細內(nèi)容將在第8章中介紹.2023/7/2609年計算機專業(yè)研究生入學(xué)統(tǒng)一考試試題下列選項中,能引起外部中斷的事件是
。A.鍵盤輸入B.除數(shù)為0C.浮點運算下溢D.訪存缺頁答:根據(jù)中斷源位于處理器的內(nèi)部還是外部,中斷分為內(nèi)部中斷和外部中斷。內(nèi)部中斷的例子有:除數(shù)為0,溢出,非法訪問(如越界訪問等。外部中斷的例子有:來至外設(shè)的中斷(如鍵盤輸入),來至定時器的時鐘中斷等?!霸L存缺頁”屬于故障,不是中斷。故選A。第3章處理器3.2.1處理器的基本功能和基本組成2023/7/26第3章處理器3.2處理器的組成與工作過程
3.2.2計算機的工作過程計算機的工作是由處理器的工作來驅(qū)動的,所以這里討論計算機的工作過程主要關(guān)注處理器的工作,而處理器的工作就是執(zhí)行指令。通常,把處理器取出并執(zhí)行一條指令稱為對指令的解釋(Interpret)。處理器每取出并執(zhí)行一條指令所需的全部時間叫指令周期。2023/7/26第3章處理器3.2.2計算機的工作過程在一個指令周期內(nèi),處理器所要完成的操作有“取指”和“執(zhí)行”,“取指”就是將一條指令從主存取入到處理器中,“執(zhí)行”就是對指令進行譯碼并完成其指定的操作2023/7/26第3章處理器3.2.2計算機的工作過程有的指令采用間接尋址。為了取到操作數(shù),在取指周期之后還有一個訪問主存,讀取操作數(shù)地址的周期,這個周期就是間址周期。2023/7/26第3章處理器3.2.2計算機的工作過程不同指令所完成的功能不同,所以它們的指令周期也不盡相同。例如,無條件轉(zhuǎn)移指令“JUMPTARGET”在取指周期中就可以把轉(zhuǎn)移目標(biāo)地址“TARGET”寫入PC,不再需要執(zhí)行其他操作,所以無條件轉(zhuǎn)移指令的執(zhí)行周期就可以省略。類似的還有空操作指令NOP。2023/7/26第3章處理器加法指令“ADDX”在執(zhí)行周期中需要訪問地址為X的主存單元取出操作數(shù),將其與ACC中的數(shù)據(jù)相加,結(jié)果存回ACC。該指令取指周期和執(zhí)行周期中的主要操作都是訪問一次主存,其取指周期和執(zhí)行周期可以設(shè)計成等長。有的指令在執(zhí)行周期中需要完成較多的操作,那么它的執(zhí)行周期就要長于取指周期,乘/除法指令就是這樣的指令。2023/7/26第3章處理器由于不同指令的指令周期不盡相同,為了簡化控制,一般將其設(shè)計成某個基準(zhǔn)周期的整數(shù)倍,這個基準(zhǔn)周期稱為機器周期。機器周期是所有指令執(zhí)行過程中的一個基準(zhǔn)時間。指令操作分為處理器內(nèi)部操作和對主存的訪問兩類。前者完成時間較短,而后者完成時間較長。為了保證在一個機器周期至少能夠完成一個指令的基本操作,選取處理器訪問一次主存的時間(也稱主存周期)作為機器周期。
2023/7/26第3章處理器在一個機器周期內(nèi),處理器需要完成若干帶有時序限制的微操作,每個微操作的完成也需要一定的時間。為了實現(xiàn)對微操作的控制,處理器用時鐘信號CLK來控制每一個微操作命令的產(chǎn)生。這樣,在一個機器周期內(nèi)又包含了若干時鐘周期(也稱節(jié)拍)。一個節(jié)拍的寬度正好等于一個時鐘周期。在一個節(jié)拍內(nèi),處理器完成一個或幾個可以同時執(zhí)行的微操作。2023/7/26第3章處理器為了實現(xiàn)各種操作的時序控制,在處理器內(nèi)部專門設(shè)置有時鐘部件。指令周期、機器周期和節(jié)拍的關(guān)系如下圖所示。2023/7/26第3章處理器3.2.2計算機的工作過程
下面以計算X
+
Y為例來編制控制計算機/處理器工作的程序。(1)從內(nèi)存單元X中取數(shù)據(jù)送入累加器ACC;(2)ACC加上內(nèi)存單元Y中的數(shù)據(jù),結(jié)果存回ACC中;(3)ACC的值存入內(nèi)存單元Z中;(4)停機。2023/7/26第3章處理器3.2.2計算機的工作過程此程序在某模型機上運行,用到的指令如下:指令名稱助記符指令功能操作碼指令操作數(shù)數(shù)據(jù)讀入LOAD將某個內(nèi)存單元X中的數(shù)據(jù)取出并送入ACC0001B內(nèi)存單元X的地址加法ADDACC加上內(nèi)存單元Y中的數(shù)據(jù),結(jié)果存回ACC中0010B內(nèi)存單元Y的地址數(shù)據(jù)存回STORE將ACC的值存入內(nèi)存單元Z中0011B內(nèi)存單元Z的地址停機HALT停止處理器工作1000B無操作數(shù)2023/7/26第3章處理器程序存入主存的結(jié)果如下,其中分配給變量X,Y和Z的內(nèi)存單元地址是1100B、1101B和1110B。
主存單元地址匯編程序指令操作碼指令操作數(shù)1000BLOADX0001B1100B1001BADDY0010B1101B1010BSTOREZ0011B1110B1011BHALT1000B1100BX0000B0001B1101BY0000B0010B1110BZ2023/7/26第3章處理器執(zhí)行程序時,管理程序先將程序第一條指令的地址(1000B)送入PC,然后啟動執(zhí)行。
LOADX取指周期T1將PC中內(nèi)容送MAR,MAR把它的內(nèi)容送到地址總線上T2處理器發(fā)出“讀”命令信號T3數(shù)據(jù)總線上的內(nèi)容送入MDRT4MDR的內(nèi)容送到IR,進行譯碼執(zhí)行周期T1IR中的操作數(shù)部分送入MAR,MAR的內(nèi)容送到地址總線上T2處理器發(fā)出“讀”命令信號T3數(shù)據(jù)總線上的內(nèi)容送入MDRT4MDR的內(nèi)容送到ACC2023/7/26第3章處理器3.2.2計算機的工作過程ADDY取指周期T1PC內(nèi)容送MAR,MAR的內(nèi)容送到地址總線上T2處理器發(fā)出“讀”命令信號T3數(shù)據(jù)總線上的內(nèi)容送入MDRT4MDR的內(nèi)容送到IR,進行譯碼執(zhí)行周期T1IR中的操作數(shù)部分送入MAR,MAR的內(nèi)容送到地址總線上T2處理器發(fā)出“讀”命令信號T3數(shù)據(jù)總線上的內(nèi)容送入MDRT4ACC和MDR的內(nèi)容送ALU相加,結(jié)果存回ACC2023/7/26第3章處理器STOREZ取指周期T1PC內(nèi)容送MAR,MAR的內(nèi)容送到地址總線上T2處理器發(fā)出“讀”命令信號T3數(shù)據(jù)總線上的內(nèi)容送入MDRT4MDR的內(nèi)容送到IR,進行譯碼執(zhí)行周期T1IR中的操作數(shù)部分送入MAR,MAR的內(nèi)容送到地址總線上T2ACC的內(nèi)容送MDR,處理器向控制總線上發(fā)出“寫”命令信號T3MDR的內(nèi)容送數(shù)據(jù)總線T4數(shù)據(jù)總線上的內(nèi)容寫入主存相應(yīng)單元2023/7/26第3章處理器3.2.2計算機的工作過程HALT取指周期T1PC內(nèi)容送MAR,MAR的內(nèi)容送到地址總線上T2處理器向控制總線上發(fā)出“讀”命令信號T3數(shù)據(jù)總線上的內(nèi)容送入MDRT4MDR的內(nèi)容送到IR,進行譯碼。發(fā)出讓處理器停止工作的信號2023/7/26第3章處理器3.2處理器的組成與工作過程
3.2.1處理器的基本功能和基本組成3.2.2計算機的工作過程3.2.3采用流水線技術(shù)的處理器請同學(xué)們自行閱讀、了解。2023/7/26第3章處理器3.1處理器的指令集
3.2處理器的基本組成與工作過程
3.3從CISC到RISC上世紀(jì)七十年代,系列機的發(fā)展,使得計算機的指令系統(tǒng)變得越來越復(fù)雜。例如,VAX-11擁有330條指令,指令長度從16位到456位長不等,尋址方式有16種。這使得CPU的設(shè)計變得十分復(fù)雜,設(shè)計周期延長,設(shè)計成本倍增。3.3.1
RISC產(chǎn)生的背景
2023/7/26序號指令名稱使用頻率累積百分比1MOV24.8524.852PUSH10.3635.213CMP10.2845.494JMP9.0354.525ADD6.0861.326POP4.1465.467RET3.9269.388CALL3.8973.279JUMP2.7075.9710SUB2.4378.4011INC2.3780.7712LES1.9882.7513REPN1.9284.6714IMUL1.6986.3615DEC1.3787.7316XOR1.1388.8617REPNZ0.7889.6418CLD0.5490.10某計算機的指令使用頻率2023/7/26
20—80規(guī)律
在典型程序的運行中,80%的時間執(zhí)行的只是占指令系統(tǒng)20%的少數(shù)常用指令。在CPU控制存儲器中,80%的空間被只占運行時間20%的多數(shù)復(fù)雜指令占用。3.3.1
RISC產(chǎn)生的背景
由于存在著“軟硬件等價性原理”,復(fù)雜指令的功能可以由基于簡單指令的子程序來完成。所以人們就產(chǎn)生了一種想法:設(shè)計一個只具有簡單指令的簡單的CPU2023/7/26
1975年,IBM的JohnCocke領(lǐng)導(dǎo)的一個研究小組率先設(shè)計了一個只有120條簡單指令的計算機IBM8011981年,美國加州大學(xué)伯克利分校的David
Patterson設(shè)計了一個只有31條指令的簡單的微處理器,并將其命名為RISCIRISC是ReducedInstructionSetComputer的縮寫3.3.1
RISC產(chǎn)生的背景
2023/7/26IBM的JohnCocke也因此獲得了國際計算機界的最高獎——圖靈獎。此后,RISC技術(shù)得到了廣泛地接受,幾乎所有的微處理器都宣稱采用RISC技術(shù)。2023/7/26采用簡單的指令格式、尋址方式的計算機就稱為精簡指令集計算機RISC(ReducedInstructionSetComputer)相對而言,具有復(fù)雜的指令格式、尋址方式的計算機就稱為復(fù)雜指令集計算機CISC(ComplexInstructionSetComputer)3.3.1
RISC產(chǎn)生的背景
2023/7/26第3章處理器3.3從CISC到RISC3.3.1
RISC產(chǎn)生的背景3.3.2
RISC的定義
目前,指令條數(shù)的多少已不再是區(qū)分CISC和RISC的標(biāo)志,CISC和RISC正在走向融合。絕大多數(shù)現(xiàn)代微處理器都宣稱采用RISC技術(shù)。對于RISC,目前尚未出現(xiàn)一個能為眾人所接受的定義。但是人們更多關(guān)注的是RISC的特征
2023/7/26RISC的主要特征
選用使用頻率較高的一些簡單指令復(fù)雜指令的功能由簡單指令來組合
指令長度固定
只有LOAD/STORE
指令訪存
引入流水技術(shù),一個時鐘周期
完成一條指令
組合邏輯
實現(xiàn)控制器
多個
通用寄存器
采用優(yōu)化
的編譯
程序2023/7/26RISC的新發(fā)展控制系統(tǒng)部分采用微程序技術(shù);指令的種類有所增加;現(xiàn)代RISC具有如下特點1.面向寄存器結(jié)構(gòu);2.重視流水線的執(zhí)行效率;3.LOAD/STORE風(fēng)格4.重視優(yōu)化編譯技術(shù)2023/7/26第3章處理器3.3從CISC到RISC3.3.1
RISC產(chǎn)生的背景3.3.2
RISC的定義3.3.3指令級并行技術(shù)2023/7/26請同學(xué)們自行閱讀、了解。第3章處理器3.1處理器的指令集
3.2處理器的基本組成與工作過程3.3從CISC到RISC3.4Intel80x86系列微處理器
3.4.1
Intel8086/8088微處理器
8086是第一款16位微處理器,問世之初,市場上缺乏與之配套的外圍芯片,用8086來構(gòu)建微型計算機成本很高。為此,Intel公司推出與8086兼容的準(zhǔn)16位微處理器8088。8088的通用寄存器組、ALU、指令系統(tǒng)都是按照16位設(shè)計的,與8086完全相同,只不過8088的數(shù)據(jù)引腳是8位的。這樣就可以兼容當(dāng)時已有的一整套的外圍芯片。2023/7/263.4Intel80x86系列微處理器3.4.1
Intel8086/8088微處理器
8086/8088微處理器的浮點運算能力和I/O能力相對較弱,為了滿足用戶對高性能計算的要求,Intel公司還推出了兩款協(xié)處理器——數(shù)值運算協(xié)處理器8087和I/O協(xié)處理器8089。為此,只配置一個8086/8088微處理器的工作模式被定義為最小模式。在這種模式中,所有的總線控制信號都直接由8086或8088發(fā)出。相對而言,包含協(xié)處理器的微處理器工作模式被定義為最大模式。
2023/7/268086/8088在組成結(jié)構(gòu)上分為:總線接口部件(BusInterfaceUnit,BIU)執(zhí)行部件(ExecutingUnit,EU)總線接口部件負責(zé)取指令,執(zhí)行部件負責(zé)執(zhí)行指令,從而構(gòu)成了一個“兩段的流水線”。取指令1執(zhí)行指令1時間TEUBIU取指令2執(zhí)行指令2取指令3執(zhí)行指令32023/7/26SIDIBPSPDLDHCLCHBLBHALAH654321通用寄存器組AXBXCXDX外部總線內(nèi)部暫存器IPESSSDSCS運算寄存器ALU標(biāo)志輸入輸出控制電路∑執(zhí)行部分控制電路執(zhí)行部件(EU)總線接口部件(BIU)內(nèi)部總線地址加法器16位16位20位16位2023/7/268086/8088的分段存儲結(jié)構(gòu)存儲器為什么要分段呢?16位微處理器,常規(guī)上管理216=64KB的存儲空間這樣的存儲空間滿足不了應(yīng)用的要求。用什么方法來擴大呢?將正常管理的64KB存儲空間定義為一個段讓微處理器能夠管理多個這樣的段通過分段存儲結(jié)構(gòu),8086/8088能夠管理1MB的存儲空間。2023/7/268086/8088的分段存儲結(jié)構(gòu)存儲器分段后如何來管理呢?每個段的起始地址稱為:段基址或段地址每個段內(nèi)的地址稱為:段內(nèi)偏移地址一個物理存儲單元就可以通過“段地址:偏移地址”來唯一確定了如何管理“段地址”和“偏移地址”呢?設(shè)置多個段基址寄存器設(shè)置多個偏移地址寄存器都有哪些“段基址寄存器”和“偏移地址寄存器”呢?2023/7/26依照用途的不同,可分為如下段8086/8088的分段存儲結(jié)構(gòu)代碼段(CodeSegment,CS)數(shù)據(jù)段(Data
Segment,DS)堆棧段(StackSegment,SS)附加數(shù)據(jù)段(ExtendedData
Segment,ES)存儲程序(指令)代碼。其段基址存放于CS寄存器,段內(nèi)偏移地址存放于IP寄存器存儲程序定義的變量。段基址存放于DS寄存器,段內(nèi)偏移地址存放于SI、DI或BX寄存器管理系統(tǒng)堆棧。段基址存放于SS寄存器,段內(nèi)偏移地址存放于SP或BP寄存器存儲經(jīng)過處理的中間變量。段基址存放于ES寄存器,段內(nèi)偏移地址存放于SI、DI或BX寄存器2023/7/268086/8088的分段存儲結(jié)構(gòu)由段基址和相對于該段的偏移地址共同描述的地址——邏輯地址00000H----FFFFFH例如:52000H例如:5000H:2000H段基址偏移地址段基址寄存器管理程序設(shè)計中使用的,方便程序設(shè)計20根地址線所表示的地址——物理地址2023/7/260000段地址如何根據(jù)16位的段地址和16位的段內(nèi)偏移地址來計算20位的物理地址呢?
19…43…0段地址左移四位偏移地址151413……210∑20位的物理地址8086/8088的分段存儲結(jié)構(gòu)2023/7/26物理地址的計算方法段地址左移四位,再加上偏移地址,就得到20位的物理地址。5000H:2000H邏輯地址52000H物理地址計算尋址內(nèi)存…………..00000HFFFFFH2023/7/263.4Intel80x86系列微處理器3.4.1
Intel8086/8088微處理器
8086/8088的標(biāo)志分為兩類:狀態(tài)標(biāo)志和控制標(biāo)志。狀態(tài)標(biāo)志表示前面操作執(zhí)行后,算術(shù)邏輯單元所處的狀態(tài),這些狀態(tài)常作為后繼指令執(zhí)行的條件。狀態(tài)標(biāo)志有6個,分別是符號標(biāo)志SF、零標(biāo)志ZF、奇偶標(biāo)志PF、進位標(biāo)志CF、輔助進位標(biāo)志AF和溢出標(biāo)志OF??刂茦?biāo)志是人為設(shè)置的,每一個控制標(biāo)志負責(zé)控制某一種特殊的功能。控制標(biāo)志有三個,分別是方向標(biāo)志DF、中斷標(biāo)志IF和陷阱標(biāo)志TF。2023/7/263.4Intel80x86系列微處理器狀態(tài)標(biāo)志(1)符號標(biāo)志SF。與計算結(jié)果的最高位相同,表示計算結(jié)果的正/負。0表示正,1表示負。(2)零標(biāo)志ZF。若計算結(jié)果為零,則ZF=1,否則=0。(3)奇偶標(biāo)志PF。若計算結(jié)果的低8位中1的個數(shù)為偶數(shù),則PF=1,否則=0。(4)進位標(biāo)志CF。若執(zhí)行的加法運算在最高位產(chǎn)生進位,或者執(zhí)行的減法運算引起最高位產(chǎn)生借位,則CF=1,否則=0。此外,帶進位的循環(huán)移位也可能會改變CF??梢杂弥噶頢TC將CF置1,用指令CLC將CF清0,用指令CMC將CF取反。2023/7/263.4Intel80x86系列微處理器狀態(tài)標(biāo)志(5)輔助進位標(biāo)志AF。若執(zhí)行加法運算時第3位向第4位進位(即低半字節(jié)向高半字節(jié)),或者執(zhí)行減法運算時第3位從第4位借位,則AF=1,否則=0。(6)溢出標(biāo)志OF。若計算過程產(chǎn)生溢出,則OF=1,否則=0。溢出是指字節(jié)運算的結(jié)果超出了–128~+127的范圍,或者字運算的結(jié)果超出了–32768~+32767的范圍。在進行加法運算時,每當(dāng)次高位向最高位有進位而最高位沒有向前進位,或者最高位向前進位而次高位沒有向最高位進位,則ALU置OF為1。2023/7/263.4Intel80x86系列微處理器控制標(biāo)志(1)方向標(biāo)志DF。這是控制串操作指令的標(biāo)志。若DF=0,則串操作過程中地址將不斷增值,否則不斷減值??捎弥噶頢TD將DF置1,用指令CLD將DF清0。(2)中斷標(biāo)志IF。這是控制可屏蔽中斷的標(biāo)志。如果IF=0,則8086/8088對可屏蔽中斷請求不能做出響應(yīng),否則可以響應(yīng)可屏蔽中斷請求??捎弥噶頢TI將IF置1,用指令CLI將IF清0?!皩F置1”稱為“開中斷”,“將IF清0”稱為“關(guān)中斷”2023/7/263.4Intel80x86系列微處理器控制標(biāo)志(3)陷阱標(biāo)志TF。這是控制8086/8088是否進入單步執(zhí)行狀態(tài)的標(biāo)志。若TF=1,則8086/8088進入單步執(zhí)行狀態(tài)或跟蹤方式執(zhí)行指令狀態(tài),即每條指令執(zhí)行完后,微處理器暫停(進入陷阱),顯示處理器內(nèi)部各寄存器的值。進入單步執(zhí)行狀態(tài)便于程序的調(diào)試。如果TF=0,則連續(xù)執(zhí)行指令。
標(biāo)志寄存器FR有16位,9個標(biāo)志位的定義如下,未定義的7位保留
2023/7/26DISIBPSPDLDHCLCHBLBHALAHFRIPESSSDSCS數(shù)據(jù)寄存器指針寄存器和變址寄存器段寄存器指令指針標(biāo)志寄存器AXBXCXDX8086/8088的寄存器組作為累加器用,在加法運算中參與運算,結(jié)果存于累加器中;所有的I/O指令都隱含地使用AX與外部設(shè)備傳送信息。作為通用寄存器使用在采用基址尋址方式時,用作基址寄存器作為通用寄存器使用;常用來保存計數(shù)值,如在移位指令、循環(huán)指令和串處理指令中用作隱含的計數(shù)器。作為通用寄存器使用;在一些指令中,通常用它來存放數(shù)據(jù),所以又稱為數(shù)據(jù)寄存器;在做雙字長運算時,將DX和AX組合在一起存放雙字長數(shù),用DX存放高位字。當(dāng)前代碼段的段地址,指令就是從這段取出當(dāng)前代碼段的偏移地址。又稱為程序計數(shù)器,控制程序中指令執(zhí)行的順序基址指針寄存器,指示一組數(shù)據(jù)的起始地址源變址寄存器目的變址寄存器用于確定數(shù)據(jù)段中某一存儲單元的地址指向數(shù)據(jù)段,程序變量存于此段指向附加段,這個段用來存放經(jīng)過處理的中間數(shù)據(jù)堆棧指針寄存器,指示堆棧棧頂?shù)钠频刂分赶蚨褩6?,堆棧操作使用這段存儲空間2023/7/26
SP是一個專門為堆棧設(shè)置的寄存器。
堆棧(Stack)后進先出(LastInFirstOut,LIFO)例如:子彈匣注意與隊列(Queue)的區(qū)別先進先出(FirstInFirstOut,FIFO)例如:排隊乘車
2023/7/26對堆棧的操作只有兩種:壓入PUSH彈出POPSP90FFCH90FFDH90FFEH90FFFH91000HSP對堆棧的操作總是針對棧頂單元進行的棧頂單元的偏移地址總是由堆棧指示器
(StackPointer,SP)給出,堆棧段的段地址由SS指示。2023/7/2655AA
AHAL1000HSP9000HSSSP55AA90FFCH90FFDH90FFEH90FFFH91000H55AA
AHALSP9000HSS
************SP90FFCH90FFDH90FFEH
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024門店承包與品牌授權(quán)執(zhí)行合同范本3篇
- 承包光伏工程勞務(wù)合同模板
- 2024薪資保密制度與員工福利待遇及社會保障合同3篇
- 鄭州工業(yè)應(yīng)用技術(shù)學(xué)院《財務(wù)機器人設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 吉首大學(xué)張家界學(xué)院《工程招投標(biāo)與合同管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年股權(quán)代持協(xié)議:股東之間關(guān)于代持股權(quán)的約定協(xié)議
- 湛江科技學(xué)院《現(xiàn)代企業(yè)運營虛擬仿真綜合實訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 武漢理工大學(xué)《醫(yī)藥銷售管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 益陽師范高等??茖W(xué)校《美學(xué)原理》2023-2024學(xué)年第一學(xué)期期末試卷
- 北京聯(lián)合大學(xué)《數(shù)據(jù)挖掘B》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年中國大數(shù)據(jù)企業(yè)排行榜V9.0(大數(shù)據(jù)產(chǎn)業(yè)白皮書)-中國民營科技促進會
- 2025公司簡單勞務(wù)合同書范本
- 東風(fēng)集團新能源汽車培訓(xùn)
- 2024-2030年中國廣電技術(shù)行業(yè)現(xiàn)狀分析及未來發(fā)展趨勢預(yù)測報告
- 廣東省廣州市天河區(qū)2023-2024學(xué)年高一上學(xué)期期末考試數(shù)學(xué)試卷(解析版)
- 鋼構(gòu)樓板合同范例
- 2024-2025學(xué)年人教版(2024)信息技術(shù)四年級上冊 第11課 嘀嘀嗒嗒的秘密 說課稿
- 造影劑過敏的護理
- 蘇教版六年級上冊分數(shù)四則混合運算100題帶答案
- 潛水員潛水作業(yè)安全2024
評論
0/150
提交評論