




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、微型計算機(jī)原理及應(yīng)用2.1 80 x86系列微處理器是8086的延伸2.2 8086的功能結(jié)構(gòu)2.3 8086微處理器的執(zhí)行環(huán)境第2章 80 x86系列結(jié)構(gòu)微處理器與808622.1 x86系列微處理器是8086的延伸2.1.1 8086功能的擴(kuò)展2.1.2 8086性能的提高32.1.1 8086功能的擴(kuò)展1.從16位擴(kuò)展為32位8086是16位微處理器。它的內(nèi)部寄存器的主體是16位的。它的主要用于存放操作數(shù)的數(shù)據(jù)寄存器是16位的。它的主要的用作為地址指針的指針寄存器也是16位的。依賴分段機(jī)制,用20位段基地址加上16位的偏移量形成了20位的地址,可以尋址1MB的物理地址。用16位作為地址,
2、它只能表示64KB,是一個十分小的地址范圍,遠(yuǎn)遠(yuǎn)不能滿足應(yīng)用的需要。因而,于1985年,Intel公司推出了第一個32位的微處理器 - 80386,開創(chuàng)了微處理器的32位時代。目前,計算機(jī)正從32位向64位轉(zhuǎn)移。432位,無論從能表示的數(shù)的范圍,還是能尋址的物理地址,特別是能尋址的物理地址都極大的擴(kuò)展了。使得微處理器能取代以前的所謂“大型機(jī)”,能應(yīng)用于各種領(lǐng)域,從而極大地促進(jìn)了計算機(jī)在各行各業(yè)中的應(yīng)用。32位地址能尋址4GB物理地址。到目前,仍遠(yuǎn)大于主流計算機(jī)的實際內(nèi)存配置,仍有廣闊的應(yīng)用余地。52.從實模式至保護(hù)模式當(dāng)1981年,IBM公司剛推出IBM-PC時,主頻是5MHz,內(nèi)存是64KB
3、-128KB,沒有硬盤,只有單面單密度的軟盤,到了PC/XT,才有10MB硬盤。在這樣的硬件資源下,采用的操作系統(tǒng)是PC-DOS(MS-DOS)。這是單用戶、單任務(wù)的磁盤操作系統(tǒng)。操作系統(tǒng)本身沒有程序隔離、沒有保護(hù)。這是DOS遭受病毒泛濫的內(nèi)因。隨著PC機(jī)的大量普及,隨著硬件性能的迅速提高。要求有能保護(hù)操作系統(tǒng)核心軟件的多任務(wù)操作系統(tǒng)。為使這樣的操作系統(tǒng)能在微型計算機(jī)系統(tǒng)中應(yīng)用與普及,要求微處理器本身為這樣的操作系統(tǒng)提供支持。于是,從80286開始,在80386中真正完善保護(hù)模式。在保護(hù)模式下,程序運行于四個特權(quán)級。這樣,可以實現(xiàn)操作系統(tǒng)核心程序與應(yīng)用程序的嚴(yán)格的隔離。保護(hù)模式支持多任務(wù)機(jī)制,
4、任務(wù)之間完全隔離。63.片內(nèi)存儲管理單元(MMU)32位地址,可尋址4GB物理地址。但大多數(shù)PC機(jī)的物理內(nèi)存配置遠(yuǎn)小于4GB。但應(yīng)用程序卻需要龐大的地址空間。因此,在操作系統(tǒng)中提供了虛擬存儲器管理機(jī)制,而這要求硬件支持。因而,在80386中提供了片內(nèi)的MMU。提供了4K頁、頁表等支持。以上三點是80386相對于8086的主要功能擴(kuò)展。4.浮點支持工程應(yīng)用、圖形處理、科學(xué)計算等要求浮點支持(實數(shù)運算)。因此,自80486芯片開始,在x86系列微處理器中集成了x87(及其增強(qiáng))浮點單元。75.MMX技術(shù)為支持多媒體技術(shù)的應(yīng)用,如音樂合成、語音合成。語音識別、音頻和視頻壓縮(編碼)和解壓縮(譯碼)、
5、2D 和 3D 圖形(包括 3D 結(jié)構(gòu)映像)和流視頻等等。x86系列處理器中增加MMX技術(shù)及相應(yīng)的指令。6.流SIMD擴(kuò)展(SSE) 自Pentium III處理器開始,在x86系列微處理器中引進(jìn)了流SIMD(單指令多數(shù)據(jù))擴(kuò)展(SSE)技術(shù)。SSE擴(kuò)展把由Intel MMX引進(jìn)的SIMD執(zhí)行模式擴(kuò)展為新的128位XMM寄存器和能在包裝的單精度浮點數(shù)上執(zhí)行SIMD操作。8奔騰4處理器又進(jìn)一步擴(kuò)展為流SIMD擴(kuò)展2(SSE2):用144條新指令擴(kuò)展Intel MMX技術(shù)和SSE擴(kuò)展,它包括支持: 128位SIMD整數(shù)算術(shù)操作。 128位SIMD雙精度浮點操作。128 位指令設(shè)計以支持媒體和科學(xué)應(yīng)
6、用。由這些指令所用的向量操作數(shù)允許應(yīng)用程序在多個向量元素上并行操作。元素能是整數(shù)(從字節(jié)至四字)或浮點數(shù)(單精度或雙精度)。算術(shù)運算產(chǎn)生有符號的、無符號的和/或混合的結(jié)果。92.1.2 8086性能的提高x86系列系列芯片的發(fā)展的一個重要方面是提高性能。1.利用流水線技術(shù)提高操作的并行性提高性能的一個重要方面是利用超大規(guī)模集成電路的工藝與制造技術(shù)提高芯片的主頻。即減少一個時鐘周期的時間。提高性能的另一重要方面是縮短執(zhí)行指令的時鐘周期數(shù)。在8086中,利用流水線把取指令與執(zhí)行指令重疊,減少了等待取指令的時間,從而使大部分指令的執(zhí)行為四個時鐘周期。80386利用芯片內(nèi)由6個能并行操作的功能部件組成
7、,從而使執(zhí)行一條指令縮短為兩個時鐘周期。1080486將80386處理器的指令譯碼和執(zhí)行部件擴(kuò)展成五級流水線,進(jìn)一步增強(qiáng)了其并行處理能力,在五級流水線中最多可有五條指令被同時執(zhí)行,每級都能在一個時鐘周期內(nèi)執(zhí)行一條指令,80486微處理器最快能夠在每個CPU時鐘周期內(nèi)執(zhí)行一條指令。到了奔騰處理器增加了第二個執(zhí)行流水線以達(dá)到超標(biāo)量性能(兩個已知的流水線u和v,一起工作能實現(xiàn)每個時鐘執(zhí)行兩條指令)。Intel Pentium 4處理器是第一個基于Intel NetBurst微結(jié)構(gòu)的處理器。Intel NetBurst微結(jié)構(gòu)是新的32bit微結(jié)構(gòu),它允許處理器能在比以前的X86系列處理器更高的時鐘速度
8、和性能等級上進(jìn)行操作。Intel Pentium 4處理器有快速的執(zhí)行引擎、Hyper流水線技術(shù)與高級的動態(tài)執(zhí)行。使指令執(zhí)行的并行性進(jìn)一步提高,從而做到在一個時鐘周期中可以執(zhí)行多條指令。112.引入片內(nèi)緩存(CACHE)隨著超大規(guī)模集成電路技術(shù)的發(fā)展,存儲器的集成度和工作速度都有了極大的提高。但是,相對于CPU的工作速度仍然至少差一個數(shù)量級。為了減少從存儲器中取指令與數(shù)據(jù)的時間,利用指令執(zhí)行的局部性原理,把近期可能要用到的指令與數(shù)據(jù)放在工作速度比主存儲器更高(當(dāng)然,容量更?。┑木彺嬷小_@樣的思想,進(jìn)一步在處理器中實現(xiàn),即在處理器芯片中實現(xiàn)了緩存。目前,通常在處理器芯片上有指令和數(shù)據(jù)分開的一級緩
9、存與指令與數(shù)據(jù)混合的二級緩存。且緩存的容量越來越大。從而進(jìn)一步提高了處理器的性能。總之,x86系列系列處理器芯片就是沿著這樣的思路發(fā)展的。因此,8086是x86系列系列處理器的基礎(chǔ)。而且,任一種x86系列處理器芯片在上電后,就是處在8086的實模式。根據(jù)需要,用指令進(jìn)入各種操作模式。所以,學(xué)習(xí)x86系列處理器必須學(xué)習(xí)掌握8086,也只能從8086入手。12從指令,從編程來說,幾乎沒有用匯編語言來使用浮點指令、MMX指令與XMM指令的,都是通過高級語言來使用這些指令的。因而,絕大部分程序員,除了編寫操作系統(tǒng)代碼的外,面對x86系列處理器的指令,實際上是面對8086指令。因此,本書從8086入手來
10、學(xué)習(xí)與掌握x86系列處理器。13148086/8088 CPU的內(nèi)部結(jié)構(gòu)基本相同均由兩個獨立的工作部件組成 一個稱為執(zhí)行部件(EU) 一個稱為總線接口部件 (BIU)2.2 8086的功能結(jié)構(gòu)BIU包括:4個16位的段地址寄存器(CS、DS、SS、ES);1個16位的指令指針寄存器IP;1個20位的地址加法器;指令隊列寄存器;內(nèi)部寄存器;輸入輸出總線控制邏輯;EU包括:4個16位的通用數(shù)據(jù)寄存器(AX、BX、CX、DX);4個16位的專用寄存器(BP、SP、SI、DI);1個16位的標(biāo)志寄存器FR;2.2 8086的功能結(jié)構(gòu)158086CPU從功能上來說分成兩大部分:總線接口單元BIU(Bus
11、 Interface Unit)和執(zhí)行單元EU(Execution Unit)。BIU負(fù)責(zé)8086CPU與存儲器之間的信息傳送。具體地說,即BIU負(fù)責(zé)從內(nèi)存的指定單元取出指令,送至指令流隊列中排隊(8086的指令流隊列是6個字節(jié));在執(zhí)行指令時所需的操作數(shù),也由BIU從內(nèi)存的指定區(qū)域取出,傳送給EU部分去執(zhí)行。EU部分負(fù)責(zé)指令的執(zhí)行。其中主要由數(shù)據(jù)寄存器、指針寄存器與算術(shù)邏輯單元(ALU)組成。這樣,取指部分與執(zhí)行指令部分是分開的,于是在一條指令的執(zhí)行過程中,就可以取出下一條(或多條)指令,在指令流隊列中排隊。在一條指令執(zhí)行完以后就可以立即執(zhí)行下一條指令,減少了CPU為取指令而等待的時間,提高
12、了CPU的利用率,提高了整個運行速度。168086CPU外部數(shù)據(jù)總線為16位、指令隊列為6字節(jié)指令隊列的設(shè)置使指令的取出與執(zhí)行并行進(jìn)行,以提高了程序的運行速度 178086/8088CPU的內(nèi)部結(jié)構(gòu)寄存器是中央處理器內(nèi)的組成部份寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數(shù)據(jù)和地址。指令:確定運算與操作數(shù)據(jù):運算或讀寫操作的對象地址:標(biāo)記和確定內(nèi)存空間中具體的存儲位置地址加法器的作用是根據(jù)段寄存器存放的段基地址與EU送出的16位偏移地址計算得到20位的實際地址 輸出輸入控制電路實現(xiàn)總線控制,決定讀或?qū)?、對?nèi)存或?qū)/O接口 取指令、指令譯碼、產(chǎn)生并傳送操作信號 18算術(shù)邏輯單元(運
13、算器)8個通用寄存器1個標(biāo)志寄存器EU部分控制電路執(zhí)行部件EU的組成及作用取指令,指令譯碼執(zhí)行指令,完成運算19總線接口部件BIU的組成及作用地址加法器6字節(jié)指令隊列緩沖器4個16位段寄存器16位指令指針寄存器輸入輸出控制電路計算20位的存儲器地址完成CPU與內(nèi)存間以及CPU與I/O接口間的信息傳送分兩種情況:預(yù)取指令時:利用CPU執(zhí)行指令而總線空閑,從內(nèi)存中取出指令放入指令隊列(等待CPU取走)EU執(zhí)行指令時:按EU的指令,向內(nèi)存或I/O接口寫運算結(jié)果,從內(nèi)存或I/O接口取數(shù)據(jù)控制外部總線,保證各種信息的正確傳送指令隊列緩沖器指令隊列緩沖器8086 的指令隊列為6個字節(jié)8088 的指令隊列為
14、4個字節(jié)指令隊列緩沖器的指令存放狀態(tài)順序指令執(zhí)行:指令隊列存放緊接在執(zhí)行指令后面的那一條指令執(zhí)行轉(zhuǎn)移指令:立即清除指令隊列中的內(nèi)容,從新的地址取入指令,并立即送往執(zhí)行單元,然后再從新單元開始重新填滿隊列實現(xiàn)CPU的流水線處理操作指令隊列是用來暫存指令的一組寄存器,按“先進(jìn)先出”原則讀寫。在8086/8088 CPU中,只要指令隊列未填滿,BIU就從外部存儲器取指令并放入指令隊列中;另一方面,只要指令隊列中不空,EU就可將指令隊列中已有的指令取出執(zhí)行,這樣BIU和EU按并行方式重疊操作,大大提高了CPU的利用率,也降低了CPU對存儲器、I/O端口存取速度的要求。8086CPU中的指令隊列緩沖器長
15、度為6個字節(jié),而8088CPU只有4個字節(jié)。21如前所述,在8080與8085以及標(biāo)準(zhǔn)的8位微處理器中,程序的執(zhí)行是由取指和執(zhí)行指令的循環(huán)來完成的。即執(zhí)行的順序為取第一條指令,執(zhí)行第一條指令;取第二條指令,執(zhí)行第二條指令;直至取最后一條指令,執(zhí)行最后一條指令。這樣,在每一條指令執(zhí)行完以后,CPU必須等待到下一條指令取出來以后才能執(zhí)行。所以,它的工作順序如圖2-2所示。但在8086中,由于BIU和EU是分開的,所以,取指和執(zhí)行可以重疊并行。它的執(zhí)行順序如圖2-3所示。于是就大大減少了等待對取指所需的時間,提高了CPU的利用率。一方面可以提高整個程序的執(zhí)行速度,另一方面又降低了與之相配的存儲器的存
16、取速度的要求。這種重疊的操作技術(shù),過去只在大型機(jī)中才使用稱為流水線,在X86系列系列微處理器中得到了廣泛的使用與提高。在遇到系統(tǒng)復(fù)位或執(zhí)行轉(zhuǎn)移指令等特殊情況,指令隊列被刷新時,EU才需要等待BIU進(jìn)行取指操作?;蛘咴贓U需要操作數(shù)而BIU正忙時, EU需要等待BIU執(zhí)行完當(dāng)前的操作,再去取操作數(shù),等到EU得到操作數(shù)以后,才能進(jìn)行這條指令的執(zhí)行操作。232.3 8086微處理器的執(zhí)行環(huán)境本節(jié)描述匯編語言程序員看到的8086處理器的執(zhí)行環(huán)境。它描述處理器如何執(zhí)行指令及如何存儲和操作數(shù)據(jù)。執(zhí)行環(huán)境包括內(nèi)存(地址空間)、通用數(shù)據(jù)寄存器、段寄存器、標(biāo)志寄存器(EFLAGES)和指令指針寄存器等。242.
17、3.1 基本執(zhí)行環(huán)境概要在8086處理器上執(zhí)行的程序或任務(wù)都有一組執(zhí)行指令的資源用于存儲代碼、數(shù)據(jù)和狀態(tài)信息。這些資源構(gòu)成了8086處理器的執(zhí)行環(huán)境。地址空間。8086處理器上運行的任一任務(wù)或程序能尋址1MB(220)字節(jié)的線性地址空間?;境绦驁?zhí)行寄存器。八個通用寄存器、四個段寄存器、標(biāo)志寄存器FLAGS和IP(指令指針)寄存器組成了執(zhí)行通用指令的基本執(zhí)行環(huán)境。這些指令執(zhí)行字節(jié)、字整型數(shù)的基本整數(shù)算術(shù)運算,處理程序流程控制,在字節(jié)串上操作并尋址存儲器。25堆棧(stack)。為支持過程或子程序調(diào)用并在過程或子程序之間傳遞參數(shù),堆棧和堆棧管理資源包含在基本執(zhí)行環(huán)境中。堆棧定位在內(nèi)存中。I/O端
18、口。8086結(jié)構(gòu)支持?jǐn)?shù)據(jù)在處理器和輸入輸出(I/O)端口之間的傳送。8086處理器的基本執(zhí)行環(huán)境如圖2-4所示。26272.3.2 基本的程序執(zhí)行寄存器處理器為了應(yīng)用程序編程提供了如圖2-4所示的14個基本程序執(zhí)行寄存器。這些寄存器能分組如下: 通用寄存器。這八個寄存器能用于存放操作數(shù)和指針。 段寄存器。這些寄存器最多能保存四個段選擇子。 FLAGS(程序狀態(tài)和控制)寄存器。FLAGS寄存器報告正在執(zhí)行的程序的狀態(tài),并允許有限地(應(yīng)用程序級)控制處理器。 IP(指令指針)寄存器。IP寄存器包合下一條要執(zhí)行的指令的16位指針。281通用寄存器八個32位通用寄存器AX、BX、CX、DX、SI、DI
19、、BP和SP用于處理以下項: 邏輯和算術(shù)操作的操作數(shù); 用于地址計算的操作數(shù); 內(nèi)存指針。雖然所有這些寄存器都可用于存放操作數(shù)、結(jié)果和指針,但在引用SP寄存器時要特別小心。SP寄存器保持堆棧指針,通常不要用于其它目的。2930這些通用寄存器中的前四個,即AX、BX、CX、DX通常稱為數(shù)據(jù)寄存器,用以存放操作數(shù)。后四個,即SI、DI、BP、SP通常稱為指針寄存器。雖然它們也可以存放操作數(shù),但主要用作地址指針。數(shù)據(jù)寄存器AX、BX、CX和DX又可以分別作為AH、BH、CH和DH(高字節(jié))以及AL、BL、CL和DL(低字節(jié))8位寄存器引用,如圖2-5所示。SP是堆棧指針,稱為堆棧指針寄存器,它與段寄
20、存器SS一起確定在堆棧操作時,堆棧在內(nèi)存中的位置。BP(Base Pointer Register),稱作基址指針寄存器,尋址堆棧操作數(shù)時,也是尋址堆棧段。SI(Source Index Register)和DI(Destination Index Register)常用于串操作。SP給出棧頂?shù)钠频刂?。BP則是用來存放位于堆棧段中的一個數(shù)據(jù)區(qū)基址的偏移地址的。31堆棧是一個按照后進(jìn)先出(LIFO)的原則存取數(shù)據(jù)的存儲區(qū)域。堆棧的作用是為了在調(diào)用子程序(或轉(zhuǎn)向中斷服務(wù)程序)時,把斷點及有關(guān)的寄存器、標(biāo)志位及時正確地保存下來,并保證逐次正確返回。利用堆棧指針SP可以實現(xiàn)對棧區(qū)的自動管理。例如:要
21、把AX寄存器中的內(nèi)容壓入堆棧,用入棧指令PUSH AX(設(shè)SP原值為1000H),其操作過程如下所示:第一步:先把SPlSP,然后把AH(高位字節(jié))送入SP所指單元(即SP=1FFFH);第二步:再次使SP1SP,把AL(低位字節(jié))送至SP所指單元(此時SP=1FFEH);數(shù)據(jù)出棧操作與入棧過程正相反:彈出時,先把AL內(nèi)容彈出,然后修改SP1SP;再把AH內(nèi)容彈出,再修改SP1SP。322段寄存器段寄存器(CS、DS、SS、ES)保存16位段選擇子。一個段選擇子是標(biāo)志內(nèi)存中一個段的特殊指針。為訪問在內(nèi)存中的具體段,此段的段選擇子必須存在于適當(dāng)?shù)亩渭拇嫫髦小.?dāng)寫應(yīng)用程序代碼時,程序用匯編程序的命
22、令和符號建立段選擇子。然后匯編程序和別的工具建立與這些命令和符號相關(guān)的實際段選擇子值。若寫系統(tǒng)代碼,程序員可能需要直接建立段選擇子。當(dāng)使用分段存儲模式時,初始,每一個段寄存器用不同的段選擇子加載,所以每個段寄存器指向線性地址空間中的不同的段。如圖2-6所示。任何時候,一個程序能訪問多至線性地址空間中的四個段。為訪問未由一個段寄存器指向的段,程序必須首先把要訪問的段的段選擇子加載至一個段寄存器。3334每個段寄存器與三種存儲類型之一相關(guān):代碼、數(shù)據(jù)或堆棧。例如,CS寄存器包含代碼段的段選擇子,其中存放正在執(zhí)行的指令。處理器用在CS寄存器中的段選擇子和IP寄存器中的內(nèi)容組成的邏輯地址取下一條要執(zhí)行
23、的指令。CS寄存器不能由應(yīng)用程序直接加載,而是由改變程序控制的指令或內(nèi)部處理器指令(例如,過程調(diào)用、中斷處理)隱含加載。DS、ES寄存器指向兩個數(shù)據(jù)段。兩個數(shù)據(jù)段的可用性,允許有效而又安全地訪問數(shù)據(jù)結(jié)構(gòu)的不同類型。例如,可只建立兩個不同的數(shù)據(jù)段:一個用于當(dāng)前模塊的數(shù)據(jù)結(jié)構(gòu),另一個用于從較高級模塊輸出的數(shù)據(jù)。為了訪問附加的數(shù)據(jù)段,應(yīng)用程序必須按需要把這些段的段選擇子加載至DS、ES寄存器中。SS寄存器包含堆棧段的段選擇子。所有的堆棧操作都用SS以找到堆棧段。不像CS寄存器,SS寄存器能顯式加載。它允許應(yīng)用程序設(shè)置多個堆棧并在堆棧之間切換。353FLAGS寄存器16位FLAGS寄存器包含一組狀態(tài)標(biāo)
24、志、一個控制標(biāo)志一個系統(tǒng)標(biāo)志。反映處理器的狀態(tài)和運算結(jié)果的某些特征。圖2-7定義了此寄存器中的標(biāo)志。在處理器初始化(由RESET腳或INIT腳有效)之后,F(xiàn)LAGS寄存器是0002H。此寄存器的位1、3、5、12-15保留。軟件不能用或依賴于這些位中的任一個。FLAGS寄存器中以下指令能用于標(biāo)志組與堆?;駻X寄存器之間的移動:LAHF、SAHF、PUSHF、POPF。在FLAGS寄存器的內(nèi)容已經(jīng)傳送至過程堆?;駻X寄存器之后,標(biāo)志能作修改。當(dāng)調(diào)用中斷或異常處理時,處理器自動保存FLAGS寄存器的狀態(tài)至堆棧上。36(1)狀態(tài)標(biāo)志FLAGS寄存器的狀態(tài)標(biāo)志(位0、2、4、6、7和11)指示算術(shù)指令
25、,例如ADD、SUB、MUL和DIV指令的結(jié)果的一些特征。狀態(tài)標(biāo)志的功能如下: 進(jìn)位標(biāo)志CF(Carry Flag)當(dāng)結(jié)果的最高位(字節(jié)操作時的D7或字操作時的Dl5、雙字操作的D31)產(chǎn)生一個進(jìn)位或借位,則C1,否則為0。這個標(biāo)志主要用于多字節(jié)數(shù)的加、減法運算。移位和循環(huán)指令也能夠把存儲器或寄存器中的最高位(左移時)或最低位(右移時)放入標(biāo)志CF中。 輔助進(jìn)位標(biāo)志AF(Auxitiary Carry Flag)在字節(jié)操作時,則由低半字節(jié)(一個字節(jié)的低4位)向高半字節(jié)有進(jìn)位或借位,則AF1,否則為0。這個標(biāo)志用于十進(jìn)制算術(shù)運算指令中。37 溢出標(biāo)志OF(Overflow Flag)在算術(shù)運算中
26、,帶符號數(shù)的運算結(jié)果超出了8位、16位帶符號數(shù)能表達(dá)的范圍,即在字節(jié)運算時+127或128,在字運算時+32767或32768此標(biāo)志置位,否則復(fù)位。一個任選的溢出中斷指令,在溢出情況下能產(chǎn)生中斷。 符號標(biāo)志SF(Sign Flag)它的值與運算結(jié)果的最高位相同。即結(jié)果的最高位(字操作時為D15)為1,則SF1;否則,SF0。 由于在X86系列結(jié)構(gòu)微處理器中,符號數(shù)是用補(bǔ)碼表示的,所以S表示了結(jié)果的符號,SF=0為正,SF=1為負(fù)。 奇偶標(biāo)志PF(Parity Flag)若操作結(jié)果中“1”的個數(shù)為偶數(shù),則PF1,否則PF0。這個標(biāo)志可用于檢查在數(shù)據(jù)傳送過程中是否發(fā)生錯誤。 38 零標(biāo)志ZF(Ze
27、ro Fiag)若運算的結(jié)果為0,則ZF1,否則ZF0在這些狀態(tài)標(biāo)志中,只有進(jìn)位標(biāo)志CF能用指令STC(設(shè)置進(jìn)位位)、CLC(清除進(jìn)位位)和CMC(進(jìn)位位取反)直接進(jìn)行修改。也可以用位操作指令(BT、BTS、BTR和BTC)拷貝規(guī)定位至CF標(biāo)志。這些狀態(tài)標(biāo)志允許單算術(shù)操作以產(chǎn)生三種不同數(shù)據(jù)類型的結(jié)果:無符號整數(shù)、符號整數(shù)和BCD整數(shù)。若算術(shù)操作的結(jié)果作為無符號整數(shù)對待,CF標(biāo)志指示超出范圍(進(jìn)位或借位);若作為符號整數(shù)(2的補(bǔ)碼值)對待,OF標(biāo)志指示是否超出范圍;若作為BCD數(shù)對待,AF標(biāo)志指示進(jìn)位或借位。 SF標(biāo)志指示符號整數(shù)的符號。ZF標(biāo)志指示符號整數(shù)或無符號整數(shù)是否為0;CF用于與帶進(jìn)位
28、加/減指令一起產(chǎn)生適當(dāng)?shù)倪M(jìn)位或借位。39(2)控制標(biāo)志EFLAGS寄存器的控制標(biāo)志(位8、9、10)指示程序和機(jī)器運行的狀況??刂茦?biāo)志的功能如下: 方向標(biāo)志D(Direction Flag) 若用指令置DF1,則引起串操作指令為自動減量指令,也就是從高地址到低地址或是“從右到左”來處理串;若使DF0,則串操作指令就為自動增量指令。STD和CLD指令分別地設(shè)置和清除 DF 標(biāo)志。 中斷允許標(biāo)志IF(Interrupt-enable Flag)若指令中置IF1,則允許CPU去接收外部的可屏蔽的中斷請求;若使IF0,則屏蔽上述的中斷請求;對內(nèi)部產(chǎn)生的中斷不起作用。40 追蹤標(biāo)志TF(Trace Fl
29、ag)置IF標(biāo)志,使處理進(jìn)入單步方式,以便于調(diào)試。在這個方式下,CPU在每條指令執(zhí)行以后,產(chǎn)生一個內(nèi)部的中斷,允許程序在每條指令執(zhí)行完以后進(jìn)行檢查。414指令指針指令指針(IP)寄存器包含下一條要執(zhí)行的指令在當(dāng)前碼段中的偏移。指向微處理器在程序中順序?qū)ぶ反a段中的下一條指令。通常,它是順序增加的,從一條指令邊界至下一條指令,但在執(zhí)行JMP、Jcc、CALL、RET和IRET等指令時,它可以向前或向后移動若干條指令。IP寄存器不能直接由軟件訪問;它由控制傳送指令(例如,JMP、Jcc、CALL和RET)、中斷和異常隱含控制。讀IP寄存器的唯一方法是執(zhí)行一條CALL指令,然后從堆棧中讀指令指針的返
30、回值。IP寄存器能由修改過程堆棧上指令指針的返回值并執(zhí)行返回指令(RET或IRET)來間接修改。422.3.3 存儲器組織處理器在它的總線上尋址的存儲器稱為物理存儲器。物理存儲器按字節(jié)序列組織。每個字節(jié)賦予一個唯一的地址,稱為物理地址。物理地址空間的范圍從02201(1MB)的最大值。事實上設(shè)計與8086處理器一起工作的任何操作系統(tǒng)和執(zhí)行程序都使用處理器的存儲管理設(shè)施訪問存儲器。這些設(shè)施提供例如分段特性以允許有效地和可靠地管理存儲器。438086有20條地址引線,它的直接尋址能力為2201M字節(jié)。所以,在一個8086組成的系統(tǒng)中,可以有多達(dá)1M字節(jié)的存儲器。這1M字節(jié)邏輯上可以組織成一個線性矩
31、陣。地址從00000H到FFFFFH。給定一個20位的地址,就可以從這1M字節(jié)中取出所需要的指令或操作數(shù);但是,在8086內(nèi)部,這20位地址是如何形成的呢?如前所述,8086內(nèi)部的ALU能進(jìn)行16位運算,有關(guān)地址的寄存器如SP、IP,以及BP、SI、DI等也都是16位的,因而8086對地址的運算也只能是16位。這就是說,對于8086來說,各種尋址方式,尋找操作數(shù)的范圍最多只能是64K字節(jié)。 44所以,整個1M字節(jié)存儲器以64K為范圍分為若干段。在尋址一個具體物理單元時,必須要由一個基地址再加上由SP或IP或BP或SI或DI等可由CPU處理的16位偏移量來形成實際的20位物理地址。這個基地址就是
32、由8088中的段寄存器,即代碼段寄存器CS、堆棧段寄存器SS、數(shù)據(jù)段寄存器DS以及附加段寄存器ES中的一個來形成的。在形成20位物理地址時,段寄存器中的16位數(shù)會自動左移4位,然后與16位偏移量相加,如圖2-8所示。 4546存儲器地址的兩種表示方式物理地址和邏輯地址是兩種存儲單元地址的表示和標(biāo)記方法物理地址:存儲單元所具有的實際地址由20位二進(jìn)制代碼構(gòu)成邏輯地址:在程序中(指令中)書寫和使用的地址由兩部分構(gòu)成段基地址 :偏移地址例:假設(shè) ( DS)=3200H若指令中給出的偏移地址: 1050H物理地址 = 3200H10H +1050H= 33050H邏輯地址到物理地址的變換例邏輯地址也稱
33、相對地址或虛擬地址,它是目標(biāo)程序中的地址。物理地址也稱絕對地址或?qū)嵉刂?,它是物理存貯器的單元地址。物理地址段基地址16偏移地址。BIU中的地址加法器,實現(xiàn)邏輯地址到物理地址的變換左移4位48每次在需要產(chǎn)生一個20位地址的時候,一個段寄存器會自動被選擇,且能自動左移4位再與一個16位的地址偏移量相加,以產(chǎn)生所需要的20位物理地址。每當(dāng)是取指令的時候,則自動選擇代碼段寄存器CS,再加上由IP所決定的16位偏移量,計算得到要取的指令的物理地址。每當(dāng)是涉及到一個堆棧操作時,則自動選擇堆棧段寄存器SS,再加上由SP所決定的16位偏移量,計算得到堆棧操作所需要的20位物理地址。每當(dāng)涉及到一個操作數(shù),則自動
34、選擇數(shù)據(jù)段寄存器DS或附加段寄存器ES,再加上16位偏移量,計算得到操作數(shù)的20位物理地址。而16位偏移量,可以是包含在指令中的直接地址,也可以是某一個16位地址寄存器的值,也可以是指令中的位移量加上16位地址寄存器中的值等等,這取決于指令的尋址方式。49在8086系統(tǒng)中,存儲器的訪問,如圖2-9所示。段首地址、段基地址和偏移地址70002H12H70000H0 0 0 0段基地址(16位)段首地址(20位) 偏移地址=0002H每個段都從低4位為0的存儲單元開始段首地址的高16位稱為段基地址偏移地址為相對于段首地址的偏移量00H一定為051存儲器的邏輯分段原則 編程時,存儲器單元地址由段地址
35、和偏移量表示,二者結(jié)合稱為邏輯地址。段寄存器16位,存放段起始地址的高16位,稱為段基址,低4位指定為0000B。在存儲器管理中,從0地址單元開始,每16個字節(jié)為一小段,稱為節(jié)(Paragraph)。節(jié)起始地址的低4位也是0000B,顯然段起始地址必須是節(jié)起始地址。 將段基址左移4位與偏移地址相加,即為某一存儲器單元的物理地址,也稱為絕對地址。物理地址段基址16偏移地址 52在不改變段寄存器值的情況下,尋址的最大范圍是64KB。所以,若有一個任務(wù),它的程序長度、堆棧長度以及數(shù)據(jù)區(qū)長度都不超過64KB,則可在程序開始時,分別給DS、SS、ES置值,然后在程序中就可以不再考慮這些段寄存器,程序就可以在各自的區(qū)域中正常地進(jìn)行工作。若某一個任務(wù)所需的總的存儲器長度(包括程序長度、堆棧長度和數(shù)據(jù)長度等)不超過64KB,則可在程序開始時使CS、SS、DS相等,程序也能正常地工作。 53規(guī)則字與非規(guī)則字存放一個字?jǐn)?shù)據(jù)的低字節(jié)地址如果是偶數(shù)地址,則稱為“規(guī)則字”存放一個字?jǐn)?shù)據(jù)的低字節(jié)地址如果是奇數(shù)地址,則稱為“非規(guī)則字”存取“規(guī)則字”與“非規(guī)則字”,其操作過程不同(即所使用的總線周期數(shù)不同)54在8086系
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 骨干教師隊伍建設(shè)方案
- 中醫(yī)康復(fù)理療師考試疑難問題解析試題及答案
- 食品進(jìn)貨查驗制度
- 餐飲業(yè)獎金制度
- 股權(quán)轉(zhuǎn)讓協(xié)議72773
- 公司內(nèi)部員工管理制度
- 土方購買協(xié)議
- 建筑公司辦公室管理制度
- 戰(zhàn)略性復(fù)習(xí)寵物殭葬師試題及答案
- 主題酒店策劃方案提綱
- 西安特教面試試題及答案
- 鄉(xiāng)鎮(zhèn)履行職責(zé)事項清單工作交流發(fā)言稿
- 新零售行業(yè)智慧零售技術(shù)應(yīng)用及商業(yè)模式研究
- 2025年中醫(yī)技能考試試題及答案
- 小學(xué)生主題班會 愛國主義教育 課件(共35張PPT)
- 03S702鋼筋混凝土化糞池圖集
- 社區(qū)工作者經(jīng)典備考題庫(必背300題)
- 門診外配處方管理制度
- 地質(zhì)年代單位符及代碼
- 關(guān)于半潛船介紹
- 工程造價咨詢報告書WORD
評論
0/150
提交評論