微處理器體系與結(jié)構(gòu)_第1頁
微處理器體系與結(jié)構(gòu)_第2頁
微處理器體系與結(jié)構(gòu)_第3頁
微處理器體系與結(jié)構(gòu)_第4頁
微處理器體系與結(jié)構(gòu)_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、v8086 初始芯片時鐘頻率為4.77MHz 內(nèi)部數(shù)據(jù)總線和外部數(shù)據(jù)總線都是16位 地址總線為20位,可最大尋址1MB的存儲空間v80386 80 x86家族的第一個32位處理器 內(nèi)部和外部數(shù)據(jù)總線都是32位 地址總線也是32位,可尋址高達4GB內(nèi)存 具有實模式和保護模式外,還增加了一種叫虛擬86的工作方式,可以通過同時模擬多個8086處理器來提供多任務能力 8086/8088微處理器的結(jié)構(gòu)相似微處理器的結(jié)構(gòu)相似,都由都由算術邏算術邏輯運算單元輯運算單元ALUALU、專用和通用寄存器、指令寄存器、專用和通用寄存器、指令寄存器、指令譯碼器、定時器控制電路指令譯碼器、定時器控制電路等等組成。按功能

2、可把組成。按功能可把CPU分成兩大部分成兩大部:執(zhí)行單元(執(zhí)行單元(Execution UnitExecution Unit)和總總線接口單元(線接口單元(BusBus Interface UnitInterface Unit)如圖如圖2-1所示所示,圖中左半部分為執(zhí)行單元圖中左半部分為執(zhí)行單元,簡稱簡稱EU。右半部分為總右半部分為總線接口單元線接口單元,簡稱簡稱BIU。BIU與外部總線相連與外部總線相連,完成完成與外設與外設(或存儲器或存儲器)的數(shù)據(jù)傳送的數(shù)據(jù)傳送,包括取指令操作包括取指令操作、存儲器讀存儲器讀/寫數(shù)據(jù)操作寫數(shù)據(jù)操作、I/O接口的讀接口的讀/寫操作寫操作。EU通通過過BIU得

3、到信息得到信息,其功能就是負責指令的執(zhí)行其功能就是負責指令的執(zhí)行。BIU和和EU兩個單元可以并行工作兩個單元可以并行工作。這樣提高這樣提高CPU的工作速的工作速度度。 執(zhí)行單元執(zhí)行單元EUEU由由8 8個通用寄存器、個通用寄存器、1 1個標志寄存器、算術個標志寄存器、算術邏輯運算單元邏輯運算單元ALUALU及及EUEU控制電路組成控制電路組成;EU從從BIU指令隊列寄指令隊列寄存器中獲得指令和待處理數(shù)據(jù)進行操作存器中獲得指令和待處理數(shù)據(jù)進行操作。將指令代碼譯碼將指令代碼譯碼后后,發(fā)出相應的控制信息發(fā)出相應的控制信息,將數(shù)據(jù)在將數(shù)據(jù)在ALU中進行運算中進行運算,運運算結(jié)果的特征保留在標志寄存的算

4、結(jié)果的特征保留在標志寄存的FLAGSFLAGS中中。 總線接口單元總線接口單元BIUBIU包括包括4 4個段寄存器、個段寄存器、1 1個指令指針寄個指令指針寄存器、存器、1 1個與個與EUEU通讀寄存器通讀寄存器。一個先入先出的一個先入先出的6個字節(jié)個字節(jié)(8088是是4個字個字節(jié))指令隊列指令隊列??偩€控制邏輯電路及總線控制邏輯電路及20位位實際物理地址計算的加法器實際物理地址計算的加法器。1 1執(zhí)行單元執(zhí)行單元EUEU2.2.總線接口單元總線接口單元BIUBIUv功能:負責與 Memory、I/O 端口傳送數(shù)據(jù)。 取指令時,從存儲器指定地址取出指令送入指令隊列排隊。 執(zhí)行指令時,根據(jù)EU命

5、令對指定存儲器單元或I/O端口存取數(shù)據(jù)。 v組成 4 個段地址寄存器(CS、DS、ES、SS) 16位指令指針寄存器IP 20位的地址加法器(16d段地址+偏移地址物理地址) 6字節(jié)(8086)或4字節(jié)(8088)的指令隊列 總線控制電路: 處理器與外界總線聯(lián)系的轉(zhuǎn)接電路。包括三組總線:20 位地址總線, 16 位雙向數(shù)據(jù)總線,一組控制總線。v指令隊列8086 的指令隊列為6個字節(jié),8088 的指令隊列為4個字節(jié)。v不論是8086還是8088都會在執(zhí)行指令的同時從內(nèi)存中取下一條或幾條指令,取來的指令放在指令隊列中,使 BIU 具有預取指令的功能,是一種先進先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)。v指令執(zhí)行

6、順序 順序指令執(zhí)行:指令隊列存放緊接在執(zhí)行指令后面的那一條指令。 執(zhí)行轉(zhuǎn)移指令:BIU 清除指令隊列中的內(nèi)容,從新的地址取入指令,立即送往執(zhí)行單元,然后再從新單元開始重新填滿隊列。v 功能 執(zhí)行指令,進行全部算術邏輯運算、完全偏移地址的計算 向總線接口單元BIU提供指令執(zhí)行結(jié)果的數(shù)據(jù)和偏移地址,并對通用寄存器和標志寄存器進行管理。v 組成: 4個通用寄存器:AX、BX、CX、DX 4個專用寄存器:BP、SP、SI、DI 標志寄存器(PSW): 9個標志位,其中6個條件標志位用于存放結(jié)果狀態(tài), 算術邏輯單元: 16 位加法器,用于對寄存器和指令操作數(shù)進行算術或邏輯運算, EU 控制系統(tǒng): 接受從

7、總線接口單元的指令隊列中取來的指令代碼,對其譯碼和向 EU 內(nèi)各有關部分發(fā)出時序命令信號,協(xié)調(diào)執(zhí)行指令規(guī)定的操作。v 8086/8088取指部分與執(zhí)行部分是分開的。 在一條指令的執(zhí)行過程中可以取出下一條(或多條)指令,指令 在指令隊列中排隊; 在一條指令執(zhí)行完成后,就可以立即執(zhí)行下一條指令,減少CPU為取指令而等待的時間,提高CPU的利用率和整個運行速度。v 8086/8088微處理器: BIU和EU分開,取指和執(zhí)行可以重迭, 大大減少了等待取指所需的時間,提高CPU的利用率。取指取指取指取指取指取指取指取指得到數(shù)據(jù)得到數(shù)據(jù)等待等待執(zhí)行執(zhí)行執(zhí)行執(zhí)行執(zhí)行執(zhí)行執(zhí)行執(zhí)行v對于8080與8085及較早

8、的8位微處理器: 程序執(zhí)行由取指令和執(zhí)行指令的循環(huán)來完成的。 每條指令執(zhí)行完后CPU必須等待到下條指令取出來后才能執(zhí)行。取指取指執(zhí)行執(zhí)行取指取指執(zhí)行執(zhí)行.取指取指執(zhí)行執(zhí)行時間坐標時間坐標 8086內(nèi)部寄存器按其功能可分為內(nèi)部寄存器按其功能可分為:通用寄存器通用寄存器(8個),段寄存器段寄存器(4個),控制寄存器控制寄存器(2個)。8086CPU中有14個16位的寄存器。8個16位通用寄存器;2個16位指針寄存器;2個16位的變址寄存器;4個16位的段寄存器;1個16位指令指針;1個16位標志寄存器。8086/8088 CPU的內(nèi)部寄存器如圖2-2所示。 通用寄存器的包括數(shù)據(jù)寄存器通用寄存器的包

9、括數(shù)據(jù)寄存器、地址指針寄存器和地址指針寄存器和變址寄存器變址寄存器。 數(shù)據(jù)寄存器數(shù)據(jù)寄存器有數(shù)據(jù)寄存器數(shù)據(jù)寄存器有AXAX、BXBX、CXCX、DXDX都是都是16位寄存器位寄存器,這四個這四個16位寄存器可分為高位寄存器可分為高8位和低位和低8位兩部位兩部分使用分使用,也就是說也可作也就是說也可作8位寄存器使用位寄存器使用。高高8位表示成位表示成:AHAH、BHBH、CHCH、DHDH,低低8位表示成位表示成:ALAL、BLBL、CLCL、DLDL。參與參與運算的數(shù)是運算的數(shù)是16位數(shù)時位數(shù)時,可用可用AX、BX、CX、DX中的任意一中的任意一個描述個描述,如果參與運算的數(shù)據(jù)是如果參與運算的

10、數(shù)據(jù)是8位數(shù)時可用位數(shù)時可用AH、AL、BH、BL、CH、CL、DH、DL中的任意一個描述中的任意一個描述。一般情況下一般情況下,這四個數(shù)據(jù)寄存器就是用于存放參與運算的數(shù)據(jù)或運算這四個數(shù)據(jù)寄存器就是用于存放參與運算的數(shù)據(jù)或運算結(jié)果的結(jié)果的。但這四個寄存器又有自己特殊的用法但這四個寄存器又有自己特殊的用法。1.1.通用寄存器通用寄存器 AX(Accumulator)累加器累加器,是指令系統(tǒng)中應用最是指令系統(tǒng)中應用最多的寄存器多的寄存器,輸入輸入/輸出只能用輸出只能用AXAX寄存器傳遞數(shù)據(jù)寄存器傳遞數(shù)據(jù),它它經(jīng)常存放運算的中間結(jié)果經(jīng)常存放運算的中間結(jié)果,并參與下次運算并參與下次運算,所以叫累所以叫

11、累加器加器。 BX(base Register)基址寄存器基址寄存器,它通常用來存它通常用來存放內(nèi)存的基地址放內(nèi)存的基地址,用于寄存器尋扯用于寄存器尋扯。 CX(count Register)計數(shù)寄存器計數(shù)寄存器,在循環(huán)和串操循環(huán)和串操作指令中作指令中,用于計數(shù)重復次數(shù)用于計數(shù)重復次數(shù)。 DX(Data Register)數(shù)據(jù)寄存器數(shù)據(jù)寄存器,通常用來存放通常用來存放運算結(jié)果運算結(jié)果。如乘法運算后如乘法運算后DX與與AX合起來存放合起來存放32位數(shù)的運位數(shù)的運算結(jié)果算結(jié)果,其中其中DX存放高存放高16位位。在輸入在輸入/輸出操作中輸出操作中,可可用用DX作為端口地址的寄存器間接尋址作為端口地址

12、的寄存器間接尋址。 地址指針寄存器地址指針寄存器 地址指針寄存器有地址指針寄存器有SP和和BP兩個兩個。 SP(stack pointer)叫堆棧指示器叫堆棧指示器,用于指示當,用于指示當前堆段中棧頂所在的存儲單元地址前堆段中棧頂所在的存儲單元地址。(堆棧在后面介堆棧在后面介紹紹)。 BP(base pointer)叫基址指示器叫基址指示器,用于指示當前用于指示當前堆棧段中一個數(shù)據(jù)區(qū)基址的偏移地址堆棧段中一個數(shù)據(jù)區(qū)基址的偏移地址,通過它間接尋址通過它間接尋址可對堆棧段中的某個數(shù)據(jù)進行存取可對堆棧段中的某個數(shù)據(jù)進行存取。 SP和和BP只能用于堆棧段只能用于堆棧段,不能指示其它段不能指示其它段。(

13、存儲存儲器是按段管理的器是按段管理的,后續(xù)介紹后續(xù)介紹)。但但SP和和BP應用上是有區(qū)應用上是有區(qū)別的別的,SP可用于可用于PUSH、POP、CALL、RET等指令等指令,而而BP不不能用于這些令能用于這些令(后續(xù)介紹后續(xù)介紹)。 變址寄存器變址寄存器SISI、DIDI SI SI(source Indexsource Index)叫源變址寄存器)叫源變址寄存器,一般用于,一般用于源操作數(shù)當前數(shù)據(jù)段中某個地址的偏移地址。源操作數(shù)當前數(shù)據(jù)段中某個地址的偏移地址。 DIDI(Destination indexDestination index)叫目標變址寄存器)叫目標變址寄存器,一,一般用于目標操

