微處理器系統(tǒng)_第1頁
微處理器系統(tǒng)_第2頁
微處理器系統(tǒng)_第3頁
微處理器系統(tǒng)_第4頁
微處理器系統(tǒng)_第5頁
已閱讀5頁,還剩103頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 基本概念(總線、堆棧等) 微處理器的一般結(jié)構(gòu) Intel 8086微處理器的結(jié)構(gòu)本章內(nèi)容 了解三總線及堆棧的工作原理。 掌握微處理器的一般結(jié)構(gòu)、算邏部件ALU、寄存器結(jié)構(gòu)、控制部件。 重點(diǎn)掌握Intel 8086微處理器的結(jié)構(gòu)。學(xué)習(xí)目的4.1 基本概念一、總線1. 總線的由來在計(jì)算機(jī)中,CPU與其他功能部件之間存在大量的信息交流,其間就需要使用通信線路連接起來,通信線的設(shè)置和連接可采用兩種方式。(1) 專線式:將各個功能部件分別設(shè)置與其他部件通信的線路, 優(yōu)點(diǎn):傳送速率高,它只受傳送線本身的限制,且控制簡單。 缺點(diǎn): 機(jī)器所需要的信息傳送線數(shù)量大,增加了復(fù)雜性,不便于實(shí)現(xiàn)機(jī)器的模塊和積木化。

2、(2) 總線式:在多個功能部件之間設(shè)置公共的通信線即總線。圖中當(dāng)A和A門打開時,信息由A傳至A;A和C 門打開時,信息便從A傳至C 。ABCABC 總 線 示 意 圖 總線上能同時傳送二進(jìn)制信息的位數(shù)稱為總線寬度。見下圖。 由于采用了分時傳送的總線結(jié)構(gòu)從而大大減少了機(jī)器中信息傳送線的數(shù)目。a. 分時傳送:多個部件并聯(lián)在總線上,某一時刻,只允許一路信息在總線上傳送。b. 控制復(fù)雜: 總線的發(fā)送端及接收端均有三態(tài)門電路。 打開三態(tài)門信息經(jīng)總線傳送到目的端。 若不傳送信息,則使三態(tài)門處于高阻狀態(tài),相當(dāng)于此部件在邏輯上與總線脫離聯(lián)系。c. 系統(tǒng)結(jié)構(gòu)簡單,便于擴(kuò)展。特點(diǎn):2. 總線的分類 總線按信息傳送

3、的方向可分為單向總線和雙向總線。 單向總線只能向一個方向發(fā)送信息。 雙向總線則可在兩個方向傳送。 總線按所傳信息的類別,通常分為數(shù)據(jù)總線,地址總線和控制總線。(1) 數(shù)據(jù)總線 (Data Bus)是微處理器與存儲器和I/O電路間數(shù)據(jù)交換的通道,可雙向傳送。數(shù)據(jù)總線的寬度一般與微處器處理數(shù)據(jù)的字長相同,三狀態(tài)。(2) 地址總線 (Address Bus)是微處理器輸出地址用的總線,它將地址送到存儲器或I/O電路,用來確定存儲器中信息存放的地址或I/O電路的地址,AB一般為單向、三狀態(tài)。(3) 控制總線 (Control Bus)是用來傳送控制信號,使各功能部件動作同步。(1) 片內(nèi)總線指微處理器

4、內(nèi)部各邏輯單元之間的傳輸線,主要是數(shù)據(jù)總線,是為算術(shù)邏輯部件ALU和寄存器之間傳送操作數(shù)和結(jié)果而設(shè)計(jì)的。有單總線、雙總線、三總線結(jié)構(gòu)之分。 總線按規(guī)模、用途及應(yīng)用場合又可分為以下幾種:(2) 芯片總線指微型機(jī)中各功能芯片之間的傳輸線,又稱元件級總線。是構(gòu)成一塊CPU插板或組成一個微機(jī)小系統(tǒng)時常用的總線。(3) 內(nèi)總線指微型機(jī)內(nèi)連接各插件板的總線,又稱板級總線或系統(tǒng)總線。其標(biāo)準(zhǔn)很多,現(xiàn)列舉幾種常用的標(biāo)準(zhǔn)總線。a. S-100系統(tǒng)總線:是一種實(shí)用性微型機(jī)總線標(biāo)準(zhǔn),具有100根引線,主要支持8bit微處理器,1979年美國的IEEE微處理機(jī)標(biāo)準(zhǔn)委員會修改后取名為IEEE-696標(biāo)準(zhǔn)總線。b. MUL

5、TIBUS多總線:是多于一個控制單元控制的總線,由Intel公司推出,MULTIBUS-I支持8bit、16bit微處理器,MULTIBUS-II支持32bit微處理器,1987年經(jīng)IEEE微處理機(jī)標(biāo)準(zhǔn)委員會審定為IEEE-P1296標(biāo)準(zhǔn)總線。c. STD總線:是美國PRO-LOG公司和MOSTEK公司于1978年聯(lián)合推出的工業(yè)控制標(biāo)準(zhǔn)總線,共有56根信號線,是8bit/16bit兼容總線。d. PC總線及EISA總線:是美國IBM公司推出針對Intel-8086微處理器設(shè)計(jì)的,共有62根信號線。為了與Intel-80286等高性能16bit微處理器兼容,IBM公司在PC總線上增加了一個36引

