第三章微處理器及其系統(tǒng)_第1頁
第三章微處理器及其系統(tǒng)_第2頁
第三章微處理器及其系統(tǒng)_第3頁
第三章微處理器及其系統(tǒng)_第4頁
第三章微處理器及其系統(tǒng)_第5頁
已閱讀5頁,還剩211頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

微型計算機原理及應用鄭猛北京理工大學光電學院

2023/2/112023/2/12

以Intel8086/8088、Z8000和MC68000為代表的16位微處理器是第3代產品,以它們?yōu)楹诵牟考M成的微機系統(tǒng),其性能已達到中、高檔小型計算機的水平。20多年來,Intel系列CPU一直占著主導地位。盡管8086/8088后續(xù)的80286、80386、80486以及Pentium系列CPU結構與功能已經發(fā)生很大變化,但從基本概念與結構以及指令格式上來講,它們仍然是經典的8086/8088CPU的延續(xù)與提升。并且,其他系列流行的CPU(如AMD公司的6X86MX/MⅡ等)也與80x86CPU兼容。內容提要8086/8088微處理器8086/8088系統(tǒng)的最小/最大工作方式8086/8088的存儲器8086/8088指令系統(tǒng)第三章8086/8088微處理器及其系統(tǒng)2023/2/13透徹理解與熟練掌握8086/8088內部組成結構、寄存器結構與總線周期等內容;深入理解存儲器的分段設計;正確理解與熟練掌握物理地址和邏輯地址關系;理解堆棧及其操作;理解“段加偏移”尋址機制;掌握尋址方式;掌握六大類指令系統(tǒng)的基本用法。2023/2/143.18086/8088微處理器2023/2/15

8086是Intel系列的16位微處理器,是iAPX86/88系列微機的基礎。它采用高速運算性能的HMOS工藝制造,芯片上集成有2.9萬個晶體管,用單一的+5伏電源和40條引腳的雙列直插式封裝;時鐘頻率為5MHz~10MHz,最快的指令執(zhí)行時間為0.4μs。

8086有16根數據線和20根地址線,可以處理8位或16位數據,尋址1MB的存儲單元和64KB的I/O端口(實際只使用1KBI/O端口)。 在推出8086之后不久,Intel公司還推出了準16位微處理器8088。8088的內部寄存器、運算器以及內部數據總線都是按16位設計的,但外部數據總線只有8條。這樣設計的目的主要是為了與Intel原有的8位外圍接口芯片直接兼容。在本節(jié)中,我們對8088也將加以說明。3.18086/8088微處理器

3.1.1.

8086/8088CPU的內部結構2023/2/16從功能上講,8086/8088可分為兩個部分,即總線接口單元BIU(BusInterfaceUnit)和執(zhí)行單元EU(ExecutionUnit)。3.18086/8088微處理器

3.1.1.

8086/8088CPU的內部結構2023/2/17總線接口部件BIU(BusInterfaceUnit)⑴功能:物理地址形成、取指令、指令排隊、讀/寫操作數、總線控制。

⑵組成指令隊列緩沖器16位段寄存器16位指令指針寄存器20位物理地址加法器總線控制電路⑶工作過程形成物理地址,發(fā)讀信號(/RD),取指令送入指令隊列。3.18086/8088微處理器

3.1.1.

8086/8088CPU的內部結構2023/2/18總線接口部件BIU(BusInterfaceUnit)

8086的指令隊列為6個字節(jié),而8088的指令隊列為4個字節(jié)。在執(zhí)行指令的同時,存滿一條指令就開始執(zhí)行,指令隊列空出兩個指令字節(jié)時,BIU自動取指,填滿為止。

并行流水線方式:某一時刻同時完成上述3項工作如:T1時刻,執(zhí)行指令1、譯碼指令2、取指令3;

T2時刻,執(zhí)行指令2、譯碼指令3、取指令4;微機執(zhí)行指令所需基本工作:①取指令(從內存中取出指令→指令隊列寄存器)。②譯碼(確定該指令為何種操作)。③時序控制(控制完成操作,如計算、數據傳送等)。(1)指令隊列緩沖器:3.18086/8088微處理器

3.1.1.

8086/8088CPU的內部結構2023/2/19指令執(zhí)行部件EU(ExecutionUnit)⑴功能指令譯碼、執(zhí)行指令。

⑵組成16位算術邏輯單元ALU16位標志寄存器F數據暫存寄存器通用寄存器組EU控電路⑶工作過程從BIU的指令隊列取得指令、進行譯碼、執(zhí)行指令。3.18086/8088微處理器

3.1.1.

8086/8088CPU的內部結構2023/2/1103.CPU的工作過程(1)先執(zhí)行讀操作,根據CS:IP在地址加法器,形成20位物理地址:CS×16+IP,從該地址取出指令,送入指令隊列,等待執(zhí)行。1234563.18086/8088微處理器

3.1.1.

8086/8088CPU的內部結構2023/2/1113.CPU的工作過程(2)EU從隊列中取出指令,并分析譯碼,向各部件發(fā)出控制命令,以完成執(zhí)行指令的功能。EU對指令進行譯碼、分析和執(zhí)行時,此時EU不需要用總線,BIU乘機可將后續(xù)指令讀入指令對列,將隊列填滿。3456123.18086/8088微處理器

3.1.1.

8086/8088CPU的內部結構2023/2/1123.CPU的工作過程(3)

當指令隊列已滿,EU未向BIU申請讀/寫存儲器或I/O操作時,BIU處于空閑周期。

如EU執(zhí)行8位數乘法指令MUL時,需70-77個時鐘周期,取指令占兩個總線周期(8個時鐘周期),這段時間BIU就可以取指令填滿隊列,后續(xù)剩余時間BIU就處于空閑狀態(tài)。123456ALU3.18086/8088微處理器

3.1.1.

8086/8088CPU的內部結構2023/2/1133.CPU的工作過程(4)

在指令的執(zhí)行過程中,若需要對存儲單元或I/O端口存取數據,EU就要求BIU去完成相應的總線周期。123456總線控制電路3.18086/8088微處理器