14、作數(shù)當前附加段(本數(shù)據(jù)段)中某個地般用于目標操作數(shù)當前附加段(本數(shù)據(jù)段)中某個地址的偏移地址。址的偏移地址。 在字符串操作中,在字符串操作中,SISI用于存放源串操作數(shù)的偏移用于存放源串操作數(shù)的偏移地址,這個串一定是在數(shù)據(jù)段地址,這個串一定是在數(shù)據(jù)段DSDS。DIDI用于存放目標串用于存放目標串操作數(shù)的偏移地址,這個串一定是在附加段操作數(shù)的偏移地址,這個串一定是在附加段ESES。 在寄存器間尋址時,經(jīng)常用在寄存器間尋址時,經(jīng)常用DIDI、SISI加上一個位移加上一個位移量來改變存儲器的地址,因此叫變址寄存器量來改變存儲器的地址,因此叫變址寄存器。 指針寄存器和變址寄存器與數(shù)據(jù)寄存器樣,可以指針

15、寄存器和變址寄存器與數(shù)據(jù)寄存器樣,可以參與算術和邏輯運算,但指針寄存器和變址寄存器只參與算術和邏輯運算,但指針寄存器和變址寄存器只能用于能用于1616位計算,不能分成位計算,不能分成8 8位。位。 段寄存器包括段寄存器包括CS、SS、DS、ES,用于指示當前段的用于指示當前段的段基址。段基址。 CS(Code Segment)叫代碼段寄存器叫代碼段寄存器,用于指示當用于指示當前的代碼段前的代碼段(程序段)的起始地址段基址程序段)的起始地址段基址。 DS (Date Segment)叫數(shù)據(jù)段寄存器叫數(shù)據(jù)段寄存器,用于指示當用于指示當前的數(shù)據(jù)段的段基址前的數(shù)據(jù)段的段基址。 SS(Stack Seg

16、ment)叫堆棧段寄存器叫堆棧段寄存器,用于指示用于指示當前的堆棧段的段基址當前的堆棧段的段基址。 ES (Extra Segment)叫附加段寄存器叫附加段寄存器,用于指示當用于指示當前的附加段的段基址前的附加段的段基址。 CS段一般用于存放段一般用于存放CPU執(zhí)行的程序代碼執(zhí)行的程序代碼。DS一般用一般用于存放程序中的變量和數(shù)據(jù)于存放程序中的變量和數(shù)據(jù)。SS段一般用于存放壓棧的一般用于存放壓棧的信息信息。ES段一般用于存放參與運算結(jié)果段一般用于存放參與運算結(jié)果。 2.2.段寄存器段寄存器(segment) 控制寄存器有控制寄存器有IPIP和和FLAGSFLAGS。 IP(Instructi

17、on Pointer)叫指令指針寄存器叫指令指針寄存器(程序指示器)。用于存放預取指令的偏移地址。(程序指示器)。用于存放預取指令的偏移地址。CPU從代碼段中偏移地址為從代碼段中偏移地址為IP的內(nèi)存單元中取出指令代碼的的內(nèi)存單元中取出指令代碼的一個字節(jié)后一個字節(jié)后,IP自動加自動加I,指向指令代碼的下一個字節(jié)指向指令代碼的下一個字節(jié)。用戶程序不能直接訪問。用戶程序不能直接訪問IPIP。 FLAGS(Flags)叫標志寄存器,用于存放運算叫標志寄存器,用于存放運算結(jié)果的標志。結(jié)果的標志。FLAGS是是16位寄存器位寄存器,用其中的用其中的9位來描述位來描述9個標志個標志。通常叫標志通常叫標志9個

