第三章微機(jī)中微處理器_第1頁
第三章微機(jī)中微處理器_第2頁
第三章微機(jī)中微處理器_第3頁
第三章微機(jī)中微處理器_第4頁
第三章微機(jī)中微處理器_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第三章微機(jī)中的微處理器3.1微處理器的一般結(jié)構(gòu)3.28086微處理器的功能結(jié)構(gòu)3.38086的寄存器結(jié)構(gòu)3.48086的存儲器組織3.58086的I/O組織3.68086的尋址方式微處理器的功能:組成計算機(jī)系統(tǒng)的核心部件,具有運算和控制的功能。①運算②接收和發(fā)送數(shù)據(jù)③指令的寄存、譯碼和執(zhí)行④數(shù)據(jù)暫存⑤提供定時和控制信號⑥響應(yīng)中斷3.1.1微處理器的內(nèi)部結(jié)構(gòu)3.1微處理器的一般結(jié)構(gòu)微處理器的特點:從程序設(shè)計的角度考慮,CPU必須便于處理:①賦值和算術(shù)表達(dá)式②關(guān)系和邏輯表達(dá)式③數(shù)組和其它數(shù)據(jù)結(jié)構(gòu)④條件轉(zhuǎn)移和無條件轉(zhuǎn)移⑤循環(huán)⑥子程序⑦輸入/輸出3.1.1微處理器的內(nèi)部結(jié)構(gòu)程序計數(shù)器(PC)指令寄存器(IR)指令譯碼器(ID)控制邏輯部件堆棧指示器(SP)處理機(jī)狀態(tài)字(PSW)控制器I/O控制邏輯工作寄存器地址寄存器數(shù)據(jù)寄存器......ALU3.1.1微處理器的內(nèi)部結(jié)構(gòu)指令的執(zhí)行過程3.1.1微處理器的內(nèi)部結(jié)構(gòu)

外部結(jié)構(gòu)——輸入/輸出引腳——微處理器級總線

微處理器通過微處理器級總線與外部部件和設(shè)備相聯(lián)系。1.總線的功能⑴和存儲器之間交換信息⑵和I/O設(shè)備之間交換信息⑶為了系統(tǒng)工作而接收和輸出必要的信號,如輸入時鐘脈沖、復(fù)位信號、電源和接地等2.總線的分類⑴數(shù)據(jù)總線(DataBus)⑵地址總線(AddressBus)⑶控制總線(ControlBus)一.總線功能與分類3.1.2微處理器的外部結(jié)構(gòu)

存儲器通常由幾個模塊組成,每個模塊有幾千個單元,每個存儲單元有唯一的存儲器地址與其對應(yīng)。二.存儲器和I/O地址空間

I/O接口——保證數(shù)據(jù)、控制與狀態(tài)信息在CPU和I/O設(shè)備之間正常傳送的電路。I/O和CPU之間的通信利用稱為I/O端口的寄存器來完成。對應(yīng)一個I/O設(shè)備的I/O接口,可能包括幾個I/O端口,每個I/O端口都有一個唯一的I/O地址與其對應(yīng)。3.1.2微處理器的外部結(jié)構(gòu)

存儲單元和I/O端口以字節(jié)為單位存放數(shù)據(jù),每個字節(jié)對應(yīng)一個標(biāo)識地址。地址總線的條數(shù)即為二進(jìn)制地址碼的位數(shù),它可能表示的不同地址的集合稱為地址空間。

地址碼的位數(shù)決定了地址空間的大?。?n二.存儲器和I/O地址空間單地址空間:對存儲器和I/O端口統(tǒng)一進(jìn)行編址。雙地址空間:對存儲器和I/O端口獨立進(jìn)行編址。存儲器:高位——選擇模塊,低位——選擇模塊內(nèi)的存儲單元。I/O設(shè)備:高位——選擇I/O接口,低位——選擇I/O端口。3.1.2微處理器的外部結(jié)構(gòu)123456內(nèi)部寄存器

IP

ES

