微機原理及應(yīng)用8086微處理器_第1頁
微機原理及應(yīng)用8086微處理器_第2頁
微機原理及應(yīng)用8086微處理器_第3頁
微機原理及應(yīng)用8086微處理器_第4頁
微機原理及應(yīng)用8086微處理器_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

微機原理及應(yīng)用——8086微處理器本章內(nèi)容8086微處理器編程結(jié)構(gòu)引腳信號和工作模式操作和時序存儲器組織和I/O組織總線接口部件執(zhí)行部件工作過程總線周期引腳信號最小模式最大模式系統(tǒng)的復(fù)位和啟動總線操作中斷操作和中斷系統(tǒng)8086的存儲器組織8086的I/O組織16位微處理器80861 8086/8088微處理器內(nèi)部結(jié)構(gòu)2 8086/8088微處理器中的內(nèi)部寄存器3 8086/8088微處理器外部基本引腳與工作模式4 8086/8088的存儲器組織58086CPU的工作時序6系統(tǒng)總線的形成地址信號標(biāo)志寄存器指令寄存器數(shù)據(jù)暫存器控制電路指令譯碼器地址寄存器指令指針寄存器R1R2R3R4寄存器組運算器IP數(shù)據(jù)信號控制信號ALUALU控制器CPU結(jié)構(gòu)示意圖EU控制器ALU暫存器標(biāo)志寄存器8位隊列總線總線控制邏輯內(nèi)部總線16位20位地址總線16位數(shù)據(jù)總線123456指令隊列通用寄存器AXAHALBXBHBLCXCHCLDXDHDL

SPBPDISICSDSSSES80888086IP內(nèi)部暫存器8086總線8086/8088CPU內(nèi)部結(jié)構(gòu)圖總線接口部件BIU執(zhí)行部件EU地址加法器8086的編程結(jié)構(gòu)——總線接口部件

1.段寄存器

CS代碼段寄存器

保存當(dāng)前執(zhí)行程序所在段的段基址DS數(shù)據(jù)段寄存器

保存數(shù)據(jù)段的段基址。數(shù)據(jù)段是用來保存當(dāng)前程序中的操作數(shù)和變量。SS堆棧段寄存器

保存有堆棧段的段基址

ES附加段寄存器

進行字符串操作時,作為目的段地址使用,是一種附加的數(shù)據(jù)區(qū),若要使用附加段,必須對ES置初值。在附加段中,DI寄存器用于存放附加段的偏移量。2.指令指針寄存器IP用來存放將要取出指令的偏移地址,每執(zhí)行一條指令,IP增量大小與已執(zhí)行指令的字節(jié)長度有關(guān)。程序以代碼的形式存在于存儲器中,每一條指令都有一個存放地址,IP總要指向下一條將要執(zhí)行的指令地址。3.地址加法器

產(chǎn)生20位的物理地址。物理地址=段基址×16+偏移量4.內(nèi)部暫存器用于內(nèi)部數(shù)據(jù)的暫存,該部分對用戶透明,用戶無權(quán)訪問。8086的編程結(jié)構(gòu)——總線接口部件8086的編程結(jié)構(gòu)——總線接口部件5.指令隊列緩沖器8088為4字節(jié),8086為6字節(jié)。為FIFO(先進先出)結(jié)構(gòu)。指令隊列至少保持有一條指令,且只要有一條指令,EU就開始執(zhí)行;若EU要進行M/IO存取數(shù)據(jù),BIU在執(zhí)行完現(xiàn)行取指操作周期后進行。當(dāng)執(zhí)行轉(zhuǎn)移指令時,EU要求BIU從新的地址中重新取指。隊列中原有指令被清除。新取得的第一條指令直接送EU執(zhí)行,隨后取得的指令填入隊列6.輸入/出控制電路

