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

下載本文檔

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

文檔簡介

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

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

3、的讀/寫操作寫操作。EU通通過過BIU得到信息得到信息,其功能就是負(fù)責(zé)指令的執(zhí)行其功能就是負(fù)責(zé)指令的執(zhí)行。BIU和和EU兩個單元可以并行工作兩個單元可以并行工作。這樣提高這樣提高CPU的工作速的工作速度度。圖圖2-1 80862-1 8086微處理器內(nèi)部結(jié)構(gòu)示意圖微處理器內(nèi)部結(jié)構(gòu)示意圖一、執(zhí)行單元與總線接口單元 執(zhí)行單元執(zhí)行單元EUEU由由8 8個通用寄存器、個通用寄存器、1 1個標(biāo)志寄存器、算術(shù)個標(biāo)志寄存器、算術(shù)邏輯運(yùn)算單元邏輯運(yùn)算單元ALUALU及及EUEU控制電路組成控制電路組成;EU從從BIU指令隊列寄指令隊列寄存器中獲得指令和待處理數(shù)據(jù)進(jìn)行操作存器中獲得指令和待處理數(shù)據(jù)進(jìn)行操作。將指

4、令代碼譯碼將指令代碼譯碼后后,發(fā)出相應(yīng)的控制信息發(fā)出相應(yīng)的控制信息,將數(shù)據(jù)在將數(shù)據(jù)在ALU中進(jìn)行運(yùn)算中進(jìn)行運(yùn)算,運(yùn)運(yùn)算結(jié)果的特征保留在標(biāo)志寄存的算結(jié)果的特征保留在標(biāo)志寄存的FLAGSFLAGS中中。 總線接口單元總線接口單元BIUBIU包括包括4 4個段寄存器、個段寄存器、1 1個指令指針寄個指令指針寄存器、存器、1 1個與個與EUEU通讀寄存器通讀寄存器。一個先入先出的一個先入先出的6個字節(jié)個字節(jié)(8088是是4個字個字節(jié))指令隊列指令隊列。總線控制邏輯電路及總線控制邏輯電路及20位位實際物理地址計算的加法器實際物理地址計算的加法器。1 1執(zhí)行單元執(zhí)行單元EUEU2.2.總線接口單元總線接口

5、單元BIUBIU(一)、總線接口單元BIU(Bus Interface Unit)v功能:負(fù)責(zé)與 Memory、I/O 端口傳送數(shù)據(jù)。 取指令時,從存儲器指定地址取出指令送入指令隊列排隊。 執(zhí)行指令時,根據(jù)EU命令對指定存儲器單元或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é),8

6、088 的指令隊列為4個字節(jié)。v不論是8086還是8088都會在執(zhí)行指令的同時從內(nèi)存中取下一條或幾條指令,取來的指令放在指令隊列中,使 BIU 具有預(yù)取指令的功能,是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)。v指令執(zhí)行順序 順序指令執(zhí)行:指令隊列存放緊接在執(zhí)行指令后面的那一條指令。 執(zhí)行轉(zhuǎn)移指令:BIU 清除指令隊列中的內(nèi)容,從新的地址取入指令,立即送往執(zhí)行單元,然后再從新單元開始重新填滿隊列。(二)、執(zhí)行單元EU ( Execution Unit ) v 功能 執(zhí)行指令,進(jìn)行全部算術(shù)邏輯運(yùn)算、完全偏移地址的計算 向總線接口單元BIU提供指令執(zhí)行結(jié)果的數(shù)據(jù)和偏移地址,并對通用寄存器和標(biāo)志寄存器進(jìn)行管

7、理。v 組成: 4個通用寄存器:AX、BX、CX、DX 4個專用寄存器:BP、SP、SI、DI 標(biāo)志寄存器(PSW): 9個標(biāo)志位,其中6個條件標(biāo)志位用于存放結(jié)果狀態(tài), 算術(shù)邏輯單元: 16 位加法器,用于對寄存器和指令操作數(shù)進(jìn)行算術(shù)或邏輯運(yùn)算, EU 控制系統(tǒng): 接受從總線接口單元的指令隊列中取來的指令代碼,對其譯碼和向 EU 內(nèi)各有關(guān)部分發(fā)出時序命令信號,協(xié)調(diào)執(zhí)行指令規(guī)定的操作。取指令取指令 指令譯碼指令譯碼 執(zhí)行指令執(zhí)行指令指令的一般執(zhí)行過程:指令的一般執(zhí)行過程:(三)、流水線工作方式v 8086/8088取指部分與執(zhí)行部分是分開的。 在一條指令的執(zhí)行過程中可以取出下一條(或多條)指令,