SSDSCS總線控制電路EU控制器∑ALU標(biāo)志寄存器AHALBHBLCHCLDHDLSPBPSIDI通用寄存器地址加法器指令隊列執(zhí)行單元(EU)總線接口單元(BIU)16位20位16位8位ALU數(shù)據(jù)總線數(shù)據(jù)總線8086總線3.28086微處理器的功能結(jié)構(gòu)流水線技術(shù)原則:(3)EU取得指令,譯碼并執(zhí)行指令。若指令需要取操作數(shù)或存操作結(jié)果,需要訪問存儲器或I/O,EU向BIU發(fā)出訪問總線請求。當(dāng)BIU接到EU的總線請求,若正忙,則須等BIU執(zhí)行完當(dāng)前的總線周期,才能響應(yīng)EU的請求;若BIU空閑,則立即執(zhí)行EU申請總線的請求。(1)BIU的指令隊列有兩個或兩個以上字節(jié)為空時,BIU自動啟動總線周期,取指填充指令隊列。直至隊列滿,進(jìn)入空閑狀態(tài)。(2)EU每執(zhí)行完一條指令,從指令隊列的隊首取指。特殊情況:系統(tǒng)初始化后,指令隊列為空,EU等待BIU從內(nèi)存取指,填充指令隊列。(4)EU執(zhí)行轉(zhuǎn)移、調(diào)用和返回指令時,若下一條指令不在指令隊列中,則隊列被自動清除,BIU根據(jù)本條指令執(zhí)行情況重新取指填充指令隊列。指令流水線:CPU取指1執(zhí)行1存結(jié)果1取指2執(zhí)行2取指3取操作數(shù)3執(zhí)行3BUS忙閑忙忙閑忙忙閑EU執(zhí)行1執(zhí)行2執(zhí)行3執(zhí)行4BIU取指1取指2存結(jié)果1取指3取操作數(shù)3取指4存結(jié)果3取指5BUS忙忙忙忙忙忙忙忙指令的執(zhí)行過程:取指令——取操作數(shù)(如果需要)——執(zhí)行指令——寫入存儲器。8086首次引入了流水線技術(shù),執(zhí)行指令和總線訪問可以同時進(jìn)行,提高了總線利用率。8086/8088以前的CPU3.38086的寄存器結(jié)構(gòu)

AXAHALBXBHBL數(shù)據(jù)寄存器

CXCHCL (8/16位)DXDHDL

通用寄存器

SP堆棧指針

BP基址指針指針/變址寄存器

SI源變址 (16位)

DI目的變址

CS代碼段

DS數(shù)據(jù)段段寄存器

SS堆棧段 (16位)

ES附加段

專用寄存器

IP指令指針

控制寄存器

FLAG標(biāo)志寄存器 (16位)

3.3.1通用寄存器組數(shù)據(jù)寄存器:16位數(shù)據(jù)寄存器

AX——累加器,使用頻度最高,用于算術(shù)、邏輯運算以及與外設(shè)傳送信息等;BX——基址寄存器,常用做存放存儲器基地址;CX——計數(shù)器,循環(huán)和串操作等指令中的隱含計數(shù)器;DX——數(shù)據(jù)寄存器,常用來存放雙字長數(shù)據(jù)的高16位,或存放外設(shè)端口地址。8位數(shù)據(jù)寄存器:

AHBHCHDHALBLCLDL3.3.1通用寄存器組地址指針和變址寄存器:變址寄存器常用于存儲器尋址時提供地址:SI——源變址寄存器DI——目的變址寄存器串操作類指令中,SI和DI具有特別的功能。指針寄存器用于尋址內(nèi)存堆棧內(nèi)的數(shù)據(jù):SP——堆棧指針,指示棧頂?shù)钠频刂?。SP不能再用于其他目的,具有專用目的。BP——基址指針,表示數(shù)據(jù)在堆棧段中的基地址。SP和BP寄存器與SS段寄存器聯(lián)合使用以確定堆棧段中的存儲單元地址。8086有4個16位段寄存器:CS——代碼段寄存器,指明代碼段的起始地址SS——堆棧段寄存器,指明堆棧段的起始地址DS——數(shù)據(jù)段寄存器,指明數(shù)據(jù)段的起始地址ES——附加段寄存器,指明附加段的起始地址3.3.2段寄存器組3.3.3控制寄存器組指令指針寄存器IP:

指示代碼段中指令的偏移地址,它與代碼段寄存器CS聯(lián)用,確定下一條指令的物理地址。計算機(jī)通過CS:IP寄存器來控制指令序列的執(zhí)行流程。IP寄存器是一個專用寄存器。標(biāo)志寄存器(FLAG):

狀態(tài)標(biāo)志——記錄程序運行結(jié)果的狀態(tài)信息,許多指令的執(zhí)行都將相應(yīng)地設(shè)置它。CFZFSFPFOFAF