6、腳的擴(kuò)展插座而形成AT總線,這種結(jié)構(gòu)稱之為IBM公司標(biāo)準(zhǔn)結(jié)構(gòu),簡稱ISA(Industrial Standard Architecture),COMPAQ公司推出了擴(kuò)展工業(yè)標(biāo)準(zhǔn)總線,即EISA(Extend Industry Standard Architecture)總線。是支持32bit的標(biāo)準(zhǔn)總線。 e. VME總線:是美國MOTOROLA公司于1981年提出,針對16bit和32bit微處理器設(shè)計(jì)的。該總線在采用單總線連接器時為96條信號線,支持16bit數(shù)據(jù)線,24bit地址線;雙總線連接器結(jié)構(gòu)則支持32bit,此時信號線為128條,可支持四個主CPU模板進(jìn)行運(yùn)行。(4) 外總線指微型

7、計(jì)算機(jī)系統(tǒng)與系統(tǒng)之間或微機(jī)系統(tǒng)與外部設(shè)備之間的通信線,又稱通信總線。CPU與外部設(shè)備的基本通信方式有兩種:a. 并行通信:數(shù)據(jù)各位同時傳送,有多少位數(shù)據(jù)就有同樣數(shù)量的傳送線。b. 串行通信:數(shù)據(jù)逐位順序傳送,適宜長距離傳送。二、堆棧用作數(shù)據(jù)暫時存儲的一組寄存器或存儲單元稱為堆棧。 堆棧操作有兩種:壓入(PUSH)和彈出(POP),而SP始終指向堆棧棧頂?shù)男挛恢谩?. 堆棧的定義 堆棧中數(shù)據(jù)按“后進(jìn)先出”的結(jié)構(gòu)方式進(jìn)行處理,即新入棧的依次堆放在原來數(shù)據(jù)之上,存放信息的最后一個單元叫做棧頂,用堆棧指針SP(Stack Pointer)指示。2. 堆棧編址結(jié)構(gòu)的兩種形式(1) 向上生成該結(jié)構(gòu)中,每壓

8、入一個數(shù)據(jù),堆棧指示器SP按增量修改,每彈出一個數(shù)據(jù),SP按減量修改。(2) 向下生成該結(jié)構(gòu)中,每壓入一個數(shù)據(jù),SP按減量修改,每彈出一個數(shù)據(jù),SP按增量修改。3. 構(gòu)成堆棧的兩種形式 一種是使用微處理器內(nèi)部的一組寄存器作為堆棧。 優(yōu)點(diǎn):訪問速度快。 缺點(diǎn):寄存器數(shù)量有限。 另一種形式是在隨機(jī)存儲器RAM中開辟一個區(qū)間供堆棧使用,較為普遍;若編址采用向下生成,其堆棧操作如下圖所示。 堆棧操作示意圖(向下生成)M3M2M1MXSP(a)M3M2M1MXSP(b)AM3M2M1MXSP(c)ABSPASPBSPC當(dāng)前棧頂?shù)刂窞镸,存內(nèi)容X信息B進(jìn)棧:SPSP1,SP指定的地址B信息A進(jìn)棧分兩步操作

9、: SPSP1,SP指定的地址單元A 堆棧操作示意圖(向下生成)MM3M2M1XSP(d)ABCM3M2M1MXSP(f)ABCM3M2M1MXSP(e)ACBSPDSPCSPB信息C進(jìn)棧信息C出棧分兩步操作:指定的目的地C,SPSP+1信息B出棧:指定目的地B,SPSP+1 堆棧操作示意圖(向下生成)MM3M2M1XSP(g)ADCM3M2M1MXSP(i)ADCM3M2M1MXSP(h)ACDSPDSPA信息D進(jìn)棧: SPSP1,SP指定的地址D信息D出棧信息A出棧,棧頂?shù)刂啡詾镸由上圖中可以看出,出棧操作并不會從堆棧中去掉信息,也不擦除它們,只是因SP的自動修改而改變了堆棧的棧頂。堆棧主

10、要用于中斷控制,子程序調(diào)用以及數(shù)據(jù)暫時存儲。存儲單元地址0000H0001H0002HFFFFH存儲體結(jié)構(gòu)圖存儲位存儲單元(字節(jié))存儲體存儲器的訪問過程:向0001單元寫數(shù)據(jù)0000000100100011010001010110011110001001101010111100110111101111地址0001控制:寫數(shù)據(jù)有以下程序main( ) char *p10=“abc”, “aabdfg”, “dcdbe”, “abbd”, “cd”;printf(“%dn”,strlen(p4); 執(zhí)行后輸出結(jié)果是A) 2 B) 3 C) 4 D) 5 2.2 微處理器的一般結(jié)構(gòu)傳統(tǒng)的微處理器結(jié)構(gòu)

