lec038086編程結(jié)構(gòu)_第1頁(yè)
lec038086編程結(jié)構(gòu)_第2頁(yè)
lec038086編程結(jié)構(gòu)_第3頁(yè)
lec038086編程結(jié)構(gòu)_第4頁(yè)
lec038086編程結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第三講第三講 8086微處理器編程結(jié)構(gòu)微處理器編程結(jié)構(gòu)n編程結(jié)構(gòu):是指從程序員和使用者的角度看編程結(jié)構(gòu):是指從程序員和使用者的角度看到的結(jié)構(gòu),與芯片內(nèi)部的物理結(jié)構(gòu)和實(shí)際布到的結(jié)構(gòu),與芯片內(nèi)部的物理結(jié)構(gòu)和實(shí)際布局有區(qū)別。局有區(qū)別。q功能結(jié)構(gòu)功能結(jié)構(gòu)q存儲(chǔ)器組織存儲(chǔ)器組織q寄存器結(jié)構(gòu)寄存器結(jié)構(gòu) 一、一、 8086/8088功能結(jié)構(gòu)功能結(jié)構(gòu)n8086的內(nèi)部結(jié)構(gòu)從功能上分成兩個(gè)部件的內(nèi)部結(jié)構(gòu)從功能上分成兩個(gè)部件1. 總線(xiàn)接口部件總線(xiàn)接口部件BIU2. 執(zhí)行部件執(zhí)行部件EUn兩個(gè)部件相互獨(dú)立,分別完成各自操作,還可以?xún)蓚€(gè)部件相互獨(dú)立,分別完成各自操作,還可以并行執(zhí)行并行執(zhí)行,實(shí)現(xiàn)指令預(yù)?。?,實(shí)現(xiàn)指令預(yù)取

2、(指令讀取和執(zhí)行的流水線(xiàn)指令讀取和執(zhí)行的流水線(xiàn)操作操作)。)。8086微處理器內(nèi)部結(jié)構(gòu)微處理器內(nèi)部結(jié)構(gòu)總線(xiàn)總線(xiàn)1 2 3 4 5 6內(nèi)部暫存器內(nèi)部暫存器 IP ES SS DS CS總線(xiàn)控總線(xiàn)控 制邏輯制邏輯 EU 控制器控制器ALU標(biāo)志寄存器標(biāo)志寄存器 AH AL BH BLCH CL DH DL SP BP SI DI通用通用寄存器寄存器地址地址加法加法器器指令隊(duì)列指令隊(duì)列執(zhí)行部件執(zhí)行部件 (EU)總線(xiàn)接口部件總線(xiàn)接口部件 (BIU)16位位20位位16位位暫存器暫存器總線(xiàn)接口部件總線(xiàn)接口部件 BIU構(gòu)成部分構(gòu)成部分n4個(gè)個(gè)16位段寄存器:位段寄存器:CS,DS,ES,SSn16位位IP指

3、令指針寄存器指令指針寄存器n20位地址加法器位地址加法器n6字節(jié)的指令隊(duì)列字節(jié)的指令隊(duì)列( 8088的指令隊(duì)列為的指令隊(duì)列為4字節(jié)字節(jié) )n總線(xiàn)控制電路總線(xiàn)控制電路主要功能主要功能n負(fù)責(zé)與存儲(chǔ)器、負(fù)責(zé)與存儲(chǔ)器、I/O接口傳遞數(shù)據(jù)接口傳遞數(shù)據(jù)n具體完成:具體完成:n(1)物理地址的形成物理地址的形成n(2)從內(nèi)存取指令,送到指令隊(duì)列從內(nèi)存取指令,送到指令隊(duì)列;n(3)讀讀/寫(xiě)操作數(shù)寫(xiě)操作數(shù)n(4)總線(xiàn)控制總線(xiàn)控制執(zhí)行部件執(zhí)行部件EU構(gòu)成部分構(gòu)成部分n8個(gè)個(gè)16位寄存器:位寄存器:qAX、BX、CX、DX、SP、BP、DI、SIn1個(gè)標(biāo)志寄存器個(gè)標(biāo)志寄存器PSWn1個(gè)算術(shù)邏輯運(yùn)算部件個(gè)算術(shù)邏輯運(yùn)算