輸入/出控制電路控制CPU與外部電路的數(shù)據(jù)交換。8086的編程結(jié)構(gòu)——執(zhí)行部件1.數(shù)據(jù)寄存器組功能:存放操作數(shù)和中間結(jié)果。AXBXCXDXAHALBHBLCHCLDHDL累加器存放參加運算的操作數(shù)和運算結(jié)果,所有寄存器均可作累加器,有些指令約定AX(AL)寄存器為累加器,如乘法、除法、I/O出指令?;芳拇嫫饔嬎愕刂窌r用作基地址寄存器,用于擴展尋址,起變址作用。計數(shù)寄存器在某些指令中作隱含的計數(shù)器,如循環(huán)操作、串操作及移位操作等。數(shù)據(jù)寄存器存放操作數(shù)和列表數(shù)據(jù),在某些I/O操作期間,用來保存I/O端口地址,在乘除運算中有專用。寄存器用途AX字乘法,字除法,字I/OAL字節(jié)乘,字節(jié)除,字節(jié)I/O,十進制算術(shù)運算AH字節(jié)乘,字節(jié)除BX轉(zhuǎn)移CX串操作,循環(huán)次數(shù)CL變量移位,循環(huán)控制DX字節(jié)乘,字節(jié)除,間接I/O8086的編程結(jié)構(gòu)——執(zhí)行部件2.地址寄存器組SPBPDISI堆棧指針寄存器訪問堆棧段的棧頂單元。堆棧區(qū)基地址寄存器對堆棧段寄存器相對尋址的基地址寄存器,可訪問堆棧段的任意單元。源變址寄存器目的變址寄存器3.控制寄存器IPPSW

IP指令指針寄存器用來控制CPU的指令執(zhí)行順序,它和代碼段寄存器CS一起可以確定當(dāng)前所要取的指令的內(nèi)存地址。

PSW標(biāo)志寄存器用來存放8086CPU在工作過程中的狀態(tài)。8086的編程結(jié)構(gòu)——執(zhí)行部件8086的編程結(jié)構(gòu)——執(zhí)行部件OFDFIFTFSFZFAFPFCFD15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0

PSW唯一能按位操作的寄存器只定義了其中9位,另外7位未定義(不用)6位狀態(tài)標(biāo)志:OF、SF、ZF、PF、CF、AF3位控制標(biāo)志:DF、IF、TF反映指令對數(shù)據(jù)作用之后,結(jié)果的狀態(tài)(不是結(jié)果本身)。這些狀態(tài)將控制后續(xù)指令的執(zhí)行。10001101001101100011001000011001+0110011010101001運算結(jié)果最高位為1∴SF=1;例:2個數(shù)相加后,分析各標(biāo)志位的值第三位向第四位有進位 ∴AF=1;次高位向最高位有進位,最高位向前沒有進位,∴OF=10=1最高位沒有進位∴CF=0;低8位中1的個數(shù)為偶數(shù)個∴PF=1;運算結(jié)果本身≠0∴ZF=0;10001101001101100011001000011001-0010110010001100運算結(jié)果最高位為0 ∴SF=0;例:2個數(shù)相減后,分析各標(biāo)志位的值第三位向第四位沒有借位 ∴AF=0;次高位向最高位沒有借位,最高位向前沒有借位,∴OF=00=0最高位沒有借位 ∴CF=0;低8位中1的個數(shù)為奇數(shù)個∴PF=0;運算結(jié)果本身≠0 ∴ZF=0;CPU通過總線完成與存儲器、I/O端口之間的操作,這些操作統(tǒng)稱為總線操作??偩€周期數(shù)據(jù)總線DB控制總線

CB地址總線AB存儲器I/O接口輸入設(shè)備I/O接口輸出設(shè)備CPU1、執(zhí)行一個總線操作所需要的時間稱為總線周期??偩€周期2、一個基本的總線周期通常包含4個T狀態(tài),按時間的先后順序分別稱為T1、T2、T3、T4。

總線周期T1T2T3T4CLK總線周期1、執(zhí)行一條指令所需要的時間稱為指令周期。執(zhí)行一條指令的時間是取指令、執(zhí)行指令、

取操作數(shù)、存放結(jié)果所需時間的總和。用所需的時鐘周期數(shù)表示。指令周期2、不同指令的執(zhí)行時間(即指令周期)是不同的;

同一類型的指令,操作數(shù)不同,指令周期也不同。例

MOVBX,AX2個T周期

MULBL70~77個T周期

MOV[BX],AX14個T周期指令周期例2

執(zhí)行ADD[BX],AX包含:1)取指令存儲器讀周期

2)取(DS:BX)內(nèi)存單元操作數(shù)存儲器讀周期

3)存放結(jié)果到(DS:BX)內(nèi)存單元存儲器寫周期例1