3.1.1.

8086/8088CPU的內部結構2023/2/1143.CPU的工作過程(5)

若在指令執(zhí)行過程中遇到JMP和CALL指令,將隊列中內容作廢,按新的轉移地址中取指令碼。

除這種情況外,取指令和執(zhí)行指令都能同時進行。123456JMPCALL3.18086/8088微處理器

3.1.28086/8088的寄存器結構2023/2/115圖3.38086/8088的編程結構CS:CodeSegmentDS:DataSegmentSS:StackSegmentES:ExtraSegment3.18086/8088微處理器

3.1.28086/8088的寄存器結構2023/2/1161、通用寄存器

AX、BX、CX和DX—16位寄存器(可做16位、也可做2個8位用)。作用:①、通用用途:存放數據。②、專用用途:AX

:累加器(存運算結果)。

BX

:基址寄存器。

CX:在循環(huán)和串操作時做計數器。

DX:16位乘、除運算時,DX與AX組成32位字長(雙字),存結果。在I/O(輸入/輸出)指令中,DX存放I/O口地址。

(1)數據寄存器:3.18086/8088微處理器

3.1.28086/8088的寄存器結構2023/2/1171、通用寄存器

作用:存放下一次要取出執(zhí)行的指令的偏移地址與CS結合使用構成真正的指令物理地址用戶不能直接更新使用,只能由系統(tǒng)自動更新

SP、BP、SI、DI—16位寄存器。作用:①、通用用途:存放數據。②、專用用途:與地址和堆棧操作有關。(3)指令指針寄存器:(2)指針寄存器和變址寄存器:

3.18086/8088微處理器

3.1.28086/8088的寄存器結構2023/2/1182、段寄存器

CS(程序)、DS(數據)、SS(堆棧)、ES(附加)—16位寄存器。作用:①、通用用途:存放數據。②、專用用途:與地址和堆棧操作有關。3、標志寄存器

1511109876543210OFDFIFTFSFZFAFPFCF狀態(tài)標志(6個):CF、PF、AF、ZF、SF和OF控制標志(3個):TF、IF、DF3.18086/8088微處理器

3.1.28086/8088的寄存器結構2023/2/1193、標志寄存器

1511109876543210OFDFIFTFSFZFAFPFCF☆狀態(tài)位:表示某條指令執(zhí)行后,產生的狀態(tài)信息(如有否進位、結果是正還是負等),一般用于條件轉移等的判斷依據。

(1)CF(carryflag)進位標志

當加法(或減法)使最高位(D7

或D15)產生進(借)位時,CF=1,否則,CF=0;循環(huán)或移位指令也會使CF改變。

(2)PF(parityflag)奇偶標志

操作結果低8位中“1”的個數為偶數,PF=1,否則,PF=0。用于奇偶校驗。3.18086/8088微處理器

3.1.28086/8088的寄存器結構2023/2/1203、標志寄存器

1511109876543210OFDFIFTFSFZFAFPFCF☆狀態(tài)位:

(3)AF(AuxiliaryCarryFlag)輔助進位標志:加(減)運算時,D3向D4進(借)位,AF=1,否則,AF=0。用于BCD碼運算的十進制調整。

(4)ZF(ZeroFlag)零標志

運算結果為零,ZF為1,否則,ZF=0。(5)SF(SignFlag)符號標志

若運算結果最高位為1(即為負),SF=1,否則,SF=0。指示結果的正負。3.18086/8088微處理器

3.1.28086/8088的寄存器結構2023/2/1213、標志寄存器

1511109876543210OFDFIFTFSFZFAFPFCF☆狀態(tài)位:(6)OF(OverflowFlag)溢出標志

溢出標志用于判斷在有符號數進行加法或減法時是否可能出現溢出。溢出將指示運算結果已超出機器能夠表示的數值范圍。注意:溢出是按補碼情況規(guī)定的。即:8位時,超出-128~+127;16位時,超出-32768~+32767;溢出→OF=13.18086/8088微處理器

3.1.28086/8088的寄存器結構2023/2/1223、標志寄存器

例:

CF(CarryFlag)進位標志PF(ParityFlag)奇偶校驗位10001000

+11001001010100011CF110001000

+0100100111010001PF13.18086/8088微處理器

3.1.28086/8088的寄存器結構2023/2/1233、標志寄存器

例:

ZF(ZeroFlag)零標志SF(SignFlag)符號標志

00000001

+11111111000000001ZF110001000

+0100100111010001SF13.18086/8088微處理器

3.1.28086/8088的寄存器結構2023/2/1243、標志寄存器

例:

AF(AuxiliaryCarryFlag)輔助進位標志OF(OverflowFlag)溢出標志

10001000

+11001001010100011AU1

01000000

+01000000100000000OF13.18086/8088微處理器

3.1.28086/8088的寄存器結構2023/2/1253、標志寄存器

01111110例:運算對標志位的影響的例01011011+11011001SF=1(結果最高位為1)ZF=0(結果不等于0)AF=1(D3向D4有進位)PF=0(1的個數為奇數)CF=0(無進位)OF=1(和超過127)

兩個整數相加結果為負,反之亦然3.18086/8088微處理器

3.1.28086/8088的寄存器結構2023/2/1263、標志寄存器

1511109876543210OFDFIFTFSFZFAFPFCF☆控制位:用來控制CPU的操作,由程序設置或清除。

(1)DF(DirectionFlag)方向標志

它用來控制數據串操作指令的步進方向。若用STD指令將DF置1,則數據串操作過程中地址會自動遞減;若用CLD指令將DF清0,則數據串操作過程中地址會自動遞增。3.18086/8088微處理器

3.1.28086/8088的寄存器結構2023/2/1273、標志寄存器

1511109876543210OFDFIFTFSFZFAFPFCF☆控制位:用來控制CPU的操作,由程序設置或清除。

(2)IF(InterruptEnableFlag)中斷允許標志