4、部件ALUn數(shù)據(jù)暫存器數(shù)據(jù)暫存器nEU控制器控制器主要功能主要功能n負(fù)責(zé)指令的譯碼、執(zhí)行。負(fù)責(zé)指令的譯碼、執(zhí)行。(包括算術(shù)、邏輯運(yùn)算,控制命包括算術(shù)、邏輯運(yùn)算,控制命令等令等)BIU與與EU的操作協(xié)調(diào)(的操作協(xié)調(diào)(1)n(1) 執(zhí)行單元執(zhí)行單元EU并不直接與外部發(fā)生聯(lián)系,而是從總線(xiàn)接口單元并不直接與外部發(fā)生聯(lián)系,而是從總線(xiàn)接口單元BIU 的的指令隊(duì)列中源源不斷地獲取指令并執(zhí)行。每當(dāng)指令隊(duì)列中存滿(mǎn)一條指令指令隊(duì)列中源源不斷地獲取指令并執(zhí)行。每當(dāng)指令隊(duì)列中存滿(mǎn)一條指令后,后,EU就立即開(kāi)始執(zhí)行。就立即開(kāi)始執(zhí)行。 n(2) 每當(dāng)指令隊(duì)列中有每當(dāng)指令隊(duì)列中有2 個(gè)空字節(jié)時(shí),個(gè)空字節(jié)時(shí),BIU就會(huì)自動(dòng)地

5、尋找空閑的總線(xiàn)周就會(huì)自動(dòng)地尋找空閑的總線(xiàn)周期進(jìn)行預(yù)取指令操作,直至填滿(mǎn)為止。其取指的順序是按指令在程序中期進(jìn)行預(yù)取指令操作,直至填滿(mǎn)為止。其取指的順序是按指令在程序中出現(xiàn)的先后順序。出現(xiàn)的先后順序。n(3) 每當(dāng)每當(dāng)EU準(zhǔn)備執(zhí)行一條指令時(shí),它會(huì)從準(zhǔn)備執(zhí)行一條指令時(shí),它會(huì)從BIU部件的指令隊(duì)列前部取出部件的指令隊(duì)列前部取出指令的代碼,然后用幾個(gè)時(shí)鐘周期去執(zhí)行指令。在執(zhí)行指令的過(guò)程中,指令的代碼,然后用幾個(gè)時(shí)鐘周期去執(zhí)行指令。在執(zhí)行指令的過(guò)程中,如果必須訪(fǎng)問(wèn)存儲(chǔ)器或者如果必須訪(fǎng)問(wèn)存儲(chǔ)器或者IO端口,那么端口,那么EU就會(huì)請(qǐng)求就會(huì)請(qǐng)求BIU進(jìn)入總線(xiàn)周期,進(jìn)入總線(xiàn)周期,并形成有效地址并形成有效地址EA

6、送給送給BIU ,由,由BIU的地址加法器形成物理地址的地址加法器形成物理地址PA 從從存儲(chǔ)器或存儲(chǔ)器或I/O端口取回操作數(shù)送給端口取回操作數(shù)送給EU,完成訪(fǎng)問(wèn)內(nèi)存或者,完成訪(fǎng)問(wèn)內(nèi)存或者IO端口的操端口的操作。如果此時(shí)作。如果此時(shí)BIU正好處于空閑狀態(tài),會(huì)立即響應(yīng)正好處于空閑狀態(tài),會(huì)立即響應(yīng)EU的總線(xiàn)請(qǐng)求;如果的總線(xiàn)請(qǐng)求;如果BIU正將某個(gè)指令字取到指令隊(duì)列中,則正將某個(gè)指令字取到指令隊(duì)列中,則BIU將首先完成這個(gè)取指令的將首先完成這個(gè)取指令的總線(xiàn)周期,然后再去響應(yīng)總線(xiàn)周期,然后再去響應(yīng)EU發(fā)出的訪(fǎng)問(wèn)總線(xiàn)的請(qǐng)求。發(fā)出的訪(fǎng)問(wèn)總線(xiàn)的請(qǐng)求。BIU與與EU的操作協(xié)調(diào)(的操作協(xié)調(diào)(2)n(4)每當(dāng)每當(dāng)E

7、U執(zhí)行一條轉(zhuǎn)移、調(diào)用或返回指令后,執(zhí)行一條轉(zhuǎn)移、調(diào)用或返回指令后,BIU 清除清除指令隊(duì)列緩沖器,并從新的目標(biāo)地址開(kāi)始預(yù)取指令送入指指令隊(duì)列緩沖器,并從新的目標(biāo)地址開(kāi)始預(yù)取指令送入指令隊(duì)列,此時(shí)令隊(duì)列,此時(shí)EU才能繼續(xù)執(zhí)行指令,實(shí)現(xiàn)程序執(zhí)行的轉(zhuǎn)才能繼續(xù)執(zhí)行指令,實(shí)現(xiàn)程序執(zhí)行的轉(zhuǎn)移。這時(shí)移。這時(shí)EU和和BIU 的并行操作顯然要受到一定的影響,的并行操作顯然要受到一定的影響,但只要轉(zhuǎn)移、調(diào)用指令出現(xiàn)的概率不是很高,但只要轉(zhuǎn)移、調(diào)用指令出現(xiàn)的概率不是很高,EU 和和BIU 間相互獨(dú)立又相互配合的工作方式仍將大大提高間相互獨(dú)立又相互配合的工作方式仍將大大提高CPU 的的工作效率。工作效率。n(5)當(dāng)指

8、令隊(duì)列已滿(mǎn),且當(dāng)指令隊(duì)列已滿(mǎn),且EU又沒(méi)有總線(xiàn)訪(fǎng)問(wèn)請(qǐng)求時(shí),又沒(méi)有總線(xiàn)訪(fǎng)問(wèn)請(qǐng)求時(shí),BIU便進(jìn)入空閑狀態(tài)。便進(jìn)入空閑狀態(tài)。8086 CPU與與 8088 CPU的區(qū)別的區(qū)別n(1)8088與外部交換數(shù)據(jù)的數(shù)據(jù)總線(xiàn)寬度是與外部交換數(shù)據(jù)的數(shù)據(jù)總線(xiàn)寬度是8位,位,內(nèi)部總線(xiàn)和寄存器仍是內(nèi)部總線(xiàn)和寄存器仍是16位,所以位,所以8088稱(chēng)為稱(chēng)為準(zhǔn)準(zhǔn)16位微處理器位微處理器。 8086外部數(shù)據(jù)總線(xiàn)和內(nèi)部總線(xiàn)均為外部數(shù)據(jù)總線(xiàn)和內(nèi)部總線(xiàn)均為16位。位。n(2) 8088指令隊(duì)列為指令隊(duì)列為4字節(jié),字節(jié),若出現(xiàn)若出現(xiàn)1字節(jié)空閑字節(jié)空閑,則預(yù)取指令;則預(yù)取指令;8086指令隊(duì)列為指令隊(duì)列為6字節(jié),字節(jié),若出現(xiàn)若出現(xiàn)2字

9、節(jié)空閑字節(jié)空閑,則預(yù),則預(yù)取指令。取指令。二、二、 8086的存儲(chǔ)器組織的存儲(chǔ)器組織n存儲(chǔ)器:用來(lái)存儲(chǔ)器:用來(lái)存放程序、數(shù)據(jù)存放程序、數(shù)據(jù)。q 存儲(chǔ)器以存儲(chǔ)器以字節(jié)(字節(jié)(8bit)為單位)為單位存儲(chǔ)信息存儲(chǔ)信息q每個(gè)字節(jié)單元有一個(gè)地址,從每個(gè)字節(jié)單元有一個(gè)地址,從0編號(hào),順序加編號(hào),順序加1q地址也用二進(jìn)制數(shù)表示地址也用二進(jìn)制數(shù)表示 (無(wú)符號(hào)整數(shù),(無(wú)符號(hào)整數(shù),通常寫(xiě)成十六通常寫(xiě)成十六進(jìn)制形式進(jìn)制形式)q多字節(jié)數(shù)據(jù)在存儲(chǔ)器中占多字節(jié)數(shù)據(jù)在存儲(chǔ)器中占連續(xù)的多個(gè)存儲(chǔ)單元連續(xù)的多個(gè)存儲(chǔ)單元:n存放時(shí),存放時(shí),高字節(jié)存入高地址,低字節(jié)存入低地址高字節(jié)存入高地址,低字節(jié)存入低地址;n表達(dá)時(shí),用它的表達(dá)

10、時(shí),用它的低地址表示低地址表示多字節(jié)數(shù)據(jù)占據(jù)的地址空間。多字節(jié)數(shù)據(jù)占據(jù)的地址空間。 80 x86系統(tǒng)采用系統(tǒng)采用“高高低低高高低低”原則存儲(chǔ),稱(chēng)為原則存儲(chǔ),稱(chēng)為“小端方式小端方式Little Endian”。 相對(duì)應(yīng)還存在相對(duì)應(yīng)還存在“大端方式大端方式Big Endian”。存儲(chǔ)器地址存儲(chǔ)器地址n 例如:例如:1234H以不同方式存儲(chǔ)時(shí)的情況。以不同方式存儲(chǔ)時(shí)的情況。 2FFFH3000H3001H3002H3003H34 12小端方式12 34大端方式2FFFH3000H3001H3002H3003Hn(00002H)= 12H ,或,或 00002H = 12H n(00003H)= 34

11、H ,或,或 00003H = 34Hn(00002H)= 3412H。n(00002H)= 78563412H。 存儲(chǔ)器的分段管理存儲(chǔ)器的分段管理n8086CPU8086CPU有有2020條地址線(xiàn)條地址線(xiàn)q可尋址空間從可尋址空間從00000H00000HFFFFFHFFFFFH,即,即2 220201MB1MBq存儲(chǔ)系統(tǒng)中,對(duì)應(yīng)每個(gè)物理存儲(chǔ)單元的一個(gè)存儲(chǔ)系統(tǒng)中,對(duì)應(yīng)每個(gè)物理存儲(chǔ)單元的一個(gè)唯一唯一的的20位位編號(hào),就是編號(hào),就是物理地址物理地址n80868086機(jī)器字長(zhǎng)機(jī)器字長(zhǎng)1616位位q僅能表示地址范圍僅能表示地址范圍 0000H FFFFH0000H FFFFH(64KB)64KB)n存

12、儲(chǔ)器的邏輯分段存儲(chǔ)器的邏輯分段q每個(gè)段每個(gè)段最大限制為最大限制為64KB64KB,段地址的低段地址的低4 4位為位為0000B0000Bq分段后編程時(shí)采用分段后編程時(shí)采用邏輯地址邏輯地址,形式為,形式為段地址段地址 : : 段內(nèi)偏移地址段內(nèi)偏移地址邏輯地址邏輯地址n段地址段地址說(shuō)明邏輯段在主存中的起始位置說(shuō)明邏輯段在主存中的起始位置n8086/8088規(guī)定段地址必須是模規(guī)定段地址必須是模16地址:地址:xxxx0Hn省略低省略低4位位0000B,段地址就可以用,段地址就可以用16位數(shù)據(jù)表示,就能位數(shù)據(jù)表示,就能用用16位位段寄存器段寄存器表達(dá)段地址表達(dá)段地址n偏移地址偏移地址說(shuō)明主存單元距離段

13、起始位置的偏移量說(shuō)明主存單元距離段起始位置的偏移量n每段不超過(guò)每段不超過(guò)64KB,偏移地址也可用,偏移地址也可用16位位數(shù)據(jù)表示數(shù)據(jù)表示邏輯地址和物理地址的轉(zhuǎn)換邏輯地址和物理地址的轉(zhuǎn)換偏移地址偏移地址段地址段地址段地址段地址 000000002020位物理地址位物理地址邏輯地址邏輯地址15 0 15 015 0 15 0 左移四位左移四位19 019 0地址地址加法器加法器n物理地址物理地址 = 16 段地址段地址 + 偏移地址偏移地址q段地址左移段地址左移4位,加上偏移地址即得到位,加上偏移地址即得到20位物理地址位物理地址n一個(gè)存儲(chǔ)單元具有一個(gè)唯一的物理地址,一個(gè)存儲(chǔ)單元具有一個(gè)唯一的物理

14、地址,一個(gè)物理地址可一個(gè)物理地址可對(duì)應(yīng)多個(gè)邏輯地址對(duì)應(yīng)多個(gè)邏輯地址邏輯地址邏輯地址 2012:30422012:3042、2002:31422002:3142物理地址物理地址 23162H 23162H23162H 23162H201220120 0H H3042H3042H23162H23162H200220020 0H H3142H3142H23162H23162H段地址左移段地址左移4 4位位加上偏移地址加上偏移地址得到物理地址得到物理地址圖圖 2 6 邏輯地址與物理地址邏輯地址與物理地址80868086的邏輯分段的邏輯分段n8086有有4個(gè)個(gè)16位段寄存器,可同時(shí)使用位段寄存器,可同時(shí)

15、使用4種邏輯段種邏輯段qCS(代碼段寄存器)指明當(dāng)前(代碼段寄存器)指明當(dāng)前代碼段代碼段的起始地址的起始地址nCPU利用利用CS:IP取得將要執(zhí)行的指令。取得將要執(zhí)行的指令。 qSS(堆棧段寄存器)指明當(dāng)前(堆棧段寄存器)指明當(dāng)前堆棧段堆棧段的起始地址的起始地址nPUSH 和和POP 指令,利用指令,利用SS:SP尋址棧頂單元數(shù)據(jù)。尋址棧頂單元數(shù)據(jù)。 qDS(數(shù)據(jù)段寄存器)指明當(dāng)前(數(shù)據(jù)段寄存器)指明當(dāng)前數(shù)據(jù)段數(shù)據(jù)段的起始地址的起始地址nCPU利用利用DS:EA讀寫(xiě)內(nèi)存數(shù)據(jù)段數(shù)據(jù)讀寫(xiě)內(nèi)存數(shù)據(jù)段數(shù)據(jù)qES(附加段寄存器)指明當(dāng)前(附加段寄存器)指明當(dāng)前附加段附加段的起始地址的起始地址nCPU利用

16、利用ES:EA讀寫(xiě)內(nèi)存附加段數(shù)據(jù)讀寫(xiě)內(nèi)存附加段數(shù)據(jù)n每個(gè)段寄存器用來(lái)確定一個(gè)邏輯段的起始地址,每種每個(gè)段寄存器用來(lái)確定一個(gè)邏輯段的起始地址,每種邏輯段均有各自的用途邏輯段均有各自的用途段和段寄存器的引用段和段寄存器的引用 如何分配各個(gè)邏輯段如何分配各個(gè)邏輯段n程序的程序的指令指令序列必須安排在代碼段序列必須安排在代碼段n程序使用的程序使用的堆棧堆棧一定在堆棧段一定在堆棧段n程序中的程序中的數(shù)據(jù)數(shù)據(jù)默認(rèn)默認(rèn)是安排在數(shù)據(jù)段,也經(jīng)常安排是安排在數(shù)據(jù)段,也經(jīng)常安排在附加段,尤其是串操作的目的區(qū)必須是附加段在附加段,尤其是串操作的目的區(qū)必須是附加段n數(shù)據(jù)的存放比較靈活,實(shí)際上可以存放在任何一數(shù)據(jù)的存放比

17、較靈活,實(shí)際上可以存放在任何一種邏輯段中種邏輯段中段寄存器的使用規(guī)定段寄存器的使用規(guī)定訪(fǎng)問(wèn)存儲(chǔ)器的方式訪(fǎng)問(wèn)存儲(chǔ)器的方式默認(rèn)默認(rèn)可超越可超越偏移地址偏移地址取指令取指令CSCS無(wú)無(wú)IPIP堆棧操作堆棧操作SSSS無(wú)無(wú)SPSP一般數(shù)據(jù)訪(fǎng)問(wèn)一般數(shù)據(jù)訪(fǎng)問(wèn)DSDSCS ES SSCS ES SS有效地址有效地址EAEABPBP基址的尋址方式基址的尋址方式SSSSCS ES DSCS ES DS有效地址有效地址EAEA串操作的源操作數(shù)串操作的源操作數(shù)DSDSCS ES SSCS ES SSSISI串操作的目的操作數(shù)串操作的目的操作數(shù)ESES無(wú)無(wú)DIDI三、三、 8086/8088的的寄存器結(jié)構(gòu)寄存器結(jié)構(gòu)共

18、共14個(gè)個(gè)16位位寄存器寄存器通用寄存器通用寄存器n8086有有8個(gè)通用的個(gè)通用的16位寄存器位寄存器(1)數(shù)據(jù)寄存器)數(shù)據(jù)寄存器: AX BX CX DX(2)變址寄存器)變址寄存器: SI DI(3)指針寄存器)指針寄存器: BP SPn4個(gè)數(shù)據(jù)寄存器還可以分成高個(gè)數(shù)據(jù)寄存器還可以分成高8位和低位和低8位兩個(gè)獨(dú)位兩個(gè)獨(dú)立的寄存器,這樣又形成立的寄存器,這樣又形成8個(gè)通用的個(gè)通用的8位寄存器,位寄存器, 8位寄存器只能存放數(shù)據(jù)。位寄存器只能存放數(shù)據(jù)。AX: AH ALBX: BH BLCX: CH CLDX: DH DL(1)數(shù)據(jù)寄存器)數(shù)據(jù)寄存器nAX稱(chēng)為稱(chēng)為累加器累加器(Accumula

19、tor)使用頻度最高。用于算術(shù)、邏輯運(yùn)算以及與外設(shè)傳送信使用頻度最高。用于算術(shù)、邏輯運(yùn)算以及與外設(shè)傳送信息等息等nBX稱(chēng)為稱(chēng)為基址寄存器基址寄存器(Base address Register)常用做存放存儲(chǔ)器地址常用做存放存儲(chǔ)器地址nCX稱(chēng)為稱(chēng)為計(jì)數(shù)器計(jì)數(shù)器(Counter)作為循環(huán)和串操作等指令中的隱含計(jì)數(shù)器作為循環(huán)和串操作等指令中的隱含計(jì)數(shù)器nDX稱(chēng)為稱(chēng)為數(shù)據(jù)寄存器數(shù)據(jù)寄存器(Data register)常用來(lái)存放雙字長(zhǎng)數(shù)據(jù)的高常用來(lái)存放雙字長(zhǎng)數(shù)據(jù)的高16位,或存放外設(shè)端口地址位,或存放外設(shè)端口地址(2)變址寄存器)變址寄存器n16位變址寄存器位變址寄存器SI和和DIn常用于存儲(chǔ)器變址尋址