18、標志可分為狀態(tài)標志位和控制個標志可分為狀態(tài)標志位和控制標志位標志位。如圖如圖2-3所示所示。 OFOF DFDF IFIF TFTF SFSF ZFZF AFAF PFPF CFCF3.3.控制寄存器控制寄存器圖2-3 8086標志寄存器FLAGS狀態(tài)標志位有:狀態(tài)標志位有: CFCF(Corry FlagCorry Flag)進位標志位(借位標志位):)進位標志位(借位標志位):當進行加法當進行加法(或減法)運算時,若最高位發(fā)生進位來借位,則(或減法)運算時,若最高位發(fā)生進位來借位,則CF=1CF=1,否則,否則CF=0CF=0。 PFPF( Parity FlagParity Flag)寄

19、標志位:寄標志位:當邏輯運算結(jié)果中當邏輯運算結(jié)果中“1”1”的個的個數(shù)為偶數(shù)時,數(shù)為偶數(shù)時,PF=1PF=1,為奇數(shù)時,為奇數(shù)時,PF=0PF=0。 AFAF(Auxiliary CarryAuxiliary Carry)半進位標志位:)半進位標志位:在在8 8(1616)位加減法運)位加減法運算中,低算中,低4 4(8 8)位向高位有進位或借位,則)位向高位有進位或借位,則AF=1AF=1,否則,否則AF=0AF=0。 ZFZF(Zero FlagZero Flag)零標志位:零標志位:當運算結(jié)查為當運算結(jié)查為0 0時,時,ZF=1ZF=1,否則,否則ZF=0ZF=0。 SFSF(Sign

20、FlagSign Flag)符號標志位:符號標志位:當運算結(jié)果最高位是當運算結(jié)果最高位是1 1(即函數(shù))(即函數(shù))時,時,SF=1SF=1,否則,否則SF=0SF=0。 OFOF(Over FlagOver Flag)溢出標志位:溢出標志位:當運算結(jié)果超出了帶符號數(shù)的當運算結(jié)果超出了帶符號數(shù)的范圍,即溢出時,范圍,即溢出時,OF=1OF=1,否則,否則OF=0OF=0。8 8位帶符號數(shù)范圍是位帶符號數(shù)范圍是-128+127-128+127。1616位帶符號數(shù)的范圍是位帶符號數(shù)的范圍是-32768+32767-32768+32767。這。這6 6個狀態(tài)標志位狀態(tài)是計個狀態(tài)標志位狀態(tài)是計算機運算后