8、指令 在指令隊列中排隊; 在一條指令執(zhí)行完成后,就可以立即執(zhí)行下一條指令,減少CPU為取指令而等待的時間,提高CPU的利用率和整個運(yùn)行速度。v 8086/8088微處理器: BIU和EU分開,取指和執(zhí)行可以重迭, 大大減少了等待取指所需的時間,提高CPU的利用率。取指取指取指取指取指取指取指取指得到數(shù)據(jù)得到數(shù)據(jù)等待等待執(zhí)行執(zhí)行執(zhí)行執(zhí)行執(zhí)行執(zhí)行執(zhí)行執(zhí)行(三)、流水線工作方式(cont.)v對于8080與8085及較早的8位微處理器: 程序執(zhí)行由取指令和執(zhí)行指令的循環(huán)來完成的。 每條指令執(zhí)行完后CPU必須等待到下條指令取出來后才能執(zhí)行。取指取指執(zhí)行執(zhí)行取指取指執(zhí)行執(zhí)行.取指取指執(zhí)行執(zhí)行時間坐標(biāo)時間

9、坐標(biāo)二、8086/8088的寄存器結(jié)構(gòu) 8086內(nèi)部寄存器按其功能可分為內(nèi)部寄存器按其功能可分為:通用寄存器通用寄存器(8個),段寄存器段寄存器(4個),控制寄存器控制寄存器(2個)。8086CPU中有14個16位的寄存器。8個16位通用寄存器;2個16位指針寄存器;2個16位的變址寄存器;4個16位的段寄存器;1個16位指令指針;1個16位標(biāo)志寄存器。8086/8088 CPU的內(nèi)部寄存器如圖2-2所示。 圖圖2-2 8086/8088 CPU2-2 8086/8088 CPU內(nèi)部寄存器內(nèi)部寄存器 15 8 7 0SPBPSIDI堆棧指針寄存器堆棧指針寄存器基址指針基址指針寄存器寄存器源變址

10、寄存器源變址寄存器目的變址寄存器目的變址寄存器指針和變址指針和變址寄存器寄存器代碼段寄存器代碼段寄存器數(shù)據(jù)段寄存器數(shù)據(jù)段寄存器堆棧段寄存器堆棧段寄存器附加段寄存器附加段寄存器段寄存器組段寄存器組CSDSSSES指令指針寄存器指令指針寄存器標(biāo)志寄存器標(biāo)志寄存器控制寄存器控制寄存器組組IPFLAGS累加器累加器基址寄存器基址寄存器計數(shù)寄存器計數(shù)寄存器數(shù)據(jù)寄存器數(shù)據(jù)寄存器數(shù)據(jù)數(shù)據(jù)寄存器寄存器AX AH ALBX BH BLCX CH CLDX DH DL通通用用寄寄存存器器組組 通用寄存器的包括數(shù)據(jù)寄存器通用寄存器的包括數(shù)據(jù)寄存器、地址指針寄存器和地址指針寄存器和變址寄存器變址寄存器。 數(shù)據(jù)寄存器數(shù)

11、據(jù)寄存器有數(shù)據(jù)寄存器數(shù)據(jù)寄存器有AXAX、BXBX、CXCX、DXDX都是都是16位寄存器位寄存器,這四個這四個16位寄存器可分為高位寄存器可分為高8位和低位和低8位兩部位兩部分使用分使用,也就是說也可作也就是說也可作8位寄存器使用位寄存器使用。高高8位表示成位表示成:AHAH、BHBH、CHCH、DHDH,低低8位表示成位表示成:ALAL、BLBL、CLCL、DLDL。參與參與運(yùn)算的數(shù)是運(yùn)算的數(shù)是16位數(shù)時位數(shù)時,可用可用AX、BX、CX、DX中的任意一中的任意一個描述個描述,如果參與運(yùn)算的數(shù)據(jù)是如果參與運(yùn)算的數(shù)據(jù)是8位數(shù)時可用位數(shù)時可用AH、AL、BH、BL、CH、CL、DH、DL中的任意