控制可屏蔽中斷的標志。若用STI指令將IF置1,則表示允許8086/8088CPU接受外部從其INTR引腳上發(fā)來的可屏蔽中斷請求信號;若用CLI指令將IF清0,則禁止CPU接受外來的可屏蔽中斷請求信號。IF的狀態(tài)不影響非屏蔽中斷(NMI)請求,也不影響CPU響應內部的中斷請求。3.18086/8088微處理器

3.1.28086/8088的寄存器結構2023/2/1283、標志寄存器

1511109876543210OFDFIFTFSFZFAFPFCF☆控制位:用來控制CPU的操作,由程序設置或清除。

(3)TF(TrapFlag)跟蹤(陷阱)標志:

若將TF標志置為1,則8086/8088CPU處于單步工作方式;否則,將正常執(zhí)行程序。在高型號微處理器中,跟蹤(陷阱)標志能夠激活芯片上的調試特性(調試程序,以便找到錯誤或故障),當TF標志為1時,則微處理器將根據調試寄存器和控制寄存器的指示中斷程序流。3.18086/8088微處理器

3.1.3總線周期2023/2/129

總線周期是微處理器操作時所依據的一個基準時間段,通常,它是指微處理器完成一次訪問存儲器或I/O端口操作所需的時間。指令周期執(zhí)行一條指令所需的時間稱為指令周期。不同指令的指令周期的長短是不同的。一個指令周期由幾個總線周期組成。注意:在8086/8088CPU中,每個總線周期至少包含4個時鐘周期(T1~T4),一般情況下,在總線周期的T1狀態(tài)傳送地址,T2~T4狀態(tài)傳送數據。時鐘周期CPU的時鐘頻率的倒數,也稱T狀態(tài)。3.18086/8088微處理器

3.1.3總線周期2023/2/130時鐘周期由計算機的主頻決定,是CPU的定時基準例如:8086的主頻f為5MHz,則1個時鐘周期T為1/f=1/(5*106

)=200ns空閑時鐘周期Ti,在兩個總線周期之間插入等待時鐘周期Tw,在總線周期的T3和T4之間插入

T1T2T3T4TiTi

T1T2T3TwTwTwT4TiTi

總線周期總線周期若干個1~2個GNDAD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDVCCAD15AD16/S3AD17/S4AD18/S5AD19/S6BHE/S7MN/MXRDHOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESET8086CPU403938373635343332313029282726252423222112345678910111213141516171819203.18086/8088微處理器

3.1.48086/8088的引腳信號和功能2023/2/131地址/數據總線AD15~AD016條地址/數據總線分時復用;三態(tài);雙向分時復用:在總線周期T1狀態(tài),A15~A0;在總線周期T2~T4狀態(tài),D15~D0;三態(tài)雙向:傳送地址時三態(tài)輸出,傳送數據時三態(tài)雙向輸入/輸出,在中斷響應及系統(tǒng)總線‘保持響應’周期,高阻。T1狀態(tài):輸出要尋址的存儲器或I/O端口地址T2狀態(tài);浮置成高阻狀態(tài),為傳輸數據做準備。T3狀態(tài);用于傳輸數據。T4狀態(tài);結束總線周期。3.18086/8088微處理器

3.1.48086/8088的引腳信號和功能2023/2/132三態(tài)輸入/輸出

三態(tài)指的是高電平(1)、低電平(0)、高阻態(tài)(Z)三種狀態(tài),通常由三態(tài)門來實現。

采用原因:

1、大多數計算機中的信息傳輸線均采用總線形式,且信息是分時傳送的。2、為防止信息相互干擾,要求凡掛在總線上的寄存器或存儲器等,它的傳輸端不僅能呈現0、1兩個信息狀態(tài),而且還應能呈現第三種狀態(tài)——高阻抗狀態(tài)(又稱高阻狀態(tài))。

3、在高阻態(tài)好像它們的輸出被斷開,對總線狀態(tài)不起作用,此時總線可由其它器件占用。3.18086/8088微處理器

3.1.48086/8088的引腳信號和功能2023/2/133三態(tài)輸入/輸出

三態(tài)門即可實現上述的功能當控制端E=1時,輸出=輸入,此時總線由該器件驅動,總線上的數據由輸入數據決定;當控制端E=0時,輸出端呈高阻抗狀態(tài),該器件對總線不起作用。

當寄存器輸出端接至三態(tài)門,再由三態(tài)門輸出端與總線連接起來,就構成三態(tài)輸出的緩沖寄存器。如下圖所示就是一個4位的三態(tài)輸出緩沖寄存器。由于這里采用的是單向三態(tài)門,所以數據只能從寄存器輸出到數據總線。如果要實現雙向傳送,則要用雙向三態(tài)門。響應中斷時設為高阻3.18086/8088微處理器

3.1.48086/8088的引腳信號和功能2023/2/1342.地址/狀態(tài)總線A19/S6~A16/S3在總線周期T1狀態(tài),輸出A19~A16。訪問存儲器時,T1狀態(tài)時輸出的A19~A16送到鎖存器(8282)鎖存,與AD15~AD0組成20位的地址信號;而訪問I/O端口時,不使用這4條引線,A19~A16=0。在總線周期T2~T4狀態(tài),S6~S3輸出狀態(tài)信息。當系統(tǒng)總線處于“保持響應”狀態(tài),這些引腳被置成高阻狀態(tài)。分時復用;三態(tài);輸出3.18086/8088微處理器

3.1.48086/8088的引腳信號和功能2023/2/1352.地址/狀態(tài)總線A19/S6~A16/S3S4S3當前正在使用的段寄存器00ES01SS10CS,或不需要使用段寄存器(I/O,INT)11DSS6=0,表明8086當前連在總線上;S5=0,禁止一切可屏蔽中斷;S5=1,允許可屏蔽中斷;

S4S3:指示當前正在使用哪一個段寄存器3.18086/8088微處理器

3.1.48086/8088的引腳信號和功能2023/2/1363.控制總線