11、由算術(shù)邏輯部件ALU,控制電路及寄存器陣列三大部分組成,如下圖所示。微處理器一般結(jié)構(gòu)框圖指令寄存器IR譯碼器ID操作控制器PLA控制信號片內(nèi)數(shù)據(jù)總線通用寄存器組變址寄存器PC程序計(jì)數(shù)器SP堆棧指示器標(biāo)志寄存器FR地址緩沖器芯片地址總線數(shù)據(jù)緩沖器芯片數(shù)據(jù)總線累加器暫存器ALU一、算術(shù)邏輯部件ALU (Arithmetic Logic Unit)ALU是執(zhí)行算術(shù)運(yùn)算、邏輯運(yùn)算及移位的裝置。 ALU有兩個輸入端,一個與累加器相連,另一端與暫存器相連,用于存放參加運(yùn)算的兩個數(shù)。 ALU的輸出端也有兩個,一端將操作結(jié)果送回到內(nèi)部總線再送回累加器,另一端用于輸出表示操作結(jié)果特征的標(biāo)志信息。二、寄存器陣列一

12、般包括通用寄存器、累加器、標(biāo)志寄存器、專用寄存器等。寄存器的使用提升了計(jì)算機(jī)的功能和程序設(shè)計(jì)的靈活性。1. 通用寄存器組可用于存放數(shù)據(jù)和地址,有8bit和16bit等,CPU可直接處理這些信息,減少了訪問存儲器的次數(shù),節(jié)省訪問內(nèi)存時間。2. 累加器也是數(shù)據(jù)寄存器,與ALU一起完成各種算術(shù)或邏輯運(yùn)算,運(yùn)算前作為ALU的一個輸入,運(yùn)算后常用于保存結(jié)果。 CPU對I/O接口電路的讀出或?qū)懭胍话阋彩峭ㄟ^累加器進(jìn)行的。3. 標(biāo)志寄存器在算術(shù)或邏輯運(yùn)算時,為了保存可能發(fā)生的進(jìn)位、溢出、符號、全零及奇偶性等狀態(tài)的變化,微處理器設(shè)置標(biāo)志寄存器。 其所存的狀態(tài)將可作為一種條件,常用于判斷是否控制程序轉(zhuǎn)移。4.

13、專用寄存器(1) 程序計(jì)數(shù)器PC (Program Counter)它是指令地址寄存器,其內(nèi)容指出了現(xiàn)行指令在存儲器中的存放地址。注:當(dāng)按PC的內(nèi)容從存儲器中取出指令時,PC的內(nèi)容自動加1。 對單字節(jié)指令而言,則PC指向了下一條指令所在的地址。 對多字節(jié)指令,則每取一個字節(jié),PC自動加1,當(dāng)取出最后一個指令字節(jié)時,PC仍指向下一條指令地址。(2) 堆棧指示器SP (Stack Pointer)用于確定堆棧在內(nèi)存中的具體位置。SP總是指向棧頂。(3) 變址寄存器 用于變址尋址,也可作通用寄存器。三、控制部件是整個系統(tǒng)按時序協(xié)調(diào)操作的功能部件,包括IR、ID定時及產(chǎn)生各種控制信號的控制邏輯單元組成

14、。根據(jù)上述結(jié)構(gòu),微處理器執(zhí)行一條指令的簡要過程,如下圖所示。計(jì)算機(jī)基本工作原理指令是能被計(jì)算機(jī)識別并執(zhí)行的的二進(jìn)制代碼每一條指令完成一種操作。操作碼 操作數(shù) 數(shù)據(jù)傳送指令數(shù)據(jù)處理指令程序控制指令輸入輸出指令 其它指令 If Goto And OrCPU內(nèi)存I/O設(shè)備主機(jī)對計(jì)算機(jī)的硬件進(jìn)行管理等指令 結(jié)構(gòu)分類操作碼: 操作類型或性質(zhì)操作數(shù):操作的數(shù)據(jù)或數(shù)據(jù)的地址 NEXT: MOV AH,1 INT 21H CMP AL,a JB PROG2 CMP AL, z JA PROG2 SUB AL,20H MOV DL,AL MOV AH,2 INT 21H JMP NEXTPROG2: 問:1)從

15、鍵盤輸入小寫字母d時,顯示器上顯示 。 2)轉(zhuǎn)向PROG2的條件是: 。微處理器執(zhí)行一條指令的簡要過程取 指 令 指 令 譯 碼 取 操 作 數(shù) 執(zhí) 行 指 令 存放運(yùn)算結(jié)果 結(jié)束指令?結(jié)束YN(1) PC將指令地址經(jīng)地址緩沖器送到CPU外部地址總線,然后送到存儲器進(jìn)行地址譯碼。圖中取指令包含以下幾個步驟:(2) PC+1PC,同時CPU發(fā)出“存儲器讀”。信號,訪問存儲器中某一單元。(3) 經(jīng)過幾百ns,在外部數(shù)據(jù)總線上出現(xiàn)指令的第一個字節(jié),即操作碼,經(jīng)由CPU內(nèi)部數(shù)據(jù)緩沖器內(nèi)部總線指令寄存器。(4) 對于多字節(jié)指令,控制部件還會發(fā)出取第二、第三等字節(jié)的信號,每次PC+1PC2.3 程序指令的