20、方式時(shí)提供地址常用于存儲(chǔ)器變址尋址方式時(shí)提供地址qSI是源變址寄存器(是源變址寄存器(Source Index)qDI是目的變址寄存器(是目的變址寄存器(Destination Index)(3)指針寄存器)指針寄存器n指針寄存器用于尋址內(nèi)存指針寄存器用于尋址內(nèi)存堆棧堆棧內(nèi)的數(shù)據(jù)內(nèi)的數(shù)據(jù)qSPSP為堆棧指針寄存器(為堆棧指針寄存器(Stack Pointer), ,指示堆棧段棧指示堆棧段棧頂?shù)奈恢茫ㄆ频刂罚╉數(shù)奈恢茫ㄆ频刂罚﹒BPBP為基址指針寄存器(為基址指針寄存器(Base Pointer),表示數(shù)據(jù)在堆),表示數(shù)據(jù)在堆棧段中的基地址棧段中的基地址nSPSP和和BPBP寄存器與寄存器與

21、SSSS段寄存器聯(lián)合使用以確定堆棧段寄存器聯(lián)合使用以確定堆棧段中的存儲(chǔ)單元地址段中的存儲(chǔ)單元地址堆棧堆棧(Stack)是主存中一個(gè)特殊的)是主存中一個(gè)特殊的區(qū)域,采用區(qū)域,采用“先進(jìn)后出先進(jìn)后出”或或“后進(jìn)先出后進(jìn)先出”存取操作方式、而不是隨機(jī)存取方式。存取操作方式、而不是隨機(jī)存取方式。用用8088/8086形成的微機(jī)系統(tǒng)中,堆形成的微機(jī)系統(tǒng)中,堆棧區(qū)域被稱(chēng)為堆棧段棧區(qū)域被稱(chēng)為堆棧段指令指針寄存器指令指針寄存器 IPnIP(Instruction Pointer)為指令指針寄存器,)為指令指針寄存器,存放即將存放即將執(zhí)行指令的偏移地址(有效地址執(zhí)行指令的偏移地址(有效地址EA)。nIP寄存器是

22、一個(gè)寄存器是一個(gè)專(zhuān)用專(zhuān)用寄存器,在程序執(zhí)行過(guò)程中,自動(dòng)修寄存器,在程序執(zhí)行過(guò)程中,自動(dòng)修改。改。nIPIP寄存器與寄存器與CSCS段寄存器聯(lián)合使用以確定下一條指令的存儲(chǔ)段寄存器聯(lián)合使用以確定下一條指令的存儲(chǔ)單元地址(單元地址(CS:IPCS:IP)n注意:注意:不能用指令直接讀取或設(shè)定不能用指令直接讀取或設(shè)定IPIP的值的值,但是可以通過(guò),但是可以通過(guò)某些指令的執(zhí)行而自動(dòng)修改某些指令的執(zhí)行而自動(dòng)修改IPIP值。(例如轉(zhuǎn)移控制類(lèi)指令)值。(例如轉(zhuǎn)移控制類(lèi)指令)標(biāo)志寄存器標(biāo)志寄存器 ( FLAGS / PSW )(1)狀態(tài)標(biāo)志)狀態(tài)標(biāo)志(記錄程序中運(yùn)行結(jié)果的狀態(tài)信息記錄程序中運(yùn)行結(jié)果的狀態(tài)信息)O

23、F 溢出標(biāo)志溢出標(biāo)志 SF 符號(hào)標(biāo)志符號(hào)標(biāo)志ZF 零標(biāo)志零標(biāo)志CF 進(jìn)位標(biāo)志進(jìn)位標(biāo)志AF 輔助進(jìn)位標(biāo)志輔助進(jìn)位標(biāo)志PF 奇偶標(biāo)志奇偶標(biāo)志(2)控制標(biāo)志)控制標(biāo)志用于控制處理器執(zhí)行指令的方式用于控制處理器執(zhí)行指令的方式DF 方向標(biāo)志方向標(biāo)志 IF 中斷標(biāo)志中斷標(biāo)志TF 陷阱標(biāo)志陷阱標(biāo)志OF1115 12DF10IF9TF8SF7ZF65AF43PF21CF0nCF:進(jìn)位:進(jìn)位/借位標(biāo)志位借位標(biāo)志位q當(dāng)運(yùn)算結(jié)果的最高有效位有進(jìn)位(加法)或借位(減法)當(dāng)運(yùn)算結(jié)果的最高有效位有進(jìn)位(加法)或借位(減法)時(shí),進(jìn)位標(biāo)志置時(shí),進(jìn)位標(biāo)志置1,即,即CF1; 否則否則CF0nZF:零標(biāo)志位:零標(biāo)志位q若運(yùn)算結(jié)果