高8位數據總線允許/狀態(tài)信號三態(tài)、輸出。BHE/S716位數據傳送時,在T1狀態(tài),用BHE指出高8位數據總線上數據有效,用AD0地址線指出低8位數據線上數據有效。在T2~T4狀態(tài),S7輸出狀態(tài)信息(在8086芯片設計中,S7末賦于實際意義)。3.18086/8088微處理器

3.1.48086/8088的引腳信號和功能2023/2/1373.控制總線RD讀控制信號三態(tài)、輸出。當RD為低電平時,表示CPU將要執(zhí)行一個對存儲器或I/O端口的讀操作。對內存單元還是對I/O端口讀取數據,取決于IO/M信號。在一個讀操作的總線周期中,RD信號在T2、T3狀態(tài)均為低電平,以保證CPU讀有效。3.18086/8088微處理器

3.1.48086/8088的引腳信號和功能2023/2/1383.控制總線準備好信號線,輸入。READY

當READY=1時,表示所尋址的內存或I/O設備已準備就緒,馬上就可進行一次數據傳輸。CPU在每個總線周期的T3狀態(tài)開始對READY信號采樣。READY=0,表示存儲器或I/O設備尚未準備就緒,則CPU在T3狀態(tài)之后自動插入一個或幾個等待狀態(tài)Tw,直到READY變?yōu)楦唠娖?,才進入T4狀態(tài),完成數據傳送過程,從而結束當前總線周期。3.18086/8088微處理器

3.1.48086/8088的引腳信號和功能2023/2/1393.控制總線等待測試輸入信號,低電平有效。TEST

在CPU執(zhí)行WAIT指令期間,每隔5個時鐘周期對TEST引腳進行一次測試,若測試到TEST為高電平,CPU處于空轉等待狀態(tài);當測試到TEST有效,空轉等待狀態(tài)結束,CPU繼續(xù)執(zhí)行被暫停的指令。

WAIT指令作用是用來使處理器與外部硬件同步。3.18086/8088微處理器

3.1.48086/8088的引腳信號和功能2023/2/1403.控制總線可屏蔽中斷請求信號,高電平有效,輸入。INTR

當INTR=1時,表示外設提出了中斷請求,8086/8088在每個指令周期的最后一個T狀態(tài)去采樣此信號。若IF=1,則CPU響應中斷,停止執(zhí)行當前的指令序列,并轉去執(zhí)行中斷服務程序。若IF=0,中斷請求被屏蔽。3.18086/8088微處理器

3.1.48086/8088的引腳信號和功能2023/2/1413.控制總線非屏蔽中斷請求輸入信號,上升沿觸發(fā)。NMI

此請求不受IF狀態(tài)的影響,也不能用軟件屏蔽,只要此信號一出現,CPU就會在現行指令結束后引起中斷。3.18086/8088微處理器

3.1.48086/8088的引腳信號和功能2023/2/1423.控制總線復位輸入信號,高電平有效。RESET

CPU接收到復位信號后,停止現行操作,并出始化段寄存器CS、DS、SS、ES,標志寄存器PSW,指令指針I(yè)P和指令隊列,CS=0FFFFH。RESET信號至少保持4個時鐘周期以上的高電平。復位過程:當它變?yōu)楦唠娖綍r,CPU執(zhí)行重啟動過程,8086/8088將從地址FFFF0H開始執(zhí)行指令。通常在FFFF0H單元開始的幾個單元中存放一條無條件轉移指令,將入口轉到引導和裝配程序中,實現對系統(tǒng)的初始化,引導監(jiān)控程序或操作系統(tǒng)程序。3.18086/8088微處理器

3.1.48086/8088的引腳信號和功能2023/2/1433.控制總線系統(tǒng)時鐘,輸入。CLK

由8284A時鐘發(fā)生器產生(該時鐘信號的低/高之比常采用2∶1),8086CPU使用的時鐘頻率,因芯片型號不同,時鐘頻率不同,例8086為5MHz。3.18086/8088微處理器

3.1.48086/8088的引腳信號和功能2023/2/1443.控制總線最小/最大工作模式選擇信號,輸入。MN/MX當MN/MX接+5V時:CPU工作在最小模式,單處理器系統(tǒng),CPU提供所有總線控制信號;當MN/MX接地時:

CPU工作在最大模式,CPU的S2~S0提供給總線控制器8288,由8288產生總線控制信號。3.18086/8088微處理器2023/2/1458088和8086CPU的不同之處指令隊列:8088的指令隊列長度是4個字節(jié),指令隊列中只要出現一個空閑字節(jié)時,CPU就會自動訪問存儲器,取指令來補充指今隊列。讀寫周期:8088CPU中,BIU的總線控制電路與外部交換數據的總線寬度是8位,而EU的內部總線是16位,這樣,對16位數的存儲器讀/寫操作要兩個讀/寫周期才可以完成。數據線:8088CPU外部數據總線只有8條,分時復用的地址/數據總線AD7~AD0;而AD15~AD8成為僅傳遞地址信息的A15~A8。存儲器/IO端口信號:8088用M/IO信號代替M/IO信號,M/IO低電平時選通存儲器,高電平時選通I/O接口。2023/2/1463.18086/8088微處理器時序:計算機操作運行的時間順序。2023/2/1473.18086/8088微處理器學習引腳功能的應用例子:已知并行通訊接口芯片8255A的接口電路如圖所示,端口地址分別為:90H、92H、94H和96H,請按要求完成下述功能:(1)利用74LS138譯碼器和邏輯門搭建地址譯碼電路,要求8255A各端口地址唯一。(2)畫出8255A與8086最小系統(tǒng)的硬件接口連接線。(3)編寫完整的匯編源程序,使開關K接到位置1時,數碼管顯示相應的數字13.28086/8088系統(tǒng)的最小/最大工作方式2023/2/148由8086/8088CPU構成的微機系統(tǒng),有最小方式和最大方式兩種系統(tǒng)配置。系統(tǒng)配置方式:最小模式(CPU的引腳MN/MX端接高電平+5V)最大模式(CPU的引腳MN/MX端接低電平地)系統(tǒng)配置特點:最小模式為單機系統(tǒng),控制信號由CPU提供;最大模式為多處理器/協(xié)處理器系統(tǒng),控制信號由總線控制器提供。CPU的24~31引腳意義不同3.28086/8088系統(tǒng)的最小/最大工作方式