21、,自動生成的不是人為賦予的,當然也可通過算機運算后,自動生成的不是人為賦予的,當然也可通過POPFPOPF改變改變各狀態(tài)值。(后續(xù)介紹各狀態(tài)值。(后續(xù)介紹) 控制標志位控制標志位 控制標志位被設置后,可完成某些控制操作??刂茦酥疚槐辉O置后,可完成某些控制操作。 TFTF(Trap FlagTrap Flag)跟蹤標志位:)跟蹤標志位:是為調(diào)試程序而設置的。若是為調(diào)試程序而設置的。若TF=1TF=1,則使,則使8086CPU8086CPU處于單步工作方式,在這種工作方式下,處于單步工作方式,在這種工作方式下,CPUCPU每每執(zhí)行完一條指令,就自動產(chǎn)生一個內(nèi)部中斷,處理機轉(zhuǎn)去執(zhí)行一個執(zhí)行完一條指令

22、,就自動產(chǎn)生一個內(nèi)部中斷,處理機轉(zhuǎn)去執(zhí)行一個中斷服務程序。檢查程序中的每條指令執(zhí)行情況,當中斷服務程序。檢查程序中的每條指令執(zhí)行情況,當TF=0TF=0時,時,CPUCPU正正常執(zhí)行程序。常執(zhí)行程序。 IFIF(Interrupt FlagInterrupt Flag)中斷允許標志位(開中斷標志位):)中斷允許標志位(開中斷標志位):若若將將IFIF設置為設置為1 1時(時(IF=1IF=1),),8086CPU8086CPU開中斷,開中斷,CPUCPU允許外部的可屏蔽中允許外部的可屏蔽中斷源的中斷請示,若將斷源的中斷請示,若將IFIF清零(清零(IF=0IF=0),),8086CPU8086