24、為若運(yùn)算結(jié)果為0,則,則ZF1;否則;否則ZF0符號(hào)標(biāo)志符號(hào)標(biāo)志SF(Sign Flag)n運(yùn)算結(jié)果最高位為運(yùn)算結(jié)果最高位為1,則,則SF1; 否則否則SF0 有符號(hào)數(shù)據(jù)用最高有效位表示數(shù)據(jù)的符號(hào)有符號(hào)數(shù)據(jù)用最高有效位表示數(shù)據(jù)的符號(hào)所以,最高有效位就是符號(hào)標(biāo)志的狀態(tài)所以,最高有效位就是符號(hào)標(biāo)志的狀態(tài)奇偶標(biāo)志奇偶標(biāo)志PF(Parity Flag)n當(dāng)運(yùn)算結(jié)果最低字節(jié)中當(dāng)運(yùn)算結(jié)果最低字節(jié)中“1”的個(gè)數(shù)為零或偶的個(gè)數(shù)為零或偶數(shù)時(shí),數(shù)時(shí),PF1;否則;否則PF0 PF標(biāo)志僅反映標(biāo)志僅反映最低最低8位中位中“1”的個(gè)數(shù)的個(gè)數(shù)是是偶或奇,即使是進(jìn)行偶或奇,即使是進(jìn)行16位字操作位字操作溢出標(biāo)志溢出標(biāo)志OF