16、執(zhí)行過程人們事先把一條條指令預(yù)選輸?shù)酱鎯ζ髦?,在?zhí)行時,機(jī)器把這些指令一條條地取出來,加以翻譯和執(zhí)行。例如:若要求機(jī)器把兩個數(shù)7和10相加,其簡單程序?yàn)椋篗OVAL,7B0ADDAL,1004HLT F470A逐條按機(jī)器碼表示在右邊,共5個字節(jié),若存放在地址為00H開始連續(xù)5個存儲單元,下面具體介紹其執(zhí)行過程。 第一條指令的取指過程。0000 00000000 00001011 00000000 01110000 01000000 10101111 01001011 0000OI2ALUI1ALBLPLAIDIR 1011 0000DB A B+1 EAB CAR D讀 FDR00010203

17、04 GPC取第一條指令的操作示意圖+100001011 00001011 0000PC的內(nèi)容(00H)送AR(Address Register)PC + 1 PC (01H)00H經(jīng)AB送至存儲器,經(jīng)地址譯碼器選中00H單元。CPU給出讀命令。(00H) = B0H 讀至DB(Data Bus)1011 0000B0H送至DR (Data Register)DR把B0H送IR經(jīng)ID 譯碼發(fā)出對應(yīng)操作 取指令第二字節(jié)的過程如下圖所示。0000 00011011 00000000 01110000 01000000 10101111 0100 010000 0111OI2ALUI1 AL0000

18、 0111BLPLAIDIR 0000 0111DB A B+1 EAB CAR D讀 FDR GPC 100000 0001取立即數(shù)的操作示意圖+101 0000 0111PC的內(nèi)容01H送ARPC + 1 PC (02H)01H經(jīng)AB送至存儲器,經(jīng)地址譯碼選中01H單元。CPU發(fā)出讀命令。(01H) = 07H 讀至DB0000 011107H送DR AL0000 011107H由DR通過內(nèi)部DB送至AL。 取第二條指令的第一個字節(jié)與第一條指令的第一個字節(jié)的取指過程相同。對此指令譯碼后,知為加法指令,AL的內(nèi)容為一操作數(shù),另一操作數(shù)在指令的第二字節(jié)中,其執(zhí)行過程為:(9) 相加結(jié)果由ALU

19、輸出至AL中,可類似取第三條指令。(7) DR中的數(shù)由內(nèi)部DB送到ALU的另一輸入端。(1)(6) 與第一條指令的第二字節(jié)的執(zhí)行過程相同。(8) AL中的數(shù)送ALU且執(zhí)行加法操作。在數(shù)據(jù)區(qū)DAT地址起有10個數(shù)據(jù),試編程序?qū)?shù)據(jù)進(jìn)行升序排列。將結(jié)果送CRT顯示。程序如下:STACK SEGMENTSTA DB 100DUP(?)STACK ENDS;*DATA SEGMENTDAT DB 2,67,33,78,98,1,77,43,32,76COUNT DB 10COUNT1 DB 100DATA ENDS;*CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STAC

20、KSTART: MOV AX,DATA MOV DS,AX MOV AX,0 MOV CX,AX LEA DI,DAT MOV CL,COUNT DEC CXINC DI;*LP: MOV SI,DIDEC SIMOV AL,DIPUSH DICALL LKPOP DIINC DILOOP LPLEA DI,DATMOV CL,COUNT;*SC: MOV AX,0MOV BH,2MOV AL,DIDIV COUNT1MOV DH,AHADD AL,30HMOV DL,ALMOV AH,2INT 21HMOV AL,DHMOV AH,0DIV COUNTADD AX,3030HMOV DL,A

21、LMOV BL,AH;*OUTP: MOV AH,2INT 21HDEC BHJZ XTMOV DL,BLJMP OUTP;*XT: DEC CLJZ DONEINC DIJMP SC;*DONE:MOV AH,4CHINT 21H;*LK PROCMOV BL,COUNTSUB BL,CL;*LP1: CMP AL,SIJG RTTMOV DL,SIMOV DI,DLMOV SI,ALDEC DIDEC SIDEC BLJNZ LP1;*RTT: RETLK ENDPCODE ENDSEND START2.4 Intel 8086微處理器 8086是Intel系列的16bit微處理器,屬第三

22、代。 8086有16bit數(shù)據(jù)總線和20bit地址線,可尋址1M空間。 8086采用單一+5V電源和單相時鐘,頻率為5MHZ。20位AH ALBH BLCH CLDH DLSPBPDISIALU運(yùn)算寄存器標(biāo)志執(zhí)行部件控制電路16位CS DS SS ESIP 內(nèi)部暫存器8位1 2 3 4 5 6執(zhí)行部件 (EU) 輸入/輸出控制電路16位 外部總線 指令隊(duì)列緩沖器總線接口部件(BIU)通用寄存器地址加法器一、8086CPU結(jié)構(gòu)1、總體功能結(jié)構(gòu)8086從功能結(jié)構(gòu)來講,分為兩大部分,即總線接口部件BIU(Bus Interface Unit )和執(zhí)行部件EU(Execution Unit)。(1)