23、CPU關中斷,關中斷,CPUCPU禁止禁止外部可屏蔽中斷的請求。外部可屏蔽中斷的請求。 IFIF只對可屏蔽中斷起作用,對非屏蔽中斷和內(nèi)部中斷都不起作只對可屏蔽中斷起作用,對非屏蔽中斷和內(nèi)部中斷都不起作用。用。 DFDF(Direction FlagDirection Flag)方向標志位:)方向標志位:方向標志位用于控制串操方向標志位用于控制串操作指令中作指令中SISI(或(或DIDI)的修改方向。當)的修改方向。當DFDF設置為設置為1 1(DF=1DF=1)時時,SISI(或(或DIDI)減量,當)減量,當DFDF清零(清零(DF=0DF=0)時,)時,SISI(或(或DIDI)增量,因為

24、)增量,因為SISI(或(或DIDI)描述串操作的偏移地址,當描述串操作的偏移地址,當SISI(DIDI)減量時,串是由高地址向低地)減量時,串是由高地址向低地址方向遵序執(zhí)行。后續(xù)指令中將詳細介紹。址方向遵序執(zhí)行。后續(xù)指令中將詳細介紹。 在調(diào)試程序時,在調(diào)試程序時,DEBUG提供了測試標志位的手段,提供了測試標志位的手段,用符號表示標志位的值,用符號表示標志位的值,每種標志位的符號如下表:每種標志位的符號如下表:標志名標志名標志為1標志為1 標志為0標志為0OF溢出(是/否)OF溢出(是/否)OVOVNVNVDF方向(減量/加量)DF方向(減量/加量)DNDNUPUPIF中斷(允許/關閉)IF