25、(Overflow Flag)n若有符號(hào)數(shù)運(yùn)算的結(jié)果有溢出,則若有符號(hào)數(shù)運(yùn)算的結(jié)果有溢出,則OF1; 否則否則 OF0n所謂所謂溢出溢出,就是當(dāng)對(duì)有符號(hào)數(shù)進(jìn)行運(yùn)算時(shí),字節(jié)運(yùn)算的結(jié),就是當(dāng)對(duì)有符號(hào)數(shù)進(jìn)行運(yùn)算時(shí),字節(jié)運(yùn)算的結(jié)果超出果超出-128+127的范圍,或字運(yùn)算的結(jié)果超出的范圍,或字運(yùn)算的結(jié)果超出-32768+32767的范圍時(shí),稱(chēng)為溢出。的范圍時(shí),稱(chēng)為溢出。n因?yàn)檫@時(shí)運(yùn)算結(jié)果已超出目標(biāo)單元所能表示的數(shù)值范圍,因?yàn)檫@時(shí)運(yùn)算結(jié)果已超出目標(biāo)單元所能表示的數(shù)值范圍,從而會(huì)丟失有效數(shù)字,出現(xiàn)錯(cuò)誤結(jié)果。從而會(huì)丟失有效數(shù)字,出現(xiàn)錯(cuò)誤結(jié)果。溢出的判斷溢出的判斷n判斷運(yùn)算結(jié)果是否溢出有一個(gè)簡(jiǎn)單的規(guī)則:判斷運(yùn)