12、一個描述中的任意一個描述。一般情況下一般情況下,這四個數(shù)據(jù)寄存器就是用于存放參與運(yùn)算的數(shù)據(jù)或運(yùn)算這四個數(shù)據(jù)寄存器就是用于存放參與運(yùn)算的數(shù)據(jù)或運(yùn)算結(jié)果的結(jié)果的。但這四個寄存器又有自己特殊的用法但這四個寄存器又有自己特殊的用法。1.1.通用寄存器通用寄存器 AX(Accumulator)累加器累加器,是指令系統(tǒng)中應(yīng)用最是指令系統(tǒng)中應(yīng)用最多的寄存器多的寄存器,輸入輸入/輸出只能用輸出只能用AXAX寄存器傳遞數(shù)據(jù)寄存器傳遞數(shù)據(jù),它它經(jīng)常存放運(yùn)算的中間結(jié)果經(jīng)常存放運(yùn)算的中間結(jié)果,并參與下次運(yùn)算并參與下次運(yùn)算,所以叫累所以叫累加器加器。 BX(base Register)基址寄存器基址寄存器,它通常用來存

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

14、SP和和BP兩個兩個。 SP(stack pointer)叫堆棧指示器叫堆棧指示器,用于指示當(dāng),用于指示當(dāng)前堆段中棧頂所在的存儲單元地址前堆段中棧頂所在的存儲單元地址。(堆棧在后面介堆棧在后面介紹紹)。 BP(base pointer)叫基址指示器叫基址指示器,用于指示當(dāng)前用于指示當(dāng)前堆棧段中一個數(shù)據(jù)區(qū)基址的偏移地址堆棧段中一個數(shù)據(jù)區(qū)基址的偏移地址,通過它間接尋址通過它間接尋址可對堆棧段中的某個數(shù)據(jù)進(jìn)行存取可對堆棧段中的某個數(shù)據(jù)進(jìn)行存取。 SP和和BP只能用于堆棧段只能用于堆棧段,不能指示其它段不能指示其它段。(存儲存儲器是按段管理的器是按段管理的,后續(xù)介紹后續(xù)介紹)。但但SP和和BP應(yīng)用上是

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

16、的偏移地址。址的偏移地址。 在字符串操作中,在字符串操作中,SISI用于存放源串操作數(shù)的偏移用于存放源串操作數(shù)的偏移地址,這個串一定是在數(shù)據(jù)段地址,這個串一定是在數(shù)據(jù)段DSDS。DIDI用于存放目標(biāo)串用于存放目標(biāo)串操作數(shù)的偏移地址,這個串一定是在附加段操作數(shù)的偏移地址,這個串一定是在附加段ESES。 在寄存器間尋址時,經(jīng)常用在寄存器間尋址時,經(jīng)常用DIDI、SISI加上一個位移加上一個位移量來改變存儲器的地址,因此叫變址寄存器量來改變存儲器的地址,因此叫變址寄存器。 指針寄存器和變址寄存器與數(shù)據(jù)寄存器樣,可以指針寄存器和變址寄存器與數(shù)據(jù)寄存器樣,可以參與算術(shù)和邏輯運(yùn)算,但指針寄存器和變址寄存器

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

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

19、指令的偏移地址。(程序指示器)。用于存放預(yù)取指令的偏移地址。CPU從代碼段中偏移地址為從代碼段中偏移地址為IP的內(nèi)存單元中取出指令代碼的的內(nèi)存單元中取出指令代碼的一個字節(jié)后一個字節(jié)后,IP自動加自動加I,指向指令代碼的下一個字節(jié)指向指令代碼的下一個字節(jié)。用戶程序不能直接訪問。用戶程序不能直接訪問IPIP。 FLAGS(Flags)叫標(biāo)志寄存器,用于存放運(yùn)算叫標(biāo)志寄存器,用于存放運(yùn)算結(jié)果的標(biāo)志。結(jié)果的標(biāo)志。FLAGS是是16位寄存器位寄存器,用其中的用其中的9位來描述位來描述9個標(biāo)志個標(biāo)志。通常叫標(biāo)志通常叫標(biāo)志9個標(biāo)志可分為狀態(tài)標(biāo)志位和控制個標(biāo)志可分為狀態(tài)標(biāo)志位和控制標(biāo)志位標(biāo)志位。如圖如圖2-3