執(zhí)行MOVBX,AX包含:取指令存儲器讀周期3、

執(zhí)行指令的過程中,需從存儲器或I/O端口讀取或存放數(shù)據(jù),故一個指令周期通常包含若干個總線周期。指令周期4、8086CPU取指令、執(zhí)行指令分別由BIU、EU完成取指和執(zhí)行指令可是并行的,故8086CPU的指令周期可以不考慮取指時間。

指令周期8086/8088微處理器——引腳功能8086/8088引腳結(jié)構(gòu)圖12345678910111213141516171819204039383736353433323130292827262524232221GNDAD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDVCCAD15A16/S3A17/S4A18/S5A19/S6BHE/S7MN/MXRDHOLD*HLDA*WR*M/IO*DT/R*DEN*ALE*INTA*TESTREADYRESET8086AD15~AD0

地址/數(shù)據(jù)復(fù)用總線引腳,雙向,分時復(fù)用構(gòu)造總線必須加鎖存器,8088的高8位不做復(fù)用,地址引腳是單向的。A16/S3~A19/S6

地址/狀態(tài)復(fù)用引腳,單向,分時復(fù)用。8086最多可訪問64K個I/O端口。

S5=1,允許可屏蔽中斷S5=0,禁止一切可屏蔽中斷

S4S300ES01SS10CS11DSS6=0,8086/8088當(dāng)前與總線相連8086/8088微處理器——引腳功能NMI

非屏蔽中斷,輸入,邊沿觸發(fā),上升沿有效。當(dāng)該引腳出現(xiàn)有效信號時,CPU執(zhí)行完指令后,立即響應(yīng)中斷,不受IF影響,也不受軟件影響,中斷類型號是2。INTR

可屏蔽中斷,輸入,電平觸發(fā)(或邊沿觸發(fā)),高電平有效。

CPU在執(zhí)行每一條指令的最后一個時鐘周期采樣該引腳,若為高電平(若IF=1),則響應(yīng)中斷。INTA中斷響應(yīng)信號、輸出、低電平有效。發(fā)給請求中斷請求設(shè)備的回答信號。一般發(fā)送兩個負脈沖信號,第一個通知外設(shè),第二個通知中斷源送出中斷矢量碼(即讀取矢量碼的選通信號)8086/8088微處理器——引腳功能ALE

地址所存允許信號、輸出、高定平有效。

MN/MX

最小/最大模式控制信號,輸入。該引腳固定接到+5V電源時,CPU處于最小工作模式,如果接地,CPU處于最大工作模式。8086/8088微處理器——引腳功能CLK

時鐘信號,輸入

CPU和總線控制的基準定時脈沖,一個時鐘周期內(nèi)具有1/3有效高電平(即占空比33%),8086/8088頻率為5MHz、8086-2頻率為8MHz、8086-1為10MHz等,CPU的所有操作都是在時鐘同步下進行的。RESET

復(fù)位信號,輸入,高電平有效。

8086/8088要求復(fù)位信號至少維持4個時鐘周期的高電平,以完成CPU內(nèi)部寄存器的復(fù)位操作。8086/8088微處理器——引腳功能READY

“準備就緒”信號,輸入,高電平有效。用來使CPU和慢速的存儲器(或I/O設(shè)備)之間的速度匹配。為避免失誤設(shè)備送來的READY信號,必須先經(jīng)過時鐘發(fā)生器8284,與時鐘CLK同步后,再送入CPU的READY引腳。

8086/8088微處理器——引腳功能DEN

數(shù)據(jù)允許信號,輸出,低電平有效。在最小模式時,做8286/8287的選通信號。DT/R

數(shù)據(jù)發(fā)送/接收信號,輸出。當(dāng)數(shù)據(jù)總線需要雙向驅(qū)動時,用來做方向控制;當(dāng)為高電平時,則進行數(shù)據(jù)發(fā)送,當(dāng)為低電平則為數(shù)據(jù)接收。M/IO

存儲器/外設(shè)控制信號,輸出。當(dāng)M/IO為高電平時,表示CPU訪問存儲器,若為低電平時,表示CPU執(zhí)行輸入/出(IN\OUT)指令對外設(shè)進行訪問8086/8088微處理器——引腳功能WR

寫信號、輸出,低電平有效。