26、算結(jié)果是否溢出有一個(gè)簡(jiǎn)單的規(guī)則:n只有當(dāng)只有當(dāng)兩個(gè)相同符號(hào)數(shù)相加兩個(gè)相同符號(hào)數(shù)相加(包括不同符號(hào)數(shù)相(包括不同符號(hào)數(shù)相減),而減),而運(yùn)算結(jié)果的符號(hào)與原數(shù)據(jù)符號(hào)相反時(shí),運(yùn)算結(jié)果的符號(hào)與原數(shù)據(jù)符號(hào)相反時(shí),產(chǎn)生溢出產(chǎn)生溢出;其他情況下,則不會(huì)產(chǎn)生溢出;其他情況下,則不會(huì)產(chǎn)生溢出.例例1:3AH7CHB6H溢出溢出例例2:AAH7CH無(wú)溢出無(wú)溢出例例3:3AH7CH無(wú)溢出無(wú)溢出例例4:AAH7CH2EH溢出溢出溢出和進(jìn)位的區(qū)別溢出和進(jìn)位的區(qū)別n溢出標(biāo)志溢出標(biāo)志OF和進(jìn)位標(biāo)志和進(jìn)位標(biāo)志CF是兩個(gè)意義不同是兩個(gè)意義不同的標(biāo)志的標(biāo)志n進(jìn)位標(biāo)志表示無(wú)符號(hào)數(shù)運(yùn)算結(jié)果是否超出范進(jìn)位標(biāo)志表示無(wú)符號(hào)數(shù)運(yùn)算結(jié)果是否超