3.2.1最小方式2023/2/149最小模式系統(tǒng)組成8086CPU存儲器I/O接口芯片1片8284A,作為時鐘發(fā)生器3片8282/8283或74LS373,作為地址鎖存器2片8286/8287或74LS245,作為雙向數據總線收發(fā)器(可不用)3.28086/8088系統(tǒng)的最小/最大工作方式

3.2.1最小方式2023/2/1508284A時鐘發(fā)生器RESVccCLKREADYRESETRDWRM/IOALE8086CPUA19~A16AD15~AD0DENDT/RMN/MXVccSTB8282/8283OE8286/8287T地址/數據地址存儲器(ROM、RAM)DATAI/O芯片(外部設備)DATABHEOEBHE20位16位地址總線數據總線地址鎖存器收發(fā)器可選等待狀態(tài)產生電路:向8284A的RDY端提供一個信號,經同步后,向CPU的READY線發(fā)“準備就緒”信號,通知CPU數據傳送已完成,可推出當前總線周期RDY3.28086/8088系統(tǒng)的最小/最大工作方式

3.2.1最小方式2023/2/151

產生CLK信號,該CLK信號是8086CPU的內部和外部的時間基準信號,可由驅動門電路進行功率放大。時鐘發(fā)生器82843.28086/8088系統(tǒng)的最小/最大工作方式

3.2.1最小方式2023/2/152GNDAD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDVCCAD15AD16/S3AD17/S4AD18/S5AD19/S6BHE/S7MN/MXRDHOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESET8086CPU40393837363534333231302928272625242322211234567891011121314151617181920引腳定義中斷響應信號(輸出,低電平有效)CPU對外部發(fā)來的中斷請求信號INTR的響應信號。在相鄰的兩個總線周期中送出兩個負脈沖,第一個負脈沖通知外設接口已響應它的中斷請求,外設接口收到第二個負脈沖信號后,向數據總線上放中斷類型號。INTA3.28086/8088系統(tǒng)的最小/最大工作方式

3.2.1最小方式2023/2/153GNDAD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDVCCAD15AD16/S3AD17/S4AD18/S5AD19/S6BHE/S7MN/MXRDHOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESET8086CPU40393837363534333231302928272625242322211234567891011121314151617181920引腳定義地址鎖存信號(輸出,高電平有效)CPU提供給地址鎖存器8282/8283的控制信號。ALE在T1狀態(tài)為高電平時,表示在當前地址/數據復用總線上輸出的是有效地址,由地址鎖存器把它作為鎖存信號將地址所存。ALE3.28086/8088系統(tǒng)的最小/最大工作方式

3.2.2最大方式2023/2/154CPU的引腳MN/MX接地。在最大模式系統(tǒng)中需要增加總線控制器8288(或總線裁決器8289),以完成8086CPU為中心的多處理器系統(tǒng)的協(xié)調工作。CPU輸出的狀態(tài)信號S2~S0同時送給8288,由8288輸出原CPU所有的控制信號:存儲器讀/寫控制,I/O端口讀/寫控制,中斷響應信號等。(可以增加總線裁決器8289來裁決總線使用權賦給哪個處理器,以實現多主控者對總線資源的共享)3.28086/8088系統(tǒng)的最小/最大工作方式

3.2.2最大方式2023/2/155地址鎖存器收發(fā)器8284A時鐘發(fā)生器OERESVccCLKREADYRESET8086CPUA19~A16AD15~AD0MN/MXSTB8282/8283OE8286/8287T地址/數據地址BHES0S1S2地址總線數據總線S1CLKS0S2DENDT/RALEIORCIOWCMWTCMRDCINTAAENCLKS2S1S0AEN82898288多主控者系統(tǒng)總線存儲器(ROM、RAM)DATAI/O芯片(外部設備)DATA地址鎖存器收發(fā)器GNDAD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDVCCAD15AD16/S3AD17/S4AD18/S5AD19/S6BHE/S7MN/MXRDHOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESET8086CPU403938373635343332313029282726252423222112345678910111213141516171819203.28086/8088系統(tǒng)的最小/最大工作方式

兩種模式下8086CPU的24~31引腳定義2023/2/1563.38086/8088的存儲器2023/2/157

3.3.1存儲器組織

存儲器中任何兩個相鄰的字節(jié)被定義為一個字,每個字節(jié)都有一個地址,并且這兩個地址中的較小的一個被用來作為該字的地址。內存地址存儲器說明00000H07低字節(jié),字以偶地址開始00001H6B高字節(jié),表示的數為6B07H00002H00003H00004H00005H60低字節(jié),字以奇地址開始00006H3E高字節(jié),表示的數為3E60H00007H規(guī)則存放非規(guī)則存放字在存儲器中的存放3.38086/8088的存儲器2023/2/158

3.3.1存儲器組織

8086中,存儲器采用分體結構,即1MB的存儲空間分成兩個512KB的存儲體,一個存儲體含偶地址,一個奇地址。存儲器的組成奇數地址D15—D8D7—D0偶數地址00001H00002H00003H00004H00005H00006H...512K×8奇地址存儲體(BHE=0)512K×8偶地址存儲體(A0=0)...FFFFFHFFFFEH3.38086/8088的存儲器2023/2/159

3.3.1存儲器組織

8086中,存儲器采用分體結構,即1MB的存儲空間分成兩個512KB的存儲體,一個存儲體含偶地址,一個奇地址。存儲器的組成BHEA0讀寫的字節(jié)00同時讀/寫高低兩個字節(jié)01只讀/寫奇數地址的高位字節(jié)10只讀/寫偶數地址的低位字節(jié)11不傳送

8088中存儲器為單一的存儲體,即1MB×8位。3.38086/8088的存儲器2023/2/160