控制標(biāo)志——可由程序根據(jù)需要用指令設(shè)置,用于控制處理器執(zhí)行指令的方式。DFIFTF3.3.3控制寄存器組標(biāo)志寄存器(FLAG)D15D0OFDFIFTFSFZFAFPFCF進(jìn)位標(biāo)志奇偶標(biāo)志輔助進(jìn)位標(biāo)志符號標(biāo)志單步中斷中斷允許方向標(biāo)志溢出標(biāo)志1-有進(jìn)、借位0-無進(jìn)、借位1-低8位有偶數(shù)個10-低8位有奇數(shù)個11-低4位向高4位有進(jìn)、借位0-低4位向高4位無進(jìn)、借位1-結(jié)果為00-結(jié)果不為0零標(biāo)志進(jìn)位標(biāo)志CF:當(dāng)運算結(jié)果的最高有效位有進(jìn)位(加法)或借位(減法)時,進(jìn)位標(biāo)志置1,即CF=1;否則CF=0。例如:3AH+7CH=B6H,沒有進(jìn)位:CF=0AAH+7CH=(1)26H,有進(jìn)位:CF=1溢出標(biāo)志OF:若算術(shù)運算的結(jié)果有溢出,則OF=1;否則OF=0例如:3AH+7CH=B6H,產(chǎn)生溢出:OF=1AAH+7CH=(1)26H,沒有溢出:OF=0標(biāo)志寄存器(FLAG)標(biāo)志寄存器(FLAG)問題:什么是溢出?溢出和進(jìn)位有什么區(qū)別?處理器怎么處理,程序員如何運用?如何判斷是否溢出?處理器內(nèi)部以補(bǔ)碼表示有符號數(shù)。8個二進(jìn)制位能夠表達(dá)的整數(shù)范圍是:+127~-12816位表達(dá)的范圍是:+32767~-32768如果運算結(jié)果超出了這個范圍,就是產(chǎn)生了溢出。有溢出,說明有符號數(shù)的運算結(jié)果不正確。什么是溢出?標(biāo)志寄存器(FLAG)例如:3AH+7CH=B6H,即58+124=182,已經(jīng)超出-128~127范圍,產(chǎn)生溢出,所以O(shè)F=1;另一方面,補(bǔ)碼B6H表達(dá)真值是-74,顯然運算結(jié)果也不正確。溢出標(biāo)志OF和進(jìn)位標(biāo)志CF是兩個意義不同的標(biāo)志。進(jìn)位標(biāo)志表示無符號數(shù)運算結(jié)果是否超出范圍,運算結(jié)果仍然正確;溢出標(biāo)志表示有符號數(shù)運算結(jié)果是否超出范圍,運算結(jié)果已經(jīng)不正確。溢出和進(jìn)位標(biāo)志寄存器(FLAG)例1:3AH+7CH=B6H無符號數(shù)運算:58+124=182,范圍內(nèi),無進(jìn)位有符號數(shù)運算:58+124=182,范圍外,有溢出溢出和進(jìn)位對比標(biāo)志寄存器(FLAG)例2:AAH+7CH=(1)26H無符號數(shù)運算:170+124=294,范圍外,有進(jìn)位有符號數(shù)運算:-86+124=38,范圍內(nèi),無溢出

處理器對兩個操作數(shù)進(jìn)行運算時,按照無符號數(shù)求得結(jié)果,并相應(yīng)設(shè)置進(jìn)位標(biāo)志CF;同時,根據(jù)是否超出有符號數(shù)的范圍設(shè)置溢出標(biāo)志OF。如何運用溢出和進(jìn)位標(biāo)志寄存器(FLAG)應(yīng)該利用哪個標(biāo)志,則由程序員來決定。也就是說,如果將參加運算的操作數(shù)認(rèn)為是無符號數(shù),就應(yīng)該關(guān)心進(jìn)位;認(rèn)為是有符號數(shù),則要注意是否溢出。判斷運算結(jié)果是否溢出有一個簡單的規(guī)則:只有當(dāng)兩個相同符號數(shù)相加(異號數(shù)相減可轉(zhuǎn)化為同號數(shù)相加),而運算結(jié)果的符號與原數(shù)據(jù)符號相反時,產(chǎn)生溢出;因為,此時的運算結(jié)果顯然不正確。其他情況下,則不會產(chǎn)生溢出。溢出的判斷標(biāo)志寄存器(FLAG)3.48086的存儲器組織3.4.1存儲器地址空間和數(shù)據(jù)存儲格式8086的存儲器是以字節(jié)(8位)為單位組織的。20條地址總線,可尋址的存儲器地址空間為220B(1MB)。每個存儲單元都有一個編號——存儲器地址每個存儲單元存放一個字節(jié)的內(nèi)容二進(jìn)制位——存儲一位二進(jìn)制數(shù):0或1。字節(jié)——8個二進(jìn)制位,D7~D0。字——16位,2個字節(jié),D15~D0。雙字——32位,4個字節(jié),D31~D0。信息的表達(dá)單位:3.48086的存儲器組織3.4.1存儲器地址空間和數(shù)據(jù)存儲格式兩個連續(xù)的字節(jié),為一個字:低對低,高對高(小端方式)。字的地址指低字節(jié)的地址。字的地址為偶地址,稱字的存儲是對準(zhǔn)的,訪問時只需一個總線周期。字的地址為奇地址,稱字的存儲是未對準(zhǔn)的,訪問時要兩個總線周期。[0002H]=1234H[0004H]=7856H12H34H78H56H0000H0002H0004HD7D03.48086的存儲器組織3.4.2存儲器分段管理和物理地址的形成8086CPU有20條地址線,最大可尋址空間為220=1MB,物理地址范圍從00000H~FFFFFH。