20、所示所示。 OFOF DFDF IFIF TFTF SFSF ZFZF AFAF PFPF CFCF3.3.控制寄存器控制寄存器圖2-3 8086標(biāo)志寄存器FLAGS狀態(tài)標(biāo)志位有:狀態(tài)標(biāo)志位有: CFCF(Corry FlagCorry Flag)進(jìn)位標(biāo)志位(借位標(biāo)志位):)進(jìn)位標(biāo)志位(借位標(biāo)志位):當(dāng)進(jìn)行加法當(dāng)進(jìn)行加法(或減法)運(yùn)算時,若最高位發(fā)生進(jìn)位來借位,則(或減法)運(yùn)算時,若最高位發(fā)生進(jìn)位來借位,則CF=1CF=1,否則,否則CF=0CF=0。 PFPF( Parity FlagParity Flag)寄標(biāo)志位:寄標(biāo)志位:當(dāng)邏輯運(yùn)算結(jié)果中當(dāng)邏輯運(yùn)算結(jié)果中“1”1”的個的個數(shù)為偶數(shù)時,數(shù)

21、為偶數(shù)時,PF=1PF=1,為奇數(shù)時,為奇數(shù)時,PF=0PF=0。 AFAF(Auxiliary CarryAuxiliary Carry)半進(jìn)位標(biāo)志位:)半進(jìn)位標(biāo)志位:在在8 8(1616)位加減法運(yùn))位加減法運(yùn)算中,低算中,低4 4(8 8)位向高位有進(jìn)位或借位,則)位向高位有進(jìn)位或借位,則AF=1AF=1,否則,否則AF=0AF=0。 ZFZF(Zero FlagZero Flag)零標(biāo)志位:零標(biāo)志位:當(dāng)運(yùn)算結(jié)查為當(dāng)運(yùn)算結(jié)查為0 0時,時,ZF=1ZF=1,否則,否則ZF=0ZF=0。 SFSF(Sign FlagSign Flag)符號標(biāo)志位:符號標(biāo)志位:當(dāng)運(yùn)算結(jié)果最高位是當(dāng)運(yùn)算結(jié)果最

22、高位是1 1(即函數(shù))(即函數(shù))時,時,SF=1SF=1,否則,否則SF=0SF=0。 OFOF(Over FlagOver Flag)溢出標(biāo)志位:溢出標(biāo)志位:當(dāng)運(yùn)算結(jié)果超出了帶符號數(shù)的當(dāng)運(yùn)算結(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)標(biāo)志位狀態(tài)是計個狀態(tài)標(biāo)志位狀態(tài)是計算機(jī)運(yùn)算后,自動生成的不是人為賦予的,當(dāng)然也可通過算機(jī)運(yùn)算后,自動生成的不是人為賦予的,當(dāng)然

23、也可通過POPFPOPF改變改變各狀態(tài)值。(后續(xù)介紹各狀態(tài)值。(后續(xù)介紹) 控制標(biāo)志位控制標(biāo)志位 控制標(biāo)志位被設(shè)置后,可完成某些控制操作。控制標(biāo)志位被設(shè)置后,可完成某些控制操作。 TFTF(Trap FlagTrap Flag)跟蹤標(biāo)志位:)跟蹤標(biāo)志位:是為調(diào)試程序而設(shè)置的。若是為調(diào)試程序而設(shè)置的。若TF=1TF=1,則使,則使8086CPU8086CPU處于單步工作方式,在這種工作方式下,處于單步工作方式,在這種工作方式下,CPUCPU每每執(zhí)行完一條指令,就自動產(chǎn)生一個內(nèi)部中斷,處理機(jī)轉(zhuǎn)去執(zhí)行一個執(zhí)行完一條指令,就自動產(chǎn)生一個內(nèi)部中斷,處理機(jī)轉(zhuǎn)去執(zhí)行一個中斷服務(wù)程序。檢查程序中的每條指令執(zhí)行