25、中斷(允許/關閉)EIEIDIDISF符號(負/正)SF符號(負/正)NGNGPLPLZF零(是/否)ZF零(是/否)ZRZRNZNZAF輔助進位(是/否)AF輔助進位(是/否)ACACNANAPF奇偶標志( 偶/奇)PF奇偶標志( 偶/奇)PEPEPOPOCF進位標志(是/否)CF進位標志(是/否)CYCYNCNC例例1:執(zhí)行兩個數(shù)的加法,分析對標志位的影響。:執(zhí)行兩個數(shù)的加法,分析對標志位的影響。v 標志標志: 運算結(jié)果最高位為運算結(jié)果最高位為0SF=0; 運算結(jié)果本身運算結(jié)果本身0 ZF=0低低8位中位中1的個數(shù)為奇數(shù)個的個數(shù)為奇數(shù)個 PF=0; 最高位沒有進位最高位沒有進位 CF=0第

26、三位向第四位無進位第三位向第四位無進位 AF=0;次高位向最高位沒有進位次高位向最高位沒有進位 ,最高位向前沒有進位,最高位向前沒有進位 , OF=0。1 10 00 00 01 11 10 01 10 00 00 01 10 01 10 00 00 00 01 11 10 00 01 10 00 00 00 01 11 10 00 01 1+ +0 01 11 11 11 10 01 10 01 10 01 10 01 10 01 10 0例2 若AL = 3BH,AH = 7DH,試指出AL中的內(nèi)容和AH中的內(nèi)容相加、相減后,標志CF、AF、PF、SF、OF和ZF的狀態(tài)。 解:(1)AL

27、+ AH 0 0 1 1 1 0 1 1 AL+ 0 1 1 1 1 1 0 1 AH 1 0 1 1 1 0 0 0由運算結(jié)果可知:CF = 0 (無進位);AF = 1(有輔助進位);PF = 1(有偶數(shù)個1);SF = D7 = 1(運算結(jié)果符號位為1);OF = 1 (同號相加,結(jié)果的符號與兩操作數(shù)符號相反,有溢出);ZF = 0 (運算結(jié)果不為0)。 (2)AL AH 0 0 1 1 1 0 1 1 AL- 0 1 1 1 1 1 0 1 AH 1 0 1 1 1 1 1 0由運算結(jié)果可知:CF = 1(有借位);AF = 1(有輔助借位);PF = 1(有偶數(shù)個1);SF = 1(

28、符號位為1);OF = 0(同號相減,無溢出);ZF = 0(運算結(jié)果不為0)。 8086/8088系統(tǒng)中存儲器的每一個存儲單元(字節(jié))都有一個獨立的地址編碼,地址編碼采用20位二進制表示,地址譯碼器是根據(jù)地址編碼才找到目標存儲單元的。20位二進制地址編碼的范圍的十六進制表示為00000HFFFFFH,最多可表示 (1MB)地址編碼唯一的存儲單元,把20位二進制表示的地址稱為物理地址。 101101101011011038F04H存儲單元內(nèi)容存儲單元內(nèi)容存儲單元地址存儲單元地址202 內(nèi)存單元的地址和內(nèi)容內(nèi)存單元的地址和內(nèi)容存儲單元地址:按照字節(jié)編址存儲單元地址:按照字節(jié)編址.1100 111