3.3.2存儲器的分段問題的提出——存儲器為什么要分段使用?8086/8088CPU的寄存器都是16位,故只能直接尋址216=

64KB的地址空間。但是8086/8088設計有20根地址線,尋址范圍:220=1MB。所以,8086/8088系統(tǒng)采用分段并附以地址偏移量的方法形成20位物理地址。被劃分的存儲器段稱為邏輯段。3.38086/8088的存儲器2023/2/161

3.3.2存儲器的分段特點:1、可以任意劃分段,容量不大于64KB(不小于16B);2、段之間可以重疊。代碼段附加段堆棧段數據段≤64KB≤64KB≤64KB≤64KB10000H250A0H7FFA0H8CFA0H1000H7FFAH8CFAH250AHCSSSDSES例:代碼段(CS)、附加段(ES)、堆棧段(SS)、數據段(DS)的段地址分別為1000H、250AH、7FFAH和8CFAH,它們在存儲器中的分布。3.38086/8088的存儲器2023/2/162

3.3.2存儲器的分段段基址:每個段的20位起始地址。段基址是一個能被16整除的數(即后4位為0)。段地址是20位段基址的高16位。要尋址20位地址,還需要段內的相對地址(偏移地址),由段地址和偏移地址通過計算得出實際地址(物理地址)。3.38086/8088的存儲器2023/2/163

3.3.3實際地址和邏輯地址邏輯地址:指在程序和指令表示中的一種地址,包括段地址和偏移地址。實際地址:指CPU對存儲器進行訪問時實際尋址所使用的地址,又稱為物理地址。段地址×16偏移地址物理地址+=3.38086/8088的存儲器2023/2/1

3.3.3實際地址和邏輯地址實際地址表示方法:

段基值:偏移量例如,3267H:00A0H邏輯地址 1460:100、1380:F00物理地址 14700H14700H3.38086/8088的存儲器2023/2/165

3.3.3實際地址和邏輯地址20002000000002000H:0000H2000H:0001H2000H:0002H2000H:0003H2000H:FFFFH1FF0H0100H1FF0200000100

物理地址是唯一的,邏輯地址不是唯一的3.38086/8088的存儲器2023/2/166

3.3.3實際地址和邏輯地址段寄存器和其他寄存器組合指向存儲單元示意圖當取指令時,CPU選擇代碼段寄存器CS,再和指令指針I(yè)P的內容一起形成指令所在單元的20位物理地址;當進行堆棧操作時,CPU選擇堆棧段寄存器SS,再和堆棧指針SP或基址指針BP形成20位堆棧地址。3.38086/8088的存儲器2023/2/167

3.3.4堆棧

堆棧是用段定義語句在存儲器定義的一個堆棧段,與其他邏輯段一樣,可以在1MB的存儲空間浮動。堆棧數目不限,最大為64KB。段地址由SS指定,棧頂由堆棧指針SP指定。

堆棧存取數據的原則是“先進后出”,存取數據的方法是壓入(PUSH)和彈出(POP)。指針SP的變化由CPU自動管理。

每執(zhí)行一條PUSH指令,SP=(SP)-2,SP指向新棧頂,然后將低位數據壓入(SP)單元,高位數據壓入(SP+1)單元。每執(zhí)行一條POP指令,CPU先將當前的棧頂SP(低位數據)和SP+1(高位數據)中的內容彈出,然后再自動修改指針,SP=(SP)+2。SP指向新棧頂。3.38086/8088的存儲器2023/2/168

3.3.4堆棧

例題若已知當前SS=1050H,SP=0008H,AX=1234H,則8086系統(tǒng)中堆棧的入棧和出棧操作如下圖所示。12AA…10500H10501H10502H10503H10504H10505H10506H10507H10508H棧底BB10509H段地址(SS)AX3412123434PUSHAX1050AHBBAAAABB1234BX34POPBXPOPAX12棧頂SP3.48086/8088的指令系統(tǒng)

3.4.1指令系統(tǒng)的特點及指令基本格式簡介

8086與8088指令系統(tǒng)由8位8080/8085指令系統(tǒng)擴展而來,同時又能在其后續(xù)的80X86系列的CPU上正確運行,所以具有向上兼容的特性。主要特征如下:

①可變長指令,指令格式由1~6個字節(jié)組成,比較復雜;②尋址方式多樣靈活,處理數據的能力較強(可處理字節(jié)、字、帶符號/無符號二進制數據及壓縮型/非壓縮型十進制數據;③有重復指令和乘除運算指令。擴充了條件轉移、移位/循環(huán)指令;④有軟件中斷功能和支持多處理器系統(tǒng)工作的指令。2023/2/1693.48086/8088的指令系統(tǒng)2023/2/170

3.4.1指令系統(tǒng)的特點及指令基本格式簡介指令組成操作碼操作數或操作數地址操作碼:計算機所要執(zhí)行的操作類型,由一組二進制代碼表示。在匯編語言中用助記符表示。操作數:各種操作的對象,可以是具體的數值、寄存器或存儲器地址,可有0/1/2個。MOVAX,1000H立即數3.48086/8088的指令系統(tǒng)2023/2/171

3.4.1指令系統(tǒng)的特點及指令基本格式簡介指令組成操作碼操作數或操作數地址無操作數:控制類指令單操作數:只給出一個操作數地址,該操作數可在寄存器或存儲器中,也可直接指令中給出立即數。雙操作數:源操作數、目的操作數。一個操作數在寄存器中,另一個在寄存器或存儲器中,或指令中直接給出立即數。不允許兩個都在存儲器中。單操作數指令INC CXDEC AX無操作數指令STCCLI雙操作數指令ADD CX,1SUB AX,13.48086/8088的指令系統(tǒng)2023/2/172

3.4.1指令系統(tǒng)的特點及指令基本格式簡介指令格式:

3.48086/8088的指令系統(tǒng)2023/2/173

3.4.1指令系統(tǒng)的特點及指令基本格式簡介MOD≠11:存儲器方式,有一個操作數位于存儲器中MOD=00,沒有位移量MOD=01,只有低八位位移量MOD=10,有16位位移量MOD=11:寄存器方式,兩個操作數均在寄存器中。3.48086/8088的指令系統(tǒng)2023/2/174

3.4.1指令系統(tǒng)的特點及指令基本格式簡介REG用來確定某一個操作數所在寄存器的編碼;R/M受MOD制約MOD=11某操作數所在寄存器編碼;MOD≠11某操作數所在存儲單元有效地址EA,共24種計算方法。3.48086/8088的指令系統(tǒng)2023/2/175

3.4.2尋址方式1、固定尋址2、立即數尋址3、寄存器尋址4、存儲器尋址直接尋址間接尋址基址尋址變址尋址基址加變址尋址5、其它方式尋址串操作指令尋址I/O端口尋址轉移類指令尋址3.48086/8088的指令系統(tǒng)2023/2/176

3.4.2尋址方式操作數的位置操作數名稱尋址方式名稱在指令中立即數立即尋址(immediateaddressing)在寄存器中寄存器操作數寄存器尋址(registeraddressing)在存儲器中存儲器操作數存儲器尋址(memoryaddressing)在I/O端口中I/O操作數I/O端口尋址(I/Oportaddressing)3.48086/8088的指令系統(tǒng)2023/2/177

3.4.2尋址方式1、固定尋址例:加法的ASCII調整指令AAA,規(guī)定被調整的數總是位于AL中。(隱含使用某些寄存器)2、立即數尋址操作數就在指令中,當執(zhí)行指令時,CPU直接從指令隊列中取得該立即數,而不必另外執(zhí)行總線周期去內存取數。立即數可以是8位,也可以是16位,規(guī)定只能是整數類型的源操作數。主要用來給寄存器賦初值,指令執(zhí)行速度快。例:MOVAX,1680H;將1680H送入AX,AH中16H,AL中80H3.48086/8088的指令系統(tǒng)2023/2/178

3.4.2尋址方式3、寄存器尋址操作數放在CPU的寄存器中,指令中給出寄存器名,源操作數和目的操作數均可采用寄存器尋址方式。寄存器尋址需要使用總線周期嗎?對16位操作數,寄存器可以是8個16位通用寄存器(AX、BX、CX、DX、SP、BP、SI和DI);對于8位操作數寄存器只能是AH、AL、BH、BL、CH、CL、DH和DL)3.48086/8088的指令系統(tǒng)2023/2/179

3.4.2尋址方式3、寄存器尋址例:MOVAX,SS;將SS的內容送入AX①操作數存放在CPU內部的某個寄存器中,指令中不出現操作數本身,而是給出存放操作數的寄存器的名字。②寄存器尋址既可用于源操作數,也可用于目的操作數。MOV

CL,BL

;將BL中的8位寄存器操作數送寄存器CL中MOV

AX,DX

;將DX中的16位寄存器操作數送寄存器AX中MOV

DS,AX

;將AX中的16位寄存器操作數送寄存器DS中INC

SI ;將SI寄存器的內容加1

MOVCS,AX

MOVAH,BX××并非所有寄存器都可自由使用。源、目的操作數的字長必須一致。3.48086/8088的指令系統(tǒng)2023/2/180

3.4.2尋址方式4、存儲器尋址①源和目的操作數之一為存儲器地址,兩者不能同時使用。②當EU單元需要讀寫位于存儲器中的操作數時,必須經總線控制邏輯電路進行存取。(需執(zhí)行總線周期)③用方括號[]表示對存儲器尋址。例:MOVAX,[1680H];把1680H和1681H兩個單元的內容取入AX直接尋址3.48086/8088的指令系統(tǒng)2023/2/181

3.4.2尋址方式4、存儲器尋址有效地址計算通式(有效地址即操作數地址的偏移量)存放在基址寄存器中的內容,常用來指向數據段中數組或字符串的首地址存放在變址寄存器中的內容,常用來訪問數組中的某個元素或字符串中的某個字符位移量。存放在指令中的一個0位、8位、16位的數,但它不是立即數,而是一個地址。例:MOVAX,[BX];把數據段中以BX為有效地址的存儲單元中的內容送到AX基址尋址3.48086/8088的指令系統(tǒng)2023/2/182

3.4.2尋址方式例:MOVAX,[SI];把數據段中以SI為有效地址的存儲單元中的內容送到AX變址尋址例:MOVAX,[BP+SIH];把數據段中以BP+SIH為有效地址的存儲單元中的內容送到AX基址加變址尋址3.48086/8088的指令系統(tǒng)2023/2/183

3.4.2尋址方式尋址方式有效地址EA默認的段寄存器直接尋址(③)[DISP]DS寄存器間接尋址(①/②)[BX]DS[BP]SS[SI]DS[DI]DS基址尋址(①+③)[BX+DISP]DS[BP+DISP]SS變址尋址(②+③)[SI+DISP]DS[DI+DISP]DS基址加變址尋址(①+②+③)[BX+SI+DISP(或無DISP)]DS[BX+DI+DISP(或無DISP)]DS[BP+SI+DISP(或無DISP)]SS[BP+DI+DISP(或無DISP)]SSDISP:8位或16位相對位移量3.48086/8088的指令系統(tǒng)2023/2/184

3.4.2尋址方式例:設DS=1200H,BX=05A6H,SS=5000H,BP=40A0H,SI=2000H,DI=3000H,位移量DISP=1618H,試判斷下列指令的尋址方式,并求出寄存器與位移量所確定的有效地址EA和實際地址(物理地址)PA。并說明指令執(zhí)行結果。有效地址EA在指令中直接給出,默認段是DS??墒褂枚慰缭角熬Y

MOVAX,ES:[1680H]①MOVAX,[0618H]直接尋址方式EA=0618HPA=12000HH=12618H將數據段的實際地址12618H和12619H兩單元的字內容取出送入AX3.48086/8088的指令系統(tǒng)2023/2/185