8086CPU將1MB空間分成許多邏輯段(Segment),每個段最大限制為64KB,段地址的低4位為0000B。這樣,一個存儲單元除具有一個唯一的物理地址外,還具有多個邏輯地址。3.48086的存儲器組織3.4.2存儲器分段管理和物理地址的形成對應(yīng)每個物理存儲單元都有一個唯一的20位編號,即物理地址。00000H~FFFFFH分段后在用戶編程時,采用邏輯地址,形式為:段基地址:段內(nèi)偏移地址

段地址左移4位+偏移地址=20位物理地址例如:邏輯地址“1460H:100H”=物理地址14700H顯然,一個物理地址可以有多個邏輯地址。3.48086的存儲器組織3.4.2存儲器分段管理和物理地址的形成偏移地址:說明主存單元距離段起始位置的偏移量。

每段不超過64KB,偏移地址也可用16位數(shù)據(jù)表示。段地址:說明邏輯段在主存中的起始位置。

8086規(guī)定段地址必須是模16地址:xxxx0H省略低4位0000B,段地址就可以用16位數(shù)據(jù)表示,就能用16位段寄存器表達(dá)段地址。3.48086的存儲器組織3.4.2存儲器分段管理和物理地址的形成8086對邏輯段的要求是:

段地址低4位均為0,每段最大不超過64KB。每個段不要求必須是64KB,段與段可以重疊。1MB空間最多能分成多少個段?

每隔64K個存儲單元開始一個段,所以1MB最少有:

220÷216=16個段每隔16個存儲單元就可以開始一個段,所以1MB最多有:

220÷16=216=64K個段1MB空間最少能分成多少個段?各個邏輯段獨立示意圖各個邏輯段重疊示意圖3.48086的存儲器組織3.4.3信息的分段存儲與段寄存器的關(guān)系代碼段用來存放程序的指令序列:代碼段寄存器CS存放代碼段的段地址,指令指針寄存器IP指示下條指令的偏移地址;處理器利用CS:IP取得下一條要執(zhí)行的指令。堆棧段確定堆棧所在的主存區(qū)域:堆棧段寄存器SS存放堆棧段的段地址,堆棧指針寄存器SP指示堆棧棧頂?shù)钠频刂?;處理器利用SS:SP操作堆棧頂?shù)臄?shù)據(jù)。3.48086的存儲器組織3.4.3信息的分段存儲與段寄存器的關(guān)系數(shù)據(jù)段存放當(dāng)前運行程序所用的數(shù)據(jù):數(shù)據(jù)段寄存器DS存放數(shù)據(jù)段的段地址,存儲器尋址方式得到存儲器中操作數(shù)的偏移地址。處理器利用DS:EA存取數(shù)據(jù)段中的數(shù)據(jù)。附加段是附加的數(shù)據(jù)段,也用于數(shù)據(jù)的保存:附加段寄存器ES存放附加段的段地址,存儲器尋址方式得到存儲器中操作數(shù)的偏移地址。處理器利用ES:EA存取附加段中的數(shù)據(jù)。串操作指令將附加段作為其目的操作數(shù)的存放區(qū)域。程序員如何分配各個邏輯段?3.48086的存儲器組織3.4.3信息的分段存儲與段寄存器的關(guān)系程序的指令序列必須安排在代碼段;程序使用的堆棧一定在堆棧段;程序中的數(shù)據(jù)默認(rèn)是安排在數(shù)據(jù)段,也經(jīng)常安排在附加段,尤其是串操作的目的區(qū)必須是附加段。數(shù)據(jù)的存放比較靈活,實際上可以存放在任何一種邏輯段中。3.58086的I/O組織