24、情況,當(dāng)中斷服務(wù)程序。檢查程序中的每條指令執(zhí)行情況,當(dāng)TF=0TF=0時,時,CPUCPU正正常執(zhí)行程序。常執(zhí)行程序。 IFIF(Interrupt FlagInterrupt Flag)中斷允許標(biāo)志位(開中斷標(biāo)志位):)中斷允許標(biāo)志位(開中斷標(biāo)志位):若若將將IFIF設(shè)置為設(shè)置為1 1時(時(IF=1IF=1),),8086CPU8086CPU開中斷,開中斷,CPUCPU允許外部的可屏蔽中允許外部的可屏蔽中斷源的中斷請示,若將斷源的中斷請示,若將IFIF清零(清零(IF=0IF=0),),8086CPU8086CPU關(guān)中斷,關(guān)中斷,CPUCPU禁止禁止外部可屏蔽中斷的請求。外部可屏蔽中斷的請

25、求。 IFIF只對可屏蔽中斷起作用,對非屏蔽中斷和內(nèi)部中斷都不起作只對可屏蔽中斷起作用,對非屏蔽中斷和內(nèi)部中斷都不起作用。用。 DFDF(Direction FlagDirection Flag)方向標(biāo)志位:)方向標(biāo)志位:方向標(biāo)志位用于控制串操方向標(biāo)志位用于控制串操作指令中作指令中SISI(或(或DIDI)的修改方向。當(dāng))的修改方向。當(dāng)DFDF設(shè)置為設(shè)置為1 1(DF=1DF=1)時時,SISI(或(或DIDI)減量,當(dāng))減量,當(dāng)DFDF清零(清零(DF=0DF=0)時,)時,SISI(或(或DIDI)增量,因為)增量,因為SISI(或(或DIDI)描述串操作的偏移地址,當(dāng)描述串操作的偏移地址

26、,當(dāng)SISI(DIDI)減量時,串是由高地址向低地)減量時,串是由高地址向低地址方向遵序執(zhí)行。后續(xù)指令中將詳細(xì)介紹。址方向遵序執(zhí)行。后續(xù)指令中將詳細(xì)介紹。 在調(diào)試程序時,在調(diào)試程序時,DEBUG提供了測試標(biāo)志位的手段,提供了測試標(biāo)志位的手段,用符號表示標(biāo)志位的值,用符號表示標(biāo)志位的值,每種標(biāo)志位的符號如下表:每種標(biāo)志位的符號如下表:標(biāo)志名標(biāo)志名標(biāo)志為1標(biāo)志為1 標(biāo)志為0標(biāo)志為0OF溢出(是/否)OF溢出(是/否)OVOVNVNVDF方向(減量/加量)DF方向(減量/加量)DNDNUPUPIF中斷(允許/關(guān)閉)IF中斷(允許/關(guān)閉)EIEIDIDISF符號(負(fù)/正)SF符號(負(fù)/正)NGNGPL

27、PLZF零(是/否)ZF零(是/否)ZRZRNZNZAF輔助進(jìn)位(是/否)AF輔助進(jìn)位(是/否)ACACNANAPF奇偶標(biāo)志( 偶/奇)PF奇偶標(biāo)志( 偶/奇)PEPEPOPOCF進(jìn)位標(biāo)志(是/否)CF進(jìn)位標(biāo)志(是/否)CYCYNCNCDEBUG不提供不提供TF的符號用于單步方式操作。的符號用于單步方式操作。例例1:執(zhí)行兩個數(shù)的加法,分析對標(biāo)志位的影響。:執(zhí)行兩個數(shù)的加法,分析對標(biāo)志位的影響。v 標(biāo)志標(biāo)志: 運(yùn)算結(jié)果最高位為運(yùn)算結(jié)果最高位為0SF=0; 運(yùn)算結(jié)果本身運(yùn)算結(jié)果本身0 ZF=0低低8位中位中1的個數(shù)為奇數(shù)個的個數(shù)為奇數(shù)個 PF=0; 最高位沒有進(jìn)位最高位沒有進(jìn)位 CF=0第三位向第

28、四位無進(jìn)位第三位向第四位無進(jìn)位 AF=0;次高位向最高位沒有進(jìn)位次高位向最高位沒有進(jìn)位 ,最高位向前沒有進(jìn)位,最高位向前沒有進(jìn)位 , 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)容相加、相減后,標(biāo)志CF、AF、PF、SF、OF和ZF的狀態(tài)。 解:(1)AL + AH

