微型計算機的結(jié)構(gòu)(CPU和內(nèi)存).ppt
第三章微型計算機的結(jié)構(gòu),本章要點8086/8088CPU內(nèi)部結(jié)構(gòu)8086/8088寄存器和標志堆棧與存儲器結(jié)構(gòu)尋址方式和指令系統(tǒng),8086是16位字長的微處理器,8088的內(nèi)部結(jié)構(gòu)為16位,外部數(shù)據(jù)總線8位,是準16位字長的微處理器,二者指令系統(tǒng)相同,均具有20位地址線,尋址能力達到1MB空間。,3.18086/8088的功能結(jié)構(gòu),next,BIU和EU相互獨立,可并行操作,構(gòu)成指令流水線結(jié)構(gòu)。,返回,3.28086/8088的寄存器結(jié)構(gòu),14個16位寄存器,分為4類。,(1)數(shù)據(jù)寄存器:4個AX、BX、CX、DX計算過程中的常用寄存器Go,(3)段寄存器:4個CS、DS、SS、ES存放段起始地址Go,(2)指針與變址寄存器:4個SP、BP、SI、DI提供操作數(shù)的偏移地址Go,(4)控制寄存器:2個IP、F提供指令的偏移地址;保存條件碼標志和控制標志Go,next,AX(累加器Accumulator):主要的算術(shù)運算寄存器,專用于:乘、除法運算、十進制調(diào)整及I/O操作等操作。,返回,BX(基址寄存器Base):常用于存放存儲區(qū)的起始地址。,CX(計數(shù)寄存器Count):常用作循環(huán)操作和字串處理的計數(shù)控制。,DX(數(shù)據(jù)寄存器Data):常與AX聯(lián)用,做雙字乘、除法時,DX存放高位字,AX存放低位字。此外在I/O操作時提供外部設(shè)備接口的端口地址。,CS(代碼段地址寄存器CodeSegment):存放代碼段的起始地址。代碼段存放當前正在運行的程序,返回,DS(數(shù)據(jù)段地址寄存器DataSegment):存放數(shù)據(jù)段的起始地址。數(shù)據(jù)段存放當前正運行的程序所用的數(shù)據(jù)。,SS(堆棧段地址寄存器StackSegment):存放堆棧段的起始地址。堆棧段是定義堆棧的存儲區(qū)。,ES(附加段地址寄存器ExtraSegment):存放附加段的起始地址。附加段是附加的數(shù)據(jù)段,作為輔助數(shù)據(jù)區(qū)存放當前正運行程序所用的數(shù)據(jù)。,SP(棧頂指針寄存器StackPointer):提供堆棧棧頂單元的偏移地址。與SS段寄存器聯(lián)用,控制數(shù)據(jù)進棧和出棧。,BP(基址指針寄存器BasePointer):常用于提供堆棧內(nèi)某個單元的偏移地址。與SS段寄存器聯(lián)用,訪問堆棧中的任一個存儲單元。,SI(源變址寄存器SourceIndex):與DS段寄存器聯(lián)用,可以訪問數(shù)據(jù)段中的任一個存儲單元。,DI(目的變址寄存器DestinationIndex):與ES段寄存器聯(lián)用,可訪問附加段中的任一個存儲單元。,SI、DI也常用于在字串操作中提供偏移地址,并具有地址自動增量或減量的功能。,返回,IP(指令指針寄存器InstructionPointer):存放代碼段中指令的偏移地址。在程序執(zhí)行過程中,始終自動給出下一條要取的指令的偏移地址。IP與CS段寄存器聯(lián)用,可以確定下一條要取的指令的物理地址,因此IP是很重要的控制寄存器,用于控制程序的執(zhí)行流程。,F(標志寄存器Flags):用于存放反映處理器和運行程序執(zhí)行結(jié)果狀態(tài)的控制標志和條件碼標志。F中共有9個標志位:6個條件碼標志位,3個控制標志位。,OF溢出標志:計算結(jié)果溢出時,OF=1,否則OF=0。,SF符號標志:計算結(jié)果小于0時,SF=1,否則SF=0。,ZF零標志:計算結(jié)果等于0時,ZF=1,否則ZF=0。,CF進位/借位標志:最高有效位有進位或借位時,CF=1,否則CF=0。,AF輔助進位/借位標志,半字節(jié)進位/借位標志,PF奇偶標志,DF方向標志,控制串操作中的地址增減。DF=0,地址增;DF=1,地址減。,IF中斷標志,IF=1,開中斷;IF=0,關(guān)中斷。,TF陷阱標志,TF=1,CPU單步方式下執(zhí)行程序,TF=0,CPU正常工作。,3個控制標志位:,6個條件碼標志位:,00000011,PF=1,00001011,PF=0,返回,3.3堆棧與存儲器結(jié)構(gòu),(1)堆棧,堆棧的固定端稱為棧底,在存儲器的高地址端,活動端稱為棧頂,數(shù)據(jù)的存取以先進后出原則在棧頂進行。SP棧頂指針寄存器始終保存棧頂?shù)刂?,指向棧頂?隨著進棧數(shù)據(jù)的增多,堆棧從高地址向低地址方向擴展。,低地址,高地址,新棧頂,(2)存儲器結(jié)構(gòu),在存儲器中,最小的存儲單位是字節(jié),每個字節(jié)單元用一個無符號二進制數(shù)編地址,從0開始編址。書寫存儲單元地址時用十六進制形式。,BH,BL,棧頂,64K存儲器單元的編址方法如圖所示。,低字節(jié),高字節(jié),字單元,字節(jié)單元,低地址字節(jié)單元,高地址字節(jié)單元,低字節(jié)存低地址單元,高字節(jié)存高地址單元。,例:將3456H存入地址為0005H的字單元中。,56,34,一個存儲器單元的物理地址由段地址和偏移地址形成。,問題:為什么要分段地址和偏移地址呢?,16位寄存器不能提供20位的物理地址,解決問題的辦法:存儲器分段管理,將存儲器分段,每段最大不超過64KB,段內(nèi)單元地址可用16位表示,稱為偏移地址。每段的起始地址稱為段地址(也稱為段基址)。,段地址如何表示?,規(guī)定段地址必須能夠被16整除,按20位地址對1M存儲器編址如下:,00000H00001H00002H0000EH0000FH00010H00011H00012H0001EH0001FH00020H00021H00002H0002EH0002FHFFFF0HFFFF1HFFFF2HFFFFEHFFFFFH,20位物理地址的形成方法:,20位物理地址=16位段地址左移4位(段地址16)+16位偏移地址,+,例:,已知一個存儲單元的段地址為3200H,偏移地址為1210H,其物理地址是多少?,0011001000000000|0000,00110011001000010000,32000H,+1210H,33210H,0000,段內(nèi)偏移量,偏移地址,=,段起始地址,30000H,段內(nèi)偏移量,偏移地址,=,段起始地址,40000H,存儲器分段管理的地址概念圖示:,30000H+0FFFH=,30FFFH物理地址,0FFFH,可以對代碼段、數(shù)據(jù)段、附加段和堆棧段各段按需要靈活地進行存儲區(qū)分配。(圖),存儲器分段法的優(yōu)點:,(2)將代碼、數(shù)據(jù)存放在不同的內(nèi)存區(qū),便于程序重定位。,(1)使16位寄存器最終可以提供20位物理地址;,訪問存儲器單元時,寄存器的聯(lián)用方式:(圖),next,200FH,返回,返回,寄存器與存儲器的比較:寄存器存儲器,在CPU內(nèi)部在CPU外部訪問速度快訪問速度慢容量小,成本高容量大,成本低用名字表示用地址表示沒有地址地址可用各種方式形成,本章要求:(1)了解CPU的功能結(jié)構(gòu),重點掌握寄存器的結(jié)構(gòu)和各寄存器的一般用途和專門用途,寄存器的默認聯(lián)用方式;(2)熟悉存儲器的結(jié)構(gòu),理解編址方法和存儲數(shù)據(jù)的方法,重點掌握段的劃分和存儲器單元物理地址的形成方法;(3)熟悉堆棧的結(jié)構(gòu),理解堆棧先進后出的存取方法,堆棧指針SP的作用。,小結(jié),