I/O接口與CPU之間的通信是利用稱為I/O端口的寄存器來完成的。微型機(jī)系統(tǒng)要為I/O芯片的每個端口分配一個地址,各個端口有唯一的I/O地址與之對應(yīng),是單獨編址的。

8086CPU地址總線的低16位用來對8位I/O端口尋址,I/O地址空間為65536,即可訪問65536個8位的I/O端口,尋址范圍是64KB。任何兩個編號相鄰的8位端口可以組成一個16位端口。3.68086的尋址方式指令由操作碼和操作數(shù)兩部分組成:操作碼:說明計算機(jī)要執(zhí)行哪種操作,如傳送、運算、移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部分。操作碼操作數(shù)操作數(shù):指令執(zhí)行的參與者,即各種操作的對象。有些指令不需要操作數(shù),通常的指令都有一個或兩個操作數(shù),也有個別指令有3個甚至4個操作數(shù)。3.68086的尋址方式指令中的操作數(shù),可以是一個具體的數(shù)值,可以是存放數(shù)據(jù)的寄存器,或指明數(shù)據(jù)在主存位置的存儲器地址。

指令系統(tǒng)設(shè)計了多種操作數(shù)的來源,尋找操作數(shù)的過程就是操作數(shù)的尋址方式。8086的尋址方式有:

立即數(shù)尋址方式寄存器尋址方式存儲器尋址方式3.68086的尋址方式MOVdest,src ;dest←src;MOV指令的功能是將源操作數(shù)src;傳送至目的操作數(shù)destMOVAL,05H ;AL←05HMOVBX,AX;BX←AXMOVAX,[SI] ;AX←DS:[SI]MOVAX,[BP+06H] ;AX←SS:[BP+06H]MOVAX,[BX+SI] ;AX←DS:[BX+SI]指令的助記符格式:

操作碼操作數(shù)1,操作數(shù)2 ;注釋立即數(shù)尋址

指令中的操作數(shù)直接存放在機(jī)器代碼中,緊跟在操作碼之后(操作數(shù)作為指令的一部分存放在操作碼之后的主存單元中)??梢允?位數(shù)i8(00H~FFH),可以是16位數(shù)i16(0000H~FFFFH)。立即數(shù)尋址方式常用來給寄存器賦值。MOVAL,05H ;AL←05HMOVAX,0102H ;AX←0102HA1H00H05HA1H00H02H01H……小地址端大地址端寄存器尋址MOV

AX,1234H;AX←1234HMOV

BX,AX

;BX←AX操作數(shù)存放在CPU的內(nèi)部寄存器REG中8位寄存器R8:AH/AL/BH/BL/CH/CL/DH/DL16位寄存器R16:AX/BX/CX/DX/SI/DI/BP/SP4個段寄存器SEG:CS/DS/SS/ES存儲器尋址

指令中給出操作數(shù)的主存地址信息(偏移地址,稱之為有效地址EA),而段地址在默認(rèn)的或用段超越前綴指定的段寄存器中。8086設(shè)計了多種存儲器尋址方式:

直接尋址方式寄存器間接尋址方式寄存器相對尋址方式基址變址尋址方式相對基址變址尋址方式存儲器尋址直接尋址方式有效地址在指令中直接給出,默認(rèn)的段地址在DS段寄存器,可使用段超越前綴改變。MOVAX,[2000H] ;AX←DS:[2000H];指令代碼:A10020MOVAX,ES:[2000H];AX←ES:[2000H];指令代碼:26A10020存儲器尋址寄存器間接尋址方式有效地址存放在基址寄存器BX,或變址寄存器SI、DI,或基址指針BP中。段地址對應(yīng)BX/SI/DI寄存器默認(rèn)是DS,對應(yīng)BP寄存器默認(rèn)是SS;可用段超越前綴改變。MOVAX,[BX]

;AX←DS:[BX]MOVAX,ES:[DI];AX←ES:[SI]存儲器尋址寄存器相對尋址方式

有效地址是寄存器內(nèi)容與有符號8位或16位位移量之和,寄存器可以是BX、BP或SI、DI。

有效地址=BX/BP/SI/DI+8/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

提交評論