29、 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由運(yùn)算結(jié)果可知:CF = 0 (無進(jìn)位);AF = 1(有輔助進(jìn)位);PF = 1(有偶數(shù)個1);SF = D7 = 1(運(yùn)算結(jié)果符號位為1);OF = 1 (同號相加,結(jié)果的符號與兩操作數(shù)符號相反,有溢出);ZF = 0 (運(yùn)算結(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由運(yùn)算結(jié)果可知:CF = 1(有借位);AF = 1(有輔助借位);PF = 1(有偶數(shù)個1);SF = 1(符號位為

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

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

32、數(shù),34H34H12H12H1EH1EH2FH2FH0000H0000H0001H0001H0002H0002H0003H0003H0004H0004H0005H0005H0006H0006H.1234H1234H1235H1235H1236H1236H.數(shù)據(jù)總線地址總線D7D01 M X 8位存儲體A19A000000HFFFFFHA19A08086系統(tǒng)的存儲體結(jié)構(gòu)系統(tǒng)的存儲體結(jié)構(gòu) 8088系統(tǒng)的存儲體結(jié)構(gòu)系統(tǒng)的存儲體結(jié)構(gòu) (二)、存儲器的分段結(jié)構(gòu)和物理地址的形成 8086有有20條條地址線,可以尋址地址線,可以尋址1M內(nèi)存空間。地址從內(nèi)存空間。地址從00000HFFFFFH。但。但8086

33、CPU內(nèi)部的地址寄存器都是內(nèi)部的地址寄存器都是1616位位的,的,最多能尋址最多能尋址64K字節(jié)字節(jié),為了能尋址,為了能尋址1M字節(jié)字節(jié),8086采用分段技采用分段技術(shù)。分段技術(shù)是把存儲器可分成術(shù)。分段技術(shù)是把存儲器可分成代碼段代碼段CS、堆棧段、堆棧段SS、數(shù)、數(shù)據(jù)段據(jù)段DS和附加段和附加段ES四種。每段為四種。每段為64KB,段與段可以重疊,段與段可以重疊,可以交叉,也可以沒有聯(lián)系??梢越徊?,也可以沒有聯(lián)系。如圖如圖2-4所示。所示。存儲器分段管存儲器分段管理后,每個單元的地址都可以用兩個形式的地址來表示,理后,每個單元的地址都可以用兩個形式的地址來表示,實際地址(物理地址)和邏輯地址。實

34、際地址(物理地址)和邏輯地址。2-4 存儲器的邏輯分段結(jié)構(gòu) 例:已知當(dāng)前有效的代碼段例:已知當(dāng)前有效的代碼段、堆棧段堆棧段、數(shù)據(jù)段和附數(shù)據(jù)段和附加段的段基址分別為加段的段基址分別為1055H、EFF0H、250AH和和8FFBH,它它們在存儲器中的分布情況如圖們在存儲器中的分布情況如圖2-52-5所示所示。 物物理地址理地址: :是由是由20位地址或狀態(tài)來表示的地址。位地址或狀態(tài)來表示的地址。即即20位位二進(jìn)數(shù)來表示。二進(jìn)數(shù)來表示。CPU與存儲器交換信息時,使用的是物理地與存儲器交換信息時,使用的是物理地址。址。 邏輯地址:是把邏輯地址:是把2020位地址分成段基址和偏移地址兩部位地址分成段基

35、址和偏移地址兩部分表示,即段:偏移。分表示,即段:偏移。這兩部分都是無符號的這兩部分都是無符號的16位二進(jìn)制位二進(jìn)制數(shù)。例如:數(shù)。例如:0001H:2000H。程序是以邏輯地址來編址的。程序是以邏輯地址來編址的。 物理地址的形成是通過物理地址的形成是通過CPU內(nèi)部的內(nèi)部的BIU部件中的地址加部件中的地址加法器運(yùn)算出來的,如圖法器運(yùn)算出來的,如圖2-6。從圖中可看出物理地址可由下式計算:從圖中可看出物理地址可由下式計算: 物理地址物理地址= =段基址段基址16+ +偏移地址偏移地址。 例如:例如:CS=2000H IP=2200H,則物理地址為:,則物理地址為:20000H+2200H=2220

36、0H。2-6 8086物理地址的形成已知CS=1055H,DS=250AH,ES=2EF0H,SS=8FF0H, DS段有一操作數(shù),其偏移地址=0204H, 1)畫出各段在內(nèi)存中的分布 2)指出各段首地址 3)該操作數(shù)的物理地址=?10550H250A0H2EF00H8FF00HCSSS CSDSES解:解: 各段分布及段首址見右圖所示。各段分布及段首址見右圖所示。 操作數(shù)的物理地址為:操作數(shù)的物理地址為: 250AH10H+0204H = 252A4H例: 四個段寄存器可以分別描述當(dāng)前使用的段的起始四個段寄存器可以分別描述當(dāng)前使用的段的起始字節(jié)單元字節(jié)單元。偏移地址可由偏移地址可由16位位寄

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