23、BIU部件由段寄存器、指令指針、地址加法器、指令隊(duì)列緩沖器和控制電路等部分組成。 在執(zhí)行指令時,如要取操作數(shù),則也由BIU從內(nèi)存或I/O接口指定區(qū)域取出,送給EU部件去執(zhí)行。BIU負(fù)責(zé)與存儲器、I/O接口電路傳送信息。 BIU負(fù)責(zé)從指定內(nèi)存單元取出指令,送到指令隊(duì)列緩沖器中排隊(duì)。 指令隊(duì)列緩沖器是一個6字節(jié)的RAM存儲器(8088為4個字節(jié)),隊(duì)列中最多可同時存放6個字節(jié)的指令,取來的指令是按字節(jié)順序存放的。 當(dāng)隊(duì)列中有兩個以上的指令字節(jié)空的時候,BIU會自動地執(zhí)行總線操作,繼續(xù)取指令。(2) EU部件由ALU、通用寄存器、標(biāo)志寄存器和控制電路組成,負(fù)責(zé)指令的執(zhí)行。ALU、寄存器和數(shù)據(jù)傳輸通路

24、均是16bit的。 若執(zhí)行的是一條轉(zhuǎn)移指令,則存放在指令隊(duì)列緩沖器中的指令就沒有用了,應(yīng)到新的地址單元去取出。BIU新取出的第一條指令將直接送到EU中去執(zhí)行,隨后重新填充指令隊(duì)列緩沖器。EU從BIU中的指令隊(duì)列緩沖器中取得指令和數(shù)據(jù)。 當(dāng)指令要求將數(shù)據(jù)寫到存儲器和I/O電路,或需從存儲器和I/O電路中讀取數(shù)據(jù)時,EU向BIU發(fā)出請求,BIU自動完成這些操作。2. 寄存器結(jié)構(gòu)8086CPU 內(nèi)部寄存器DLDHCLCHBLBHALAH通用寄存器AXBXCXDXSPBP SI DI數(shù)據(jù)寄存器CSDSSSESIPFLAG變址寄存器指針寄存器堆棧指針基數(shù)指針源變址目的變址指令指針狀態(tài)標(biāo)志代碼段數(shù)據(jù)段堆棧

25、段附加段段寄存器控制寄存器(1) 通用寄存器8個16bit通用寄存器。 SP堆棧指針,存放堆棧棧頂?shù)默F(xiàn)行地址,與SS堆棧段寄存器一起方可確定堆棧的實(shí)際地址。 BP基址指針 SI源變址寄存器 AX,BX,CX,DX 4個16bit的通用數(shù)據(jù)寄存器,它們的高8bit AH,BH,CH,DH與低8bit AL,BL,CL,DL又可分別看成8個8bit的寄存器。 DI目的變址寄存器(2) 控制寄存器 IP (Instruction Pointer) 指令指針與PC類似,但有區(qū)別:a. PC是指向下一條即將要執(zhí)行的指令,而IP一般是指向下一次要取出的指令。b. 在8086中IP要與CS代碼段寄存器的內(nèi)容

26、一起,才能得到指令的實(shí)際地址。TFSFZFAFPFOFDFIFCF15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 標(biāo)志寄存器格式a. 6個狀態(tài)標(biāo)志位,即CF、PF、AF、ZF、SF和 OF。 進(jìn)位標(biāo)志CF(Carry Flag): FLAG(標(biāo)志寄存器)為16bit,其中9位有定義。當(dāng)結(jié)果的最高位(字節(jié)D7,字D15)產(chǎn)生進(jìn)位(加法運(yùn)算)或借位(減法運(yùn)算)時,CF=1,否則CF=0,移位和循環(huán)指令也影響CF。 奇偶標(biāo)志位PF(Parity Flag): 若結(jié)果中“1” 的個數(shù)為偶數(shù),則PF=1,否則PF=0。 輔助進(jìn)位標(biāo)志AF(Auxitiary Carry Fla

27、g): 在低半字節(jié)向高半字節(jié)有進(jìn)位或借位時AF=1,否則AF=0。 零標(biāo)志ZF(Zero Flag): 當(dāng)運(yùn)算結(jié)果為0時ZF=1,否則ZF=0。 符號標(biāo)志SF(Sign Flag): SF等于最高位,對于帶符號數(shù),最高位為符號位,SF=1運(yùn)算結(jié)果為負(fù),SF=0為正。溢出標(biāo)志OF(Overflow Flag): 帶符號數(shù)運(yùn)算結(jié)果超出其表達(dá)范圍時(字節(jié)數(shù):-128+127,字類型數(shù):-32768+32767), OF=1,否則 OF=0。用表達(dá)式給出(字節(jié)運(yùn)算)(字運(yùn)算)例: 2345H+3219H 6400H+7A3CHCF=0 PF=0 AF=0 ZF=0 SF=0 OF=0CF=0 PF=1