當(dāng)CPU執(zhí)行存儲器或I/O寫操作指令時,WR為低電平RD

讀信號、輸出,低電平有效。

當(dāng)CPU執(zhí)行存儲器或I/O讀操作指令時,RD為低電平。HOLD

總線保持請求信號,輸入,高電平有效。

當(dāng)系統(tǒng)中其它模塊或部件需要占用總線時,向CPU發(fā)出申請。HLDA

總線請求回答信號,輸出,高電平有效。

HLDA=1,表示CPU同意讓出總線BHE/S7

高8位數(shù)據(jù)總線允許/狀態(tài)復(fù)用引腳,輸出。在T1時刻,輸出低電平,表示總線高8位AD15~AD8上的數(shù)據(jù)有效。在T2~T4,輸出S7狀態(tài)。BHE與A0組合,可對存儲器讀寫時的數(shù)據(jù)格式實現(xiàn)控制。10010BHEAD7~AD00AD15~AD8從奇地址讀/寫一個字1AD15~AD8從奇地址/或端口讀/寫一個字節(jié)1AD7~AD0從偶地址/或端口讀/寫一個字節(jié)0AD15~AD0從偶地址讀/寫一個字0所用的數(shù)據(jù)線操作A08086/8088微處理器——引腳功能無效110寫存儲器010讀存儲器100取指令000暫停111寫I/O011讀I/O101中斷響應(yīng)001操作SS0DT/RIO/M8086/8088微處理器——引腳功能TEST

測試信號,輸入,低電平有效。

當(dāng)執(zhí)行WAIT指令時,每隔5個時鐘周期,CPU就對該引腳采樣,若為高電平,就使CPU重復(fù)執(zhí)行WAIT指令而處于等待狀態(tài),直到變?yōu)榈碗娖?,CPU脫離等待繼續(xù)執(zhí)行下一條指令。該引腳與WAIT配合,可以實現(xiàn)CPU與外設(shè)同步工作。GND、Vcc地和電源

8086和8088均用單一的+5V電壓,有兩條地線。8086CPU工作模式8086CPU的兩種工作模式最小工作模式(單CPU系統(tǒng))最大工作模式(多CPU系統(tǒng))8086CPU最大模式控制信號引腳

(1)S2、S1、S0(BusCycleStatus)總線周期狀態(tài),三態(tài)輸出。(2)LOCK

總線封鎖信號,三態(tài)輸出,低電平有效。(3)RQ/GT1,RQ/GT0(Request/Grant)總線請求/總線請求允許信號,雙向,低電平有效。(4)QS1、QS0(InstructionQueueStatus)指令隊列狀態(tài)信號,輸出。總線狀態(tài)8086最小模式和最大模式的比較1)不同之處

最小模式下系統(tǒng)控制信號直接由8086CPU提供;最大模式下因系統(tǒng)復(fù)雜,芯片數(shù)量較多,為提高驅(qū)動能力和改善總線控制能力,大多數(shù)的系統(tǒng)控制信號由總線控制器8288提供。2)相同之處:

8086的低位地址線與數(shù)據(jù)線復(fù)用,為保證地址信號維持足夠的時間,需使用ALE信號將低位地址線鎖存(通過鎖存器8282),以形成真正的系統(tǒng)地址總線。

系統(tǒng)復(fù)位和啟動操作

8086CPU的RESET引腳上出現(xiàn)高電平時,終止所有操作,直到RESET信號變?yōu)榈汀?/p>

在這期間,CPU內(nèi)各寄存器被初始化為復(fù)位狀態(tài)。8086存儲器結(jié)構(gòu)8086/8088系統(tǒng)有20根地址總線,它可以直接尋址的存儲器單元數(shù)為220=1Mb,而微處理器中所有的寄存器都是16位的如何實現(xiàn)16位的存儲單元存放20位的地址空間?

存儲器分段具體做法是,將1M字節(jié)的存儲空間分成許多邏輯段,每段最長64K字節(jié)單元,可以用16位地址碼進行尋址。連續(xù)邏輯段A段B段C段D段E段00000H10000H20000H30000H40000H……實際(物理)存儲器分離完全重疊部分重疊8086存儲器結(jié)構(gòu)220-1=FFFFFH220-2=FFFFEH00001H00003H00005H00000H00002H00004H512K×8(位)512K×8(位)奇地址存儲體偶地址存儲體(A0=1)(A0=0)8086存儲器結(jié)構(gòu)