38、據(jù) DS: ;數(shù)據(jù)段超越,使用數(shù)據(jù)段的數(shù)據(jù) ES: ;附加段超越,使用附加段的數(shù)據(jù)段超越的示例v沒有段超越的指令實例:vMOV AX,2000H ;AXDS:2000H ;從默認(rèn)的DS數(shù)據(jù)段取出數(shù)據(jù)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 )1

39、6d+EA源字符串DSCS,ES,SSSI(DS) 16d+(SI)目標(biāo)字符串ES無DI(ES) 16d+(DI)邏輯地址來源四、80868088系統(tǒng)中的堆棧堆棧是在計算機(jī)中的RAM存儲區(qū)開辟的一個特定區(qū)域,按照“后進(jìn)先出”的原則組織。主要用于暫存數(shù)據(jù)和斷點地址。1堆棧的結(jié)構(gòu) 存儲區(qū)的存儲方式采用一端固定(稱為棧底),另一端浮動(稱為棧頂)的方式,即只允許在活動端進(jìn)行數(shù)據(jù)的輸入或刪除。 2堆棧的操作 堆棧段在存儲區(qū)中的位置由堆棧段寄存器SS和堆棧指針SP來確定。SSSS中存放堆棧段的段基址,SPSP中存放棧頂?shù)牡刂罚说刂繁硎緱m旊x段首址的偏移量,因此用SP指示棧元素進(jìn)棧和出棧的偏移地址的變化

40、。 堆堆棧棧段段首首地地址址SS 10000H11FFBH11FFDH11FFEH11FFFH11FFAH11FFCHSP 12000H棧棧底底64KB圖2-8 8086堆棧在存儲器中的分布情況(1)建棧。 建立堆棧就是設(shè)定堆棧的段基址和棧底,用戶可以通過數(shù)據(jù)傳送指令把堆段的段基址送入段寄存器SS,把棧底的偏移地址送入堆棧指針寄存器SP。此時棧中無數(shù)據(jù),是一個空棧。 若SS = 1000H,SP = 2000H,則堆棧的情況如圖2-8所示,建立堆棧指令為:MOV AX,1000H MOV SS, AX MOV SP,2000H (2)入棧。入棧就是把數(shù)據(jù)壓入堆棧,又稱進(jìn)棧。8086微處理器的入

41、棧操作以字為單位。入棧操作分為兩步:將堆棧指針寄存器SP的內(nèi)容減2,即是棧頂向低地址方向移動一個字單元,指向新棧頂。即:SP SP 2;將一個字?jǐn)?shù)據(jù)推入到SP所指向的棧頂字單元,即:SP 字?jǐn)?shù)據(jù)。 注意:入棧字的低字節(jié)存入低地址單元,高字節(jié)存入高地址單元。注意:入棧字的低字節(jié)存入低地址單元,高字節(jié)存入高地址單元。 例2 若SS = 2000H,當(dāng)前SP = 1234H,將寄存器AX中的數(shù)據(jù)7C9FH壓入堆棧。操作如下:修改SP,使其指向新棧頂,即:SP = 1232H。AX的內(nèi)容壓入棧頂字單元。即:AL送21232H單元,AH送21233H單元。其操作如圖所示。5CH 20HSP1232H21232H21233H21234H9FH7CHXXAX入入棧棧操操作作設(shè)設(shè)SS = 2000Ha)SP1234H21232H21233H21234H20H5CHXXAX

溫馨提示

  • 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

提交評論