29、1B1100 1111B.物理地址物理地址內(nèi)容內(nèi)容00000H00000H00001H00001H00002H00002H00006H00006HFFFFFHFFFFFH存儲單元的內(nèi)容:一個存儲單元有效的信息。機器字長是16位, 大部分數(shù)據(jù)以字節(jié)為單位表示, 一個字存入存儲器占有相繼的二個單元: 低位字節(jié)存入低地址,高位字節(jié)存入高地址。 字單元的地址采用它的低地址來表示。例:字單元 :0004H=1234H, 字節(jié)單元 :0004H=34H 同一個地址既可以看作字節(jié)單元地址, 又可看作字單元地址,需要根據(jù)使用情況確定。字單元地址:可以是偶數(shù)也可以是奇數(shù),34H34H12H12H1EH1EH2F

30、H2FH0000H0000H0001H0001H0002H0002H0003H0003H0004H0004H0005H0005H0006H0006H.1234H1234H1235H1235H1236H1236H.數(shù)據(jù)總線地址總線D7D01 M X 8位存儲體A19A000000HFFFFFHA19A0 8086有有20條條地址線,可以尋址地址線,可以尋址1M內(nèi)存空間。地址從內(nèi)存空間。地址從00000HFFFFFH。但。但8086CPU內(nèi)部的地址寄存器都是內(nèi)部的地址寄存器都是1616位位的,的,最多能尋址最多能尋址64K字節(jié)字節(jié),為了能尋址,為了能尋址1M字節(jié)字節(jié),8086采用分段技采用分段技術

31、。分段技術是把存儲器可分成術。分段技術是把存儲器可分成代碼段代碼段CS、堆棧段、堆棧段SS、數(shù)、數(shù)據(jù)段據(jù)段DS和附加段和附加段ES四種。每段為四種。每段為64KB,段與段可以重疊,段與段可以重疊,可以交叉,也可以沒有聯(lián)系??梢越徊?,也可以沒有聯(lián)系。如圖如圖2-4所示。所示。存儲器分段管存儲器分段管理后,每個單元的地址都可以用兩個形式的地址來表示,理后,每個單元的地址都可以用兩個形式的地址來表示,實際地址(物理地址)和邏輯地址。實際地址(物理地址)和邏輯地址。2-4 存儲器的邏輯分段結(jié)構(gòu) 例:已知當前有效的代碼段例:已知當前有效的代碼段、堆棧段堆棧段、數(shù)據(jù)段和附數(shù)據(jù)段和附加段的段基址分別為加段的

32、段基址分別為1055H、EFF0H、250AH和和8FFBH,它它們在存儲器中的分布情況如圖們在存儲器中的分布情況如圖2-52-5所示所示。 物物理地址理地址: :是由是由20位地址或狀態(tài)來表示的地址。位地址或狀態(tài)來表示的地址。即即20位位二進數(shù)來表示。二進數(shù)來表示。CPU與存儲器交換信息時,使用的是物理地與存儲器交換信息時,使用的是物理地址。址。 邏輯地址:是把邏輯地址:是把2020位地址分成段基址和偏移地址兩部位地址分成段基址和偏移地址兩部分表示,即段:偏移。分表示,即段:偏移。這兩部分都是無符號的這兩部分都是無符號的16位二進制位二進制數(shù)。例如:數(shù)。例如:0001H:2000H。程序是以