27、出范圍,運(yùn)算結(jié)果仍然正確圍,運(yùn)算結(jié)果仍然正確n溢出標(biāo)志表示有符號(hào)數(shù)運(yùn)算結(jié)果是否超出范溢出標(biāo)志表示有符號(hào)數(shù)運(yùn)算結(jié)果是否超出范圍,運(yùn)算結(jié)果已經(jīng)不正確圍,運(yùn)算結(jié)果已經(jīng)不正確溢出和進(jìn)位的對(duì)比溢出和進(jìn)位的對(duì)比例例1:53H46H99H無(wú)符號(hào)數(shù)運(yùn)算:無(wú)符號(hào)數(shù)運(yùn)算:8370153范圍內(nèi),無(wú)進(jìn)位范圍內(nèi),無(wú)進(jìn)位有符號(hào)數(shù)運(yùn)算:有符號(hào)數(shù)運(yùn)算: 8370153范圍外,有溢出范圍外,有溢出OF=1;SF1;ZF0;PF1;CF0,AF1。例例2:AAH7CH(1)26H無(wú)符號(hào)數(shù)運(yùn)算:無(wú)符號(hào)數(shù)運(yùn)算:170124294范圍外,有進(jìn)位范圍外,有進(jìn)位有符號(hào)數(shù)運(yùn)算:有符號(hào)數(shù)運(yùn)算:8612428范圍內(nèi),無(wú)溢出范圍內(nèi),無(wú)溢出OF=0