28、 AF=0 ZF=0 SF=1 OF=1 b. 3個控制標(biāo)志位 追蹤標(biāo)志TF(Trace Flag): TF=1,處理器進(jìn)入單步方式,以便調(diào)試,CPU每執(zhí)行一條指令自動產(chǎn)生一個內(nèi)部中斷以利于檢查指令的執(zhí)行情況;TF=0為連續(xù)工作方式。中斷允許標(biāo)志IF(Interrupt-enable Flag):IF=1,允許CPU響應(yīng)外部的可屏蔽中斷請求;IF=0則禁止響應(yīng)。IF對外部非屏蔽中斷及內(nèi)部中斷不起作用。 方向標(biāo)志DF(Direction Flag): 在串操作指令中,DF=0時,變址指針自動增量,DF=1時,則自動減量。(3) 段寄存器CS代碼段寄存器,用于定義代碼段基地址,該段用于存放指令代碼

29、。DS數(shù)據(jù)段寄存器,用于定義數(shù)據(jù)段基地址,該段用于存放程序變量。有4個16bit的段寄存器SS堆棧段寄存器,用于定義堆棧段基地址,該段作堆棧區(qū)使用。ES附加數(shù)據(jù)段,用于定義附加段基地址,與DS類似。上述4個段在8086尋址的1MB空間內(nèi),其位置不受限制,可連續(xù)排列、分隔排列、部分重疊甚致全部重疊。(3) 8086與傳統(tǒng)微處理器指令執(zhí)行過程比較取指3執(zhí)行3取指4執(zhí)行2取指2執(zhí)行1取指1 傳統(tǒng)微處理器的執(zhí)行方式傳統(tǒng)微處理器取指與執(zhí)行串行進(jìn)行,CPU的工作效率低。取數(shù)據(jù)取指5取指4取指3取指2取指1BIU執(zhí)行4執(zhí)行3執(zhí)行2執(zhí)行1等待EU 8086的指令執(zhí)行方式8086CPU取指與執(zhí)行并行進(jìn)行,大大減

30、少了等待取指令所需時間,提高了CPU的工作效率。二、引腳信號及功能最小模式:即由8086組成的單處理器系統(tǒng),所有的總線控制信號直接由8086直接產(chǎn)生,故系統(tǒng)中的總線控制邏輯電路被減到最少。最大模式:即由8086組成的中等規(guī)模或者大型的系統(tǒng)。包含兩個或多個微處理器,8086為主處理器其它的為協(xié)處理器。 8086的兩種工作模式8086采用雙列直插式封裝,有40個引腳(如右圖所示),但總線信號數(shù)量卻大于40,故8086采用了分時復(fù)用技術(shù),部分引腳傳送兩種總線信號。123456789101112131415161718192040393837363534333231302928272625242322

31、21GNDAD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDVCCAD15A16/ S3A17/ S4A18/ S5A19/ S6BHE/ S7MN/MXRDHOLD (RQ/GT0)HLDA (RQ/GT1)WR (LOCK)M/IO (S2)DT/R (S1)DEN (S0)ALE (QS0)INTA (QS1)TESTREADYRESET8086CPU8086的引腳信號注:括號內(nèi)為該引腳在最大模式下的名稱 8086芯片的引腳圖1. 最小模式下引腳信號及功能:(1) 地址/數(shù)據(jù)總線AD15AD0(雙向、三態(tài)) 在一

32、個總線周期的第一個時鐘周期用于傳送低16bit地址信息,并用地址鎖存器鎖存以免丟失, 其它時鐘周期可用于傳送數(shù)據(jù)信息,分時傳送。 當(dāng)8086執(zhí)行中斷響應(yīng)周期、保持響應(yīng)周期時,這些引腳處于高阻狀態(tài)。(2) 地址/狀態(tài)信號線A19/S6A16/S3(輸出、三態(tài)) 在總線周期的第一個時鐘周期(T1)用于輸出地址信號的最高4bit并鎖存。 其它時鐘周期中用來輸出狀態(tài)信號S6S3,其中:S6低電平,表示8086當(dāng)前與總線相連。S5表示標(biāo)志寄存器中“中斷允許位”的狀態(tài)(IF)。S4, S3的組合指出了分段情況。如下表所示。 S4和S3的組合提供的分段信息表S4S3意 義00110101當(dāng)前正在使用ES附加

33、段當(dāng)前正在使用SS堆棧段當(dāng)前正在使用CS或者未使用任何段寄存器當(dāng)前正在使用DS數(shù)據(jù)段 當(dāng)CPU處于“保持響應(yīng)”狀態(tài)時,A19/S6A16/S3置為高阻狀態(tài)。 若執(zhí)行I/O指令,則由于8086只訪問64K個端口,在T1周期這4個引腳為低電平。(3) BHE/S7高8bit數(shù)據(jù)總線允許/狀態(tài)線(輸出, 三態(tài))在T1狀態(tài),8086在BHE/S7引腳輸出BHE信號,表示高8bit數(shù)據(jù)總線D15D8上的數(shù)據(jù)有效,與地址線A0一起產(chǎn)生存儲器的選擇邏輯信號。 在其它時鐘周期,輸出為狀態(tài)信號S7。但8086芯片, S7未定義。下面介紹引腳中的控制信號。(4) MN/MX最小/最大模式控制信息低電平 8086處