33、邏輯地址來編址的。程序是以邏輯地址來編址的。 物理地址的形成是通過物理地址的形成是通過CPU內(nèi)部的內(nèi)部的BIU部件中的地址加部件中的地址加法器運算出來的,如圖法器運算出來的,如圖2-6。從圖中可看出物理地址可由下式計算:從圖中可看出物理地址可由下式計算: 物理地址物理地址= =段基址段基址16+ +偏移地址偏移地址。 例如:例如:CS=2000H IP=2200H,則物理地址為:,則物理地址為:20000H+2200H=22200H。2-6 8086物理地址的形成已知CS=1055H,DS=250AH,ES=2EF0H,SS=8FF0H, DS段有一操作數(shù),其偏移地址=0204H, 1)畫出各

34、段在內(nèi)存中的分布 2)指出各段首地址 3)該操作數(shù)的物理地址=?10550H250A0H2EF00H8FF00HCSSS CSDSES解:解: 各段分布及段首址見右圖所示。各段分布及段首址見右圖所示。 操作數(shù)的物理地址為:操作數(shù)的物理地址為: 250AH10H+0204H = 252A4H 四個段寄存器可以分別描述當前使用的段的起始四個段寄存器可以分別描述當前使用的段的起始字節(jié)單元字節(jié)單元。偏移地址可由偏移地址可由16位位寄存器來描述寄存器來描述。一般情一般情況下況下CS段段的偏移地址用的偏移地址用IP描述描述,SS段段的偏移地址由的偏移地址由SP和和BP描述描述。DS段段的偏移地址由的偏移地

35、址由BX或或SI加上位移量加上位移量來描來描述述,ES段段的偏移地址可由的偏移地址可由BX和和DI加上位移量加上位移量來描述來描述。如圖如圖2-7所示所示。2-7 段寄存器和其它寄存器組合指向存儲單元v沒有指明時,一般的數(shù)據(jù)訪問在DS段;使用BP訪問主存,則在SS段v默認的情況允許改變,需要使用段超越前綴指令;8086指令系統(tǒng)中有4個: CS:;代碼段超越,使用代碼段的數(shù)據(jù) SS: ;堆棧段超越,使用堆棧段的數(shù)據(jù) DS: ;數(shù)據(jù)段超越,使用數(shù)據(jù)段的數(shù)據(jù) ES: ;附加段超越,使用附加段的數(shù)據(jù)v沒有段超越的指令實例:vMOV AX,2000H ;AXDS:2000H ;從默認的DS數(shù)據(jù)段取出數(shù)據(jù)

36、v采用段超越前綴的指令實例:vMOV AX,ES:2000H;AXES:2000H ;從指定的ES附加段取出數(shù)據(jù)操作類型正常使用(隱含)段基址可替換段地址偏移地址物理地址計算取指令CS無IP(CS)16d+(IP)堆棧操作SS無SP(SS) 16d+(SP)BP間址SSCS,DS,ES有效地址EA(SS) 16d+EA存取變量DSCS,ES,SS有效地址EA(DS )16d+EA源字符串DSCS,ES,SSSI(DS) 16d+(SI)目標字符串ES無DI(ES) 16d+(DI)邏輯地址來源堆棧是在計算機中的RAM存儲區(qū)開辟的一個特定區(qū)域,按照“后進先出”的原則組織。主要用于暫存數(shù)據(jù)和斷點地

37、址。1堆棧的結(jié)構(gòu) 存儲區(qū)的存儲方式采用一端固定(稱為棧底),另一端浮動(稱為棧頂)的方式,即只允許在活動端進行數(shù)據(jù)的輸入或刪除。 2堆棧的操作 堆棧段在存儲區(qū)中的位置由堆棧段寄存器SS和堆棧指針SP來確定。SSSS中存放堆棧段的段基址,SPSP中存放棧頂?shù)牡刂?,此地址表示棧頂離段首址的偏移量,因此用SP指示棧元素進棧和出棧的偏移地址的變化。 圖2-8 8086堆棧在存儲器中的分布情況(1)建棧。 建立堆棧就是設定堆棧的段基址和棧底,用戶可以通過數(shù)據(jù)傳送指令把堆段的段基址送入段寄存器SS,把棧底的偏移地址送入堆棧指針寄存器SP。此時棧中無數(shù)據(jù),是一個空棧。 若SS = 1000H,SP = 2000H

溫馨提示

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

評論

0/150

提交評論