28、;SF0;ZF0;PF0;CF1,AF1。溢出和進(jìn)位的應(yīng)用場(chǎng)合溢出和進(jìn)位的應(yīng)用場(chǎng)合n處理器對(duì)兩個(gè)操作數(shù)進(jìn)行運(yùn)算時(shí),按照無(wú)符號(hào)數(shù)處理器對(duì)兩個(gè)操作數(shù)進(jìn)行運(yùn)算時(shí),按照無(wú)符號(hào)數(shù)求得結(jié)果,并相應(yīng)設(shè)置進(jìn)位標(biāo)志求得結(jié)果,并相應(yīng)設(shè)置進(jìn)位標(biāo)志CF;同時(shí),根據(jù);同時(shí),根據(jù)是否超出有符號(hào)數(shù)的范圍設(shè)置溢出標(biāo)志是否超出有符號(hào)數(shù)的范圍設(shè)置溢出標(biāo)志OFn應(yīng)該利用哪個(gè)標(biāo)志,則由程序員來(lái)決定。也就是應(yīng)該利用哪個(gè)標(biāo)志,則由程序員來(lái)決定。也就是說(shuō),如果將參加運(yùn)算的操作數(shù)認(rèn)為是無(wú)符號(hào)數(shù),說(shuō),如果將參加運(yùn)算的操作數(shù)認(rèn)為是無(wú)符號(hào)數(shù),就應(yīng)該關(guān)心進(jìn)位;認(rèn)為是有符號(hào)數(shù),則要注意是就應(yīng)該關(guān)心進(jìn)位;認(rèn)為是有符號(hào)數(shù),則要注意是否溢出否溢出方向標(biāo)志方向標(biāo)志DF(Direction Flag)n用于串操作指令中,控制地址的變化方向:用于串操作指令中,控制地址的變化方向:q設(shè)置設(shè)置DF0,存儲(chǔ)器地址自動(dòng)增加;,存儲(chǔ)器地址自動(dòng)增加;q設(shè)置設(shè)置DF1,存儲(chǔ)器地址自動(dòng)減少,存儲(chǔ)器地址自動(dòng)減少CLDCLD 復(fù)位方向標(biāo)志

溫馨提示

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

評(píng)論

0/150

提交評(píng)論