34、于最大模式。高電平 8086處于最小模式。(5) RD讀信號 (輸出,三態(tài))低電平有效。表示將對內(nèi)存或I/O端口讀操作。(6) M/IO,存儲器/輸入輸出控制信息 (輸出,三態(tài))是區(qū)分CPU進(jìn)行的存儲器還是I/O訪問,見下表。RDM/IO操 作1000讀存儲器數(shù)據(jù)讀I / O端口數(shù)據(jù) RD與 M/IO的組合及對應(yīng)的操作表(7) WR寫信號 (輸出,三態(tài))1000CPU對存儲器進(jìn)行寫操作CPU對I/O端口進(jìn)行寫操作 WR與 M/IO 的組合及對應(yīng)的操作表操 作WRM/IO低電平有效。WR與M/IO的組合對應(yīng)的操作如下表所示。(8) ALE地址鎖存允許信號 (輸出)高電平有效,此信號在T1狀態(tài)有效

35、,為地址碼鎖存的選通信號,送地址鎖存器。(9) READY準(zhǔn)備就緒信號 (輸入)高電平有效,是從所尋址的存儲器或I/O電路來的響應(yīng)信號,用于解決CPU與慢速存儲器或I/O電路的同步問題。CPU在T3周期開始采樣READY線,若為低電平,則T3之后插入TW等待周期直到READY為高電平,進(jìn)入T4完成數(shù)據(jù)傳送。(10) INTR可屏蔽中斷請求信號 (輸入)高電平有效,8086在每一個指令周期的最后一個T狀態(tài)采樣這條線,若IF=1,則8086在執(zhí)行完當(dāng)前指令即響應(yīng)中斷。(11) INTA中斷響應(yīng)信號 (輸出,三態(tài))低電平有效,CPU響應(yīng)外部可屏蔽中斷請求以后,便發(fā)出中斷響應(yīng)信號,作為對中斷請求的回答

36、。此信號在每一個中斷響應(yīng)周期的T2、T3和TW周期均有效,為中斷矢量的讀選通信號。(12) NMI非屏蔽中斷請求信號 (輸入)邊沿觸發(fā),該線上的中斷請求信號不能用軟件屏蔽,電平由低到高,便在當(dāng)前指令結(jié)束后引起中斷。(13) RESET系統(tǒng)復(fù)位信號 (輸入)高電平有效,8086要求此信號起碼維持4個時鐘周期,若初次加電復(fù)位,持續(xù)時間不小于50s,RESET為高電平時,8086立即結(jié)束現(xiàn)行操作,進(jìn)入內(nèi)部復(fù)位狀態(tài),CPU各內(nèi)部寄存器被設(shè)置為初值:CS=FFFFH,F(xiàn)lag、IP、DS、ES、SS及其它寄存器均初始化為0000H。(14) DT/ R數(shù)據(jù)收發(fā)控制信號 (輸出、三態(tài))為增強(qiáng)數(shù)據(jù)總線的驅(qū)動

37、能力,8086可外接驅(qū)動器8286,DT/R即為8086輸出的數(shù)據(jù)到收發(fā)器8286的控制信號。 DT/R高電平,8086輸出的數(shù)據(jù)經(jīng)8286送到數(shù)據(jù)總線; 8086工作在DMA方式時,DT/R為高阻狀態(tài),在最小模式時因無8286而不起作用。 DT/R低電平,收發(fā)器8286則把數(shù)據(jù)總線上的數(shù)據(jù)傳送到8086。高電平有效。系統(tǒng)中其他的總線主設(shè)備要獲得對總線的控制權(quán)時,向8086發(fā)出高電平的HOLD信號,8086在每個時鐘周期的上升沿對HOLD引腳信號進(jìn)行檢測,若為高電平,則在當(dāng)前總線周期結(jié)束時,予以響應(yīng)。(16) HOLD保持請求信號 (輸入)(15) DEN數(shù)據(jù)允許信號(輸出,三態(tài)) 低電平有效

38、,也是8086控制外接的數(shù)據(jù)收發(fā)器,低電平時開啟收發(fā)器,傳送數(shù)據(jù)有效; 高電平時,則禁止傳送。(17) HLDA保持響應(yīng)信號 (輸出)高電平有效。當(dāng)CPU響應(yīng)保持請求HOLD時,便發(fā)出HLDA高電平的應(yīng)答信號,從而將總線控制權(quán)讓給發(fā)出保持請求的設(shè)備,直到該設(shè)備又將HOLD信號變?yōu)榈碗娖剑珻PU才收回總線控制權(quán),將HLDA信號置為低電平。低電平有效。與WAIT等待指令結(jié)合使用,當(dāng)CPU執(zhí)行WAIT指令時,CPU處于空轉(zhuǎn)狀態(tài)進(jìn)行等待直到檢測到TEST信號有效時結(jié)束,CPU繼續(xù)往下執(zhí)行指令。(18) TEST測試信號 (輸入)(19) CLK系統(tǒng)時鐘輸入信號時鐘信號為CPU和總線控制邏輯電路提供定時