3.4.2尋址方式例:設DS=1200H,BX=05A6H,SS=5000H,BP=40A0H,SI=2000H,DI=3000H,位移量DISP=1618H②MOVAX,[BX]基址寄存器間接尋址方式EA=05A6HPA=12000H+05A6H=125A6H將數據段的實際地址125A6H和125A7H兩單元的字內容取出送入AX③MOVAX,[BP]堆棧段基址寄存器間接尋址方式EA=40A0HPA=50000H+40A0H=540A0H將堆棧段的540A0H和540A1H兩單元的字內容取出送入AX3.48086/8088的指令系統(tǒng)2023/2/186

3.4.2尋址方式例:設DS=1200H,BX=05A6H,SS=5000H,BP=40A0H,SI=2000H,DI=3000H,位移量DISP=1618H④MOVAX,[DI]變址寄存器間接尋址方式EA=3000HPA=12000HH=15000H將數據段的15000H和15001H兩單元的字內容取出送入AX⑤MOVAX,[BX+DI]基址加變址寄存器間接尋址方式EA=05A6H=35A6PA=12000H+35A6H=155A6H將堆棧段的155A6H和155A7H兩單元的字內容取出送入AX3.48086/8088的指令系統(tǒng)2023/2/187

3.4.2尋址方式例:設DS=1200H,BX=05A6H,SS=5000H,BP=40A0H,SI=2000H,DI=3000H,位移量DISP=1618H⑥MOVAX,[BP+SI+DISP]基址加變址寄存器間接尋址EA=40A0HHH=76B8HPA=50000H+76B8H=576B8H將堆棧段的576B8H和576B9H兩單元的字內容取出送入AX基址加變址寄存器間接尋址方式3.48086/8088的指令系統(tǒng)2023/2/188

3.4.2尋址方式基址加變址寄存器間接尋址基址加變址寄存器間接尋址方式總結:帶方括號的地址表達式必須遵循下列規(guī)則:

(1)立即數可以出現在方括號內,表示直接地址,如[2000H]。

(2)只有BX、BP、SI、DI這四個寄存器可以出現在[]內,它們可以單獨出現,也可以相加,或與常數相加,但BX和BP寄存器、SI和DI寄存器不允許出現在同一個[]內。(3)不同寄存器對應不同的隱含段基址:

SS:BP

DS:BX,SI,DI可用段超越前綴修改段基址。3.48086/8088的指令系統(tǒng)2023/2/189

3.4.2尋址方式數據串(或稱字符串)指令不能使用正常的存儲器尋址方式來存取數據串指令中使用的操作數。執(zhí)行數據串指令時,源串操作數第1個字節(jié)或字的有效地址應存放在源變址寄存器SI中(不允許修改),目標串操作數第1個字節(jié)或字的有效地址應存放在目標變址寄存器DI中(不允許修改)。在重復串操作時,8086/8088能自動修改SI和DI的內容,以使它們能指向后面的字節(jié)或字。因指令中不必給出SI或DI的編碼,故串操作指令采用的是隱含尋址方式。串操作指令尋址5、其他尋址方式3.48086/8088的指令系統(tǒng)2023/2/190

3.4.2尋址方式

在8086/8088指令系統(tǒng)中,輸入/輸出指令對I/O端口的尋址可采用直接或間接兩種方式。

(1)直接端口尋址:

I/O端口地址以8位立即數方式在指令中直接給出。例如INAL,n。所尋址的端口號只能在0~255范圍內。

(2)間接端口尋址:

這類似于寄存器間接尋址,16位的I/O端口地址在DX寄存器中,即通過DX間接尋址,故可尋址的端口號為0~65535(實際為0~1023)。例如OUTDX,AL。它是將AL的內容輸出到由(DX)指出的端口中去。I/O端口尋址5、其他尋址方式3.48086/8088的指令系統(tǒng)2023/2/191

3.4.2尋址方式

在8086/8088系統(tǒng)中,由于存儲器采用分段結構,所以轉移類指令有段內轉移和段間轉移之分。所有的條件轉移指令只允許實現段內轉移,而且是段內短轉移,即只允許轉移的地址范圍在-128~+127字節(jié)內,由指令中直接給出8位地址位移量。轉移類指令尋址5、其他尋址方式3.48086/8088的指令系統(tǒng)2023/2/192

3.4.3指令的分類

在8086/8088指令系統(tǒng)中,包含133條基本指令。按功能指令可以分為6類:1、數據傳送2、算數運算3、邏輯運算4、串操作5、程序控制6、處理器控制3.48086/8088的指令系統(tǒng)2023/2/193

3.4.3指令的分類

1、數據傳送指令可完成寄存器與寄存器之間、寄存器與存儲器之間以及寄存器與I/O端口之間的字節(jié)或字傳送。特點:不影響標志寄存器的內容(除SAHF和POPF)。共14小條,分為4小類通用數據傳送目標地址傳送標志位傳送I/O數據傳送3.48086/8088的的指令系統(tǒng)2023/2/194

3.4.3指令的分類

1、數據傳送指令通用數據傳送指令目標地址傳送指令MOV字節(jié)或字的傳送LEA裝入有效地址PUSH入棧指令LDS裝入數據段寄存器POP出棧指令LES裝入附加段寄存器XCHG交換字或字節(jié)標志傳送指令XLAT表轉換LAHF標志寄存器低字節(jié)裝入AH輸入輸出指令SAHFAH內容裝入標志寄存器低字節(jié)IN輸入PUSHF標志寄存器入棧指令OUT輸出POPF出棧,并送入標志寄存器3.48086/8088的指令系統(tǒng)2023/2/195

3.4.3指令的分類

1、數據傳送指令通用數據傳送指令⑴MOVd,s;將由源操作數s指定的內容送到目標操作數d中。源操作數:可以是8/16位寄存器、存儲器中的某個字節(jié)/字或者是8/16位立即數。目的操作數:可以是8/16位寄存器、存儲器中的某個字節(jié)/字,不能是立即數。立即數段寄存器CSDSESSS通用寄存器AXBXCXDXBPSPS

溫馨提示

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

評論

0/150

提交評論