如果一個字是從偶地址開始存放,這種存放方式稱為對準存放,這樣存放的字稱為對準字。如果一個字從奇地址開始存放,這種存放方式稱非對準存放,這樣存放的字稱為非對準字。8086CPU數(shù)據(jù)總線是16位,對于存取一個字節(jié)的操作,需要一個總線周期,對于存取一個偶地址字的操作,也是需要一個總線周期,而對于存取一個奇地址字的操作,則需要兩個總線周期(CPU自動完成)。0000000001000020000300004000050000600007…FFFFEFFFFF0A43304B對準字非對準字8086存儲器和總線連接D7~D0D15~D8A0A19~A1DBABBHED7~D0奇地址存儲體SELA18~A0D7~D0偶地址存儲體SELA18~A08086系統(tǒng)堆棧操作堆棧:后進先出的的一段內(nèi)存棧頂:永遠由地址指針(SS:SP)指示棧底:最初始的地址指針(SS:SP)指示處堆棧深度:最大64KB堆棧的作用:調(diào)用子程序(或轉(zhuǎn)向中斷服務(wù)程序)時,把斷點及有關(guān)的寄存器、標(biāo)志位及時正確地保存下來,并保證逐次正確返回堆棧操作指令:入棧指令PUSH與出棧指令POP入/出棧操作數(shù):是一個字,而不是一個字節(jié)子程序調(diào)用指令或中斷響應(yīng)自動完成時,恢復(fù)斷點地址由返回指令(RET或IRET)完成堆棧初始化操作堆棧段起始地址棧底及初始棧頂

地址存儲單元10200H10202H10204H10206H10208H1020AH1020CH……10230H0011SS1020SP初值0030入棧操作棧頂PUSHAX

1234PUSHBX

1AB110200H10202H10204H10206H10208H……1022CH1022EH10230H0011

SS1020

SP0030棧底002E0030堆棧段起始地址12341AB1002E002C出棧操作棧頂POPAXPOPBX10200H10202H10204H10206H10208H……1022CH1AB11022EH123410230H0011

SS1020

SP002C(棧底)堆棧段起始地址002E0030

1AB1

12348086輸入/輸出結(jié)構(gòu)

CPU是通過I/O端口與輸入輸出設(shè)備交換信息的。一般一個接口電路中可能有幾個端口。地址總線的低16位可用來對8位I/O端口尋址,所以8086I/O空間最大為64K個8位I/O端口。任意兩個地址連續(xù)的8位I/O端口,可以當(dāng)作一個16位I/O端口,可以存放一個字。

8086有專門的輸入指令(IN)和輸出指令(OUT),用來訪問I/O端口。I/O空間不分段,所有I/O端口均看作在一個段內(nèi)。8086輸入/輸出結(jié)構(gòu)I/O端口的編址方式有統(tǒng)一編址和獨立編址兩種。統(tǒng)一編址是與存儲器一起編地址號,這樣I/O端口占用存儲器的一部分空間。獨立編址是I/O端口與存儲器分開編地址號,I/O端口不占用存儲空間,但與存儲空間有重合的部分。通常8086系統(tǒng)的I/O端與存儲器有重合部分,但由于訪問I/O端口的指令與訪問存儲器的指令不同,二者是可以區(qū)分的。I/O端口組織(a)存儲器映像編址方式

存儲單元地址00000H00001H……FF0FFHI/O端口地址FF100HFF101H……FFFFFH

特點:將端口看作存儲單元,僅以地址范圍的不同來區(qū)分兩者。

優(yōu)點:對端口的操作和對存儲單元的操作完全一樣,因此系統(tǒng)簡單,并且對端口操作的指令種類較多。

缺點:CPU對存儲單元和I/O端口的實際尋址空間都小于其最大尋址空間。存儲單元地址00000H00001H……FF0FFHFF100HFF101H……FFFFFHI/O端口地址0000H0001H……F0FFHF100HF101H……FFFFH特點:系統(tǒng)視端口和存儲單元為不同的對象。

優(yōu)點:系統(tǒng)中存儲單元和I/O端口的數(shù)量可以達到最大。缺點:需要專門的信號來指示系統(tǒng)地址線上出現(xiàn)的

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論