39、基準(zhǔn)。常用INTEL8284A時鐘發(fā)生器提供CLK信號。工作在最小模式下8086的典型配置如右圖所示。8086地址鎖存器STB(82862)OE(選用)數(shù)據(jù)總線地址總線(82823)READYRESETMN/MXALEBHEA19A16AD15AD0DENDT/RM/IOWRRDHOLDHLDAINTRINTA(8284A)X1 X2CLKREADYRESET+5VBHEA19A0D15D02. 最大模式下引腳信號及功能若將8086的MN/MX引腳接地便工作在最大模式。此時僅2431引腳信號與最小模式不同,如下表所示。引腳編號最小模式最大模式2425262728293031QS1QS0S0S1

40、S2LOCKRQ/GT1RQ/GT0INTAALEDENDT/RM/IOWRHLDAHOLD 兩種模式下8086的2431引腳信號表(1) QS1和QS0指令隊(duì)列狀態(tài)信號 (輸出)QS1和QS0編碼與隊(duì)列狀態(tài)表QS1QS0 隊(duì)列狀態(tài)00110101空操作取走指令的第一個字節(jié)隊(duì)列空從隊(duì)列里取出的字節(jié)是指令的后續(xù)字節(jié)兩信號編碼和對應(yīng)的隊(duì)列狀態(tài)如下表所示。這三個狀態(tài)信號組成的編碼表示了當(dāng)前總線周期是何種操作周期,如下表所示。 2, 1和 0編碼與總線周期表發(fā)中斷響應(yīng)信號讀I/O端口寫I/O端口暫停取指令讀存儲器寫存儲器 無源狀態(tài)010101010000111100110011S總線周期2S10S(2

41、) S2,S1和 S0總線周期狀態(tài)信號(輸出,三態(tài))(3) LOCK總線封鎖信號 (輸出,三態(tài))低電平有效。此信號有效時,系統(tǒng)中其他總線主部件不能占有總線。此信號由前綴指令LOCK使其有效,并保持到LOCK前綴后的一條指令執(zhí)行完畢。另外8086在兩個中斷響應(yīng)脈沖之間,LOCK信號也自動變?yōu)橛行щ娖?,以防其它部件占有總線。(4) RQ/GT1和RQ/GT0總線請求/允許信號 (雙向)供CPU以外的兩個處理器用以發(fā)出使用總線的請求信號和接收CPU對總線請求信號的回答信號,請求與允許信號在同引腳上傳輸,但方向相反。其中RQ/GT0優(yōu)先級較高。 下圖給出了8086在最大模式下的典型配置。8086在最大

42、模式下的典型配置8086CPU時鐘發(fā)生器(8284A)8288CLKDENALEMN / MXSTBOEOETIORCIOWC數(shù)據(jù)總線MRDCMWTCBHE8282382862CLKREADYRESETBHES0S1S2S0S1S2DT/RA19A0A15A0INTAA19A16AD15AD0 1READYRESET總線控制器地址總線由圖可以看出:8086在最大與最小模式下的主要區(qū)別是增加了一個8288總線控制器。8288接受8086CPU的狀態(tài)信號S2、S1和S0,經(jīng)過變換和組合,由8288發(fā)出對存儲器和I/O端口的讀/寫信號,對鎖存器8282及對總線收發(fā)器8286的控制信號。2.5 808

43、6存儲器管理8086采用分段管理的辦法實(shí)現(xiàn)對1MB存儲空間的管理(物理地址00000HFFFFFH),16bit的段寄存器存放了該段的段首址,那么它是怎樣產(chǎn)生20bit的物理地址的呢?我們通常采用在地址編號能被16整除的地方開始分段,此時地址的低4bit均為0,這時段寄存器只用來存放高16bit即可,以下有幾個概念。 段內(nèi)偏移量EA (Effective Address):是指某存儲單元離開該段段首址的字節(jié)數(shù)。 邏輯地址(Logical Address) :是一對地址,包含段寄存器的內(nèi)容和段內(nèi)偏移量,如某條指令的邏輯地址可表達(dá)為:CS : IP。 物理地址PA (Physical Address): 是指某個存儲單元實(shí)際的20bit的地址,又稱絕對地址。由上面的定義可知:物理地址PA=對應(yīng)段寄存器10H十段內(nèi)偏移量EA。物理地址的形成如下圖所示。物理地址的形成 段寄存器值 000020位物理地址19 015 015 0偏移地址加法器16 位 4位 例如:若CS=FFFFH,IP=0000H,則指令所在存儲單元的物理地址為:PA= (CS) 10H + IP = FFFF0H 當(dāng)取指令時,自動選擇的段寄存器是CS,再加上IP所決定的16位偏移量,得

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論