高等教育第2章-80868088微型計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)-1_第1頁
高等教育第2章-80868088微型計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)-1_第2頁
高等教育第2章-80868088微型計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)-1_第3頁
高等教育第2章-80868088微型計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)-1_第4頁
高等教育第2章-80868088微型計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)-1_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第2章

8086/8088微型計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)微型計(jì)算機(jī)系統(tǒng)組成原理8086的編程結(jié)構(gòu)存儲(chǔ)器的使用堆棧2.1

微型計(jì)算機(jī)系統(tǒng)組成原理2.1.1計(jì)算機(jī)的硬件基本結(jié)構(gòu)

馮?依曼型計(jì)算機(jī)的基本工作原理可分為程序存儲(chǔ)和程序控制。在物理結(jié)構(gòu)上,計(jì)算機(jī)由運(yùn)算器、控制器、存儲(chǔ)器以及輸入設(shè)備和輸出設(shè)備組成。微機(jī)處理器CPU存儲(chǔ)器接口I/O輸入設(shè)備輸出設(shè)備接口I/O數(shù)據(jù)總線DB地址總線AB控制總線CB計(jì)算機(jī)基本組成運(yùn)算器是對(duì)信息進(jìn)行加工、運(yùn)算的部件,負(fù)責(zé)執(zhí)行算術(shù)運(yùn)算和邏輯運(yùn)算??刂破鞲鶕?jù)程序中的指令發(fā)出各種控制信號(hào),使各部件協(xié)同工作以完成程序所要求的各種操作。通常把它們做在1塊電路芯片上,稱為中央處理器,簡稱CPU。微機(jī)處理器CPU存儲(chǔ)器接口I/O輸入設(shè)備輸出設(shè)備接口I/O數(shù)據(jù)總線DB地址總線AB控制總線CB計(jì)算機(jī)基本組成寄存器是CPU內(nèi)部的存儲(chǔ)單元,作用是暫存需要反復(fù)使用的數(shù)據(jù)。

計(jì)算機(jī)的存儲(chǔ)器系統(tǒng)分為內(nèi)存與外存,內(nèi)存可與CPU真接相連。外存為軟盤、硬盤、光盤等,它不可與CPU直接交換數(shù)據(jù),其數(shù)據(jù)必須先讀入內(nèi)存才可被CPU使用,外存在CPU看來是一種I/0設(shè)備。CPU一般由寄存器陣列RS、算術(shù)邏輯運(yùn)算單元ALU、控制器和內(nèi)部總線及緩沖器組成。存儲(chǔ)器是用來存放程序、原始數(shù)據(jù)和中間結(jié)果的記憶裝置。寄存器通用寄存器:專用寄存器:通用寄存器用來暫存數(shù)據(jù)、操作數(shù)地址等。專用寄存器中常用的是程序計(jì)數(shù)器PC,它保存著下一條要執(zhí)行指令的地址,每當(dāng)取出執(zhí)行一條指令后,其自動(dòng)指向下一條指令。8086/8088中這個(gè)寄存器稱為IP,并且指向下一條要取出的指令而不是要執(zhí)行的指令。微機(jī)處理器CPU存儲(chǔ)器接口I/O輸入設(shè)備輸出設(shè)備接口I/O數(shù)據(jù)總線DB地址總線AB控制總線CB計(jì)算機(jī)基本組成輸入設(shè)備:用于將程序和原始數(shù)據(jù)送入計(jì)算機(jī)中。如鍵盤、鼠標(biāo)等。輸出設(shè)備:用來輸出運(yùn)算結(jié)果或?qū)ν獠吭O(shè)備的控制信號(hào)。如顯示器、打印機(jī)等。輸入設(shè)備和輸出設(shè)備簡稱為I/O設(shè)備,I/O設(shè)備一般不與CPU直接相連,而是通過稱為I/O接口的電路與CPU相連。I/O接口匹配雙方的工作速度和轉(zhuǎn)換不兼容的信號(hào)。

整個(gè)內(nèi)存儲(chǔ)器系統(tǒng)由若干個(gè)存儲(chǔ)單元組成,每個(gè)存儲(chǔ)單元可存放8位二進(jìn)制數(shù),即1B。為了便于識(shí)別,每個(gè)存儲(chǔ)單元都有1個(gè)編號(hào),稱為地址。地址采用幾位二進(jìn)制數(shù)編號(hào),取決于CPU地址引腳的數(shù)目。例如:

某CPU有8根地址線,則存儲(chǔ)單元應(yīng)用8位二進(jìn)制數(shù)編號(hào),8位二進(jìn)制可表示28=256個(gè)數(shù),故系統(tǒng)最多可有256個(gè)存儲(chǔ)單元。如右圖所示。3DH內(nèi)容地址00H01H02H03H04H2FH0FFH………………

微型計(jì)算機(jī)是在微處理器的控制下自動(dòng)進(jìn)行工作的,而微處理器發(fā)出控制的依據(jù)則是用戶的程序指令。假設(shè)要進(jìn)行如下運(yùn)算:3+5-1=?,這一運(yùn)算過程分如下步驟進(jìn)行:1、取數(shù)3。2、取數(shù)5并做3+5運(yùn)算,得結(jié)果8。3、取數(shù)1并做8-1運(yùn)算,得結(jié)果7。4、保存運(yùn)算結(jié)果到存儲(chǔ)器中。5、停機(jī)。CPU能完成的1個(gè)基本動(dòng)作稱為指令,以上運(yùn)算過程由5條指令實(shí)現(xiàn)。

一條指令應(yīng)包含兩個(gè)部分:操作碼(表示進(jìn)行什么操作,如:加法)和操作數(shù)(參加運(yùn)算的數(shù)據(jù),如加法運(yùn)算中的被加數(shù)和加數(shù),)這兩部分在計(jì)算機(jī)內(nèi)都用二進(jìn)制數(shù)表示,也有少數(shù)指令沒有操作數(shù),它表示的動(dòng)作不需要參數(shù)或使用固定的參數(shù)。

在程序中,若需要處理的數(shù)據(jù)較多,將數(shù)據(jù)集中放在內(nèi)存的一個(gè)地方,稱為數(shù)據(jù)區(qū),而將指令代碼集中放在內(nèi)存的另一個(gè)地方,稱為代碼區(qū)。當(dāng)用戶程序裝入內(nèi)存后,只要使程序計(jì)數(shù)器PC指向其代碼區(qū)的起始位置,則下次CPU取指令時(shí)即取了用戶程序的代碼,從而開始執(zhí)行用戶程序。2.1.2計(jì)算機(jī)的基本工作原理1、PC=00H,從地址00H處取一條指令。設(shè)第一條指令占2B,取出后PC自動(dòng)加2。

CPU隨后執(zhí)行所取指令,指令操作碼指出應(yīng)將操作數(shù)3放入累加器A內(nèi)。2、PC=02H,從地址02H處取一條指令。設(shè)第二條指令占2B,取出后PC自動(dòng)加2。CPU隨后執(zhí)行剛才所取指令,指令操作碼指出應(yīng)將操作數(shù)5與累加器A的內(nèi)容相加,并將結(jié)果8暫存A內(nèi)。

3、PC=04H,從地址04H處取一條指令。設(shè)第三條指令占2B,取出后PC自動(dòng)加2

。CPU隨后執(zhí)行剛才所取指令,指令操作碼指出應(yīng)將累加器A內(nèi)容與操作數(shù)1相減,結(jié)果7暫存在A內(nèi)。4、PC=06H,從地址06H處取一條指令。設(shè)第四條指令占2B,取出后PC自動(dòng)加2。CPU隨后執(zhí)行剛才所取指令,指令操作碼指出應(yīng)將累加器A中內(nèi)容保存到操作數(shù)所指定的內(nèi)存單元中。5、PC=08H,從地址08H處取一條指令。設(shè)第五條指令占1B,取出后PC自動(dòng)加

1。CPU隨后執(zhí)行剛才所取指令,該指令無操作數(shù),指令操作碼指出CPU應(yīng)暫停,故CPU不再往下取指令。假設(shè)程序代碼放在內(nèi)存地址00H開始處,執(zhí)行過程如下:8086的內(nèi)部結(jié)構(gòu)按功能分為:1、總線接口單元BIU

總線接口單元BIU是8086同存儲(chǔ)器和I/O設(shè)備之間的接口部件,負(fù)責(zé)對(duì)全部引腳的操作,即8086所有對(duì)存儲(chǔ)器和I/O設(shè)備的操作功能都是由BIU完成的??偩€接口單元BIU由20位地址加法器、4個(gè)段寄存器、16位指令指針I(yè)P、指令隊(duì)列緩沖器和總線控制邏輯電路等組成。2.2.18086CPU概述2.28086的編程結(jié)構(gòu)2、執(zhí)行單元EU

執(zhí)行單元EU主要負(fù)責(zé)執(zhí)行指令,它包含1個(gè)16位的運(yùn)算器ALU,8個(gè)16位的寄存器,1個(gè)16位標(biāo)志寄存器FLAGS,1個(gè)數(shù)據(jù)暫存寄存器和執(zhí)行單元的控制電路。這個(gè)單元進(jìn)行所有指令的解釋和執(zhí)行,同時(shí)管理上述有關(guān)的寄存器。

8086中,BIU負(fù)責(zé)取指令,EU負(fù)責(zé)執(zhí)行指令,若指令要求訪問內(nèi)存或I/O設(shè)備,由EU請(qǐng)求BIU完成。BIU將指令機(jī)器碼取到指令隊(duì)列緩沖器中(6B),而與此同時(shí)EU可以從指令隊(duì)列緩沖器中取出已有指令進(jìn)行執(zhí)行,這樣使得取指令和執(zhí)行指令可以同時(shí)進(jìn)行。這種并行處理技術(shù)極大提高了8086的程序執(zhí)行速度。

當(dāng)遇到轉(zhuǎn)移、循環(huán)、子程序調(diào)用或返回等非順序執(zhí)行類指令時(shí),需要清空指令隊(duì)列緩沖器,這時(shí)EU要等待BIU重新取指令。8086CPU內(nèi)部結(jié)構(gòu)示意圖20位地址加法器4個(gè)段寄存器16位指令指針I(yè)P指令隊(duì)列緩沖器總線控制邏輯電路執(zhí)行單元的控制電路8個(gè)16位的寄存器1個(gè)16位標(biāo)志寄存器FLAGS1個(gè)16位的運(yùn)算器ALU1個(gè)數(shù)據(jù)暫存寄存器8086微處理器內(nèi)部有14個(gè)16位寄存器,這14個(gè)寄存器分為三大類。8086寄存器通用寄存器數(shù)據(jù)寄存器變址寄存器指針寄存器AX

累加器BX

基數(shù)寄存器CX

計(jì)數(shù)寄存器DX

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

堆棧指針寄存器BP

基址指針寄存器SI

源變址寄存器DI

目的變址寄存器段寄存器CS

代碼段寄存器DS

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

堆棧段寄存器ES

附加段寄存器控制寄存器IP

指令指針寄存器FLAG標(biāo)志寄存器2.2.28086寄存器結(jié)構(gòu)1、通用寄存器

通用寄存器用途比較廣泛,一般用在算術(shù)和邏輯運(yùn)算指令中,用來存放算術(shù)運(yùn)算的源/目的操作數(shù),某些通用寄存器還常用來存放存儲(chǔ)器操作數(shù)的地址。通用寄存器共8個(gè),包括數(shù)據(jù)寄存器4個(gè),指針寄存器2個(gè)和變址寄存器2個(gè)。(1)數(shù)據(jù)寄存器

數(shù)據(jù)寄存器有4個(gè),這4個(gè)寄存器比較特殊,每個(gè)均既可作為1個(gè)16位寄存器使用,又可作為兩個(gè)8位寄存器使用。當(dāng)用作16位時(shí),稱為AX、BX、CX、DX。當(dāng)用作8位時(shí),高8位分別稱為AH、BH、CH、DH,低8位分別稱為AL、BL、CL、DL。(2)指針寄存器

指針寄存器有兩個(gè),均是16位寄存器。堆棧指針SP用以指出在堆棧操作中棧頂?shù)奈恢?,入棧(PUSH)和出棧(POP)指令要用到這一位置?;分羔楤P指出要處理的數(shù)據(jù)在堆棧段中的基地址,故稱為基址指針寄存器。(3)變址寄存器

在字符串處理中,被處理的數(shù)據(jù)稱為源操作數(shù),它們的偏移地址存放在源變址寄存器SI中,而處理后的字符串的偏移地址則放在目的變址寄存器DI中。注意

8個(gè)通用寄存器一般均可用來存放指令的操作數(shù)或保存運(yùn)算結(jié)果,但在某些操作中又必須專用某個(gè)寄存器,如I/O操作時(shí)必須使用

AX,循環(huán)指令中必須使用CX。指針和變址實(shí)際上是相同的概念,都是存儲(chǔ)單元地址,一般指令中用來存放存儲(chǔ)單元的地址可作用BX、BP、SI、DI之一,但字符串操作指令中必須使用SI和DI,而堆棧操作中必須使用SP來存放棧頂單元地址。2、段寄存器

段寄存器是專用寄存器,用在存儲(chǔ)器訪問時(shí)存放段的基址。3、控制寄存器(1)指令指針寄存器

指令指針寄存器IP中存放著下一條要取出指令的偏移地址,它具有自動(dòng)加1功能,每取出1B的指令機(jī)器碼,它就自動(dòng)加1,使它指向下一個(gè)要取的內(nèi)存單元。這個(gè)寄存器由CPU內(nèi)部使用,CPU正是利用此寄存器才確保程序中的指令能依次執(zhí)行。程序中不可訪問此寄存器,但某些指令具有隱含改變IP的功能,如轉(zhuǎn)移、循環(huán)、調(diào)用子程序等指令。(2)標(biāo)志寄存器OF溢出標(biāo)志位:當(dāng)補(bǔ)碼運(yùn)算有溢出時(shí),OF為1;否則為0。

標(biāo)志寄存器FLAG是8086的1個(gè)重要寄存器,它是按位使用的。標(biāo)志寄存器共16位,8086中只使用了9位。標(biāo)志寄存器格式如下:OFDFIFTFSFZFAFPFCFD15D4D3D2D1D0D9D8D7D6D5D14D13D12D11D10

狀態(tài)標(biāo)志位有6位,CPU在執(zhí)行完1條影響標(biāo)志寄存器的指令中,依據(jù)運(yùn)算結(jié)果的狀態(tài)對(duì)這些進(jìn)行填寫,程序員可用相關(guān)指令查看狀態(tài)標(biāo)志位從而得知運(yùn)算結(jié)果的某些特點(diǎn)。2.2.3標(biāo)志寄存器

控制標(biāo)志位有3位,其作用是控制CPU執(zhí)行程序的方式。程序員可用指令改變這些位的值,從而改變CPU運(yùn)行程序的方式。

DF方向標(biāo)志位;用以指定字符串處理時(shí)的方向,當(dāng)該位置1時(shí),字符串以遞減順序處理,即地址以從高到低順序遞減。反之,則以遞增順序處理。

IF中斷允許標(biāo)志位:用來控制8086是否允許接收外部可屏蔽中斷請(qǐng)求。若IF=1,8086能響應(yīng)外部可屏蔽中斷請(qǐng)求,反之則不響應(yīng)。

TF跟蹤標(biāo)志位:是為調(diào)試程序而設(shè)定的陷井控制位。當(dāng)該位置1時(shí),8086處于單步狀態(tài),此時(shí)每執(zhí)行完1條指令就自動(dòng)產(chǎn)生1次內(nèi)部中斷。當(dāng)該位復(fù)位后,8086恢復(fù)正常工作。

SF符號(hào)標(biāo)志位:它和運(yùn)算結(jié)果的最高位相同。

標(biāo)志寄存器FLAG是8086的1個(gè)重要寄存器,它是按位使用的。標(biāo)志寄存器共16位,8086中只使用了9位。標(biāo)志寄存器格式如下:OFDFIFTFSFZFAFPFCFD15D4D3D2D1D0D9D8D7D6D5D14D13D12D11D10

狀態(tài)標(biāo)志位有6位,CPU在執(zhí)行完1條影響標(biāo)志寄存器的指令中,依據(jù)運(yùn)算結(jié)果的狀態(tài)對(duì)這些進(jìn)行填寫,程序員可用相關(guān)指令查看狀態(tài)標(biāo)志位從而得知運(yùn)算結(jié)果的某些特點(diǎn)。2.2.3標(biāo)志寄存器

AF輔助進(jìn)位標(biāo)志位:當(dāng)執(zhí)行1次加法(或減法)運(yùn)算使結(jié)果的低4位向高4位(若為16位運(yùn)算,則是低8位向高8位)有進(jìn)位(或借位)時(shí),AF為1;否則為0。該位是為BCD碼運(yùn)算的調(diào)整指令而設(shè)的。

ZF零標(biāo)志位:若當(dāng)前的運(yùn)算結(jié)果為零,ZF為1;否則為0。

PF奇偶標(biāo)志位:該標(biāo)志位反映運(yùn)算結(jié)果中1的個(gè)數(shù)是偶數(shù)還是奇數(shù)。當(dāng)指令執(zhí)行結(jié)果的低8位中含有偶數(shù)個(gè)1時(shí),PF為1;否則為0。

CF進(jìn)/借位標(biāo)志位:當(dāng)執(zhí)行1次加法(或減法)運(yùn)算使最高位向前產(chǎn)生進(jìn)位(或借位)時(shí),CF為1;否則為0。6個(gè)狀態(tài)標(biāo)志位的功能是:

CF進(jìn)/借位標(biāo)志位:當(dāng)執(zhí)行1次加法(或減法)運(yùn)算使最高位向前產(chǎn)生進(jìn)位(或借位)時(shí),CF為1;否則為0。

PF奇偶標(biāo)志位:該標(biāo)志位反映運(yùn)算結(jié)果中1的個(gè)數(shù)是偶數(shù)還是奇數(shù)。當(dāng)指令執(zhí)行結(jié)果的低8位中含有偶數(shù)個(gè)1時(shí),PF為1;否則為0。

AF輔助進(jìn)位標(biāo)志位:當(dāng)執(zhí)行1次加法(或減法)運(yùn)算使結(jié)果的低4位向高4位(若為16位運(yùn)算,則是低8位向高8位)有進(jìn)位(或借位)時(shí),AF為1;否則為0。該位是為BCD碼運(yùn)算的調(diào)整指令而設(shè)的。

ZF零標(biāo)志位:若當(dāng)前的運(yùn)算結(jié)果為零,ZF為1;否則為0。

SF符號(hào)標(biāo)志位:它和運(yùn)算結(jié)果的最高位相同。OF溢出標(biāo)志位:當(dāng)補(bǔ)碼運(yùn)算有溢出時(shí),OF為1;否則為0。01100100(+100)01100100(+100)+1100100010101011(-85)11111111(-1)+110101010

D7向前無進(jìn)位,故運(yùn)算后CF=0;結(jié)果超過了+127,有溢出,故OF=1

D7向前有進(jìn)位,故運(yùn)算后CF=1;結(jié)果不小于-128,無溢出,故OF=0進(jìn)位標(biāo)志用于無符號(hào)數(shù)的運(yùn)算,而溢出標(biāo)志用于帶符號(hào)數(shù)的運(yùn)算。注意不要混淆。如何判斷A,B兩個(gè)數(shù)值型數(shù)據(jù)的大???計(jì)算A-B,有符號(hào)數(shù),利用SF和OF判斷:SF⊕OF=0,即:SF與OF相同,A≧B;SF⊕OF=1,即:SF與OF相異,A﹤B。無符號(hào)數(shù),利用CF判斷:CF=0,即:無借位,A≧B;CF=1,即:有借位,A﹤B。

DF方向標(biāo)志位;用以指定字符串處理時(shí)的方向,當(dāng)該位置1時(shí),字符串以遞減順序處理,即地址以從高到低順序遞減。反之,則以遞增順序處理。

IF中斷允許標(biāo)志位:用來控制8086是否允許接收外部可屏蔽中斷請(qǐng)求。若IF=1,8086能響應(yīng)外部可屏蔽中斷請(qǐng)求,反之則不響應(yīng)。

TF跟蹤標(biāo)志位:是為調(diào)試程序而設(shè)定的陷井控制位。當(dāng)該位置1時(shí),8086處于單步狀態(tài),此時(shí)每執(zhí)行完1條指令就自動(dòng)產(chǎn)生1次內(nèi)部中斷。當(dāng)該位復(fù)位后,8086恢復(fù)正常工作。3個(gè)控制標(biāo)志位的功能是:2.3存儲(chǔ)器的使用2.3.1存儲(chǔ)器的邏輯結(jié)構(gòu)3AH6DH00000H………………………00001H00002H00003H00004HFFFFEHFFFFFHA0A1A2A18A19地址譯碼器

每個(gè)存儲(chǔ)器單元可存放1B的數(shù)據(jù),即8位二進(jìn)制數(shù)。每個(gè)存儲(chǔ)單元要有1個(gè)惟一地址,以作為CPU訪問時(shí)的標(biāo)識(shí)。當(dāng)CPU要訪問某個(gè)存儲(chǔ)單元時(shí),CPU在地址總線上放上目標(biāo)存儲(chǔ)單元的地址,經(jīng)過地址譯碼器譯碼,即可找到相應(yīng)的單元。存儲(chǔ)器結(jié)構(gòu)示意圖

在8086/8088系統(tǒng)中,1個(gè)多字節(jié)數(shù)據(jù)在內(nèi)存中的存放規(guī)則為:高字節(jié)占高地址,低字節(jié)占低地址,并且用最低字節(jié)的地址代表這個(gè)數(shù)的地址。

8086/8088CPU有20條地址線,因而其發(fā)出的地址信號(hào)是20位二進(jìn)制數(shù),由于每個(gè)地址對(duì)應(yīng)1個(gè)存儲(chǔ)單元,故存儲(chǔ)單元的地址也是20位二進(jìn)制數(shù)(由于20位二進(jìn)制數(shù)寫起來太長,所以人們一般改用等價(jià)的十六進(jìn)制表示,即5位十六進(jìn)制數(shù))。20位二進(jìn)制數(shù)可表示220=1MB,因而8086/8088系統(tǒng)中存儲(chǔ)單元的個(gè)數(shù)最多為1MB,即8086/8088的尋址空間為1MB。

內(nèi)存分段使用方案:

分段,即將1MB的內(nèi)存從邏輯上分為若干個(gè)小塊,每個(gè)小塊稱為1個(gè)段。分段是邏輯上的概念,不是將內(nèi)存硬件進(jìn)行了物理分隔,所以不同的程序可以使用不同的的分段方法,而不會(huì)對(duì)物理內(nèi)存造成影響。

分段以后,對(duì)每個(gè)段的存儲(chǔ)單元用16位數(shù)從0開始重新進(jìn)行編址,這個(gè)地址稱為段內(nèi)偏移量,簡稱為偏移量。16位二進(jìn)制數(shù)最多能尋址的空間為216=64KB,故1個(gè)段不能多于64K個(gè)存儲(chǔ)單元。當(dāng)段長度達(dá)到64KB時(shí),偏移量的范圍從0000H~FFFFH。

段內(nèi)偏移量是16位的,解決了運(yùn)算和存儲(chǔ)的問題,但它僅描述了1個(gè)存儲(chǔ)單元距離段內(nèi)首單元的位置偏移,并不能用來絕對(duì)定位1個(gè)存儲(chǔ)單元。但若知道了段內(nèi)首單元的20位物理地址,配合偏移量則可實(shí)現(xiàn)對(duì)段內(nèi)任一存儲(chǔ)單元的絕對(duì)定位。2.3.2存儲(chǔ)器的分段第1條規(guī)則第2條規(guī)則:

1個(gè)段只有1個(gè)段基址,但每個(gè)單元各有自己的偏移量。

1個(gè)段必須從物理地址的最末4位二進(jìn)制數(shù)全為0(即十六進(jìn)制數(shù)最末1位數(shù)為0)的單元開始。這樣,段首單元只有前16位需要描述,這16位數(shù)稱為段基址。

段基址后再補(bǔ)上4個(gè)0(即乘以十六進(jìn)制的10H),就是這個(gè)段首單元的物理地址。00000H00001H12340HFFFFEHFFFFFH0000H0001H0002HFFFFH………………存儲(chǔ)器分段物理地址這4位為段基址偏移量

程序中用來描述存儲(chǔ)單元位置的地址稱為邏輯地址。

邏輯地址的表示:段基址:偏移量如1234:0000H,

1234:0001H等。由于邏輯地址是兩個(gè)16位數(shù),可分別被CPU所存儲(chǔ)或運(yùn)算。CPU最終必須使用物理地址來訪問存儲(chǔ)器。邏輯地址向物理地址的轉(zhuǎn)換公式:

物理地址=段基址

10H+偏移量例如:邏輯地址1234:0001H表示的存儲(chǔ)單元的物理地址為:1234

╳10H+0001H=12341H(1)段的長度<=64K(2)段只能從物理地址低4位二進(jìn)制數(shù)全為0的單元開始。分段的規(guī)則:

8080/8088有4個(gè)段寄存器,其作用就是專門用來存放段基址。2.3.3段寄存器的使用得出:(1)內(nèi)存可分為多個(gè)段。(2)段長度可在16~64K個(gè)單元之間。(3)段之間可以重疊,重疊部分的存儲(chǔ)單元將有兩個(gè)或更多個(gè)邏輯地址,但由這些邏輯地址運(yùn)算出的物理地址是唯一的。存儲(chǔ)單元的邏輯地址可用“段寄存器名:偏移量”來表示,如CS:0011H。只有段基址裝入到段寄存器中,這個(gè)段內(nèi)的存儲(chǔ)單元才可被CPU所訪問。

SS:堆棧段寄存器,專門用來存放堆棧段的段基址。

ES:附加段寄存器,用來存放附加數(shù)據(jù)段的段基址。當(dāng)程序中的數(shù)據(jù)多于64KB時(shí),僅用1個(gè)數(shù)據(jù)段放不下,此時(shí)可再設(shè)一附加數(shù)據(jù)段予以存放。當(dāng)只有1個(gè)數(shù)據(jù)段時(shí),也可將其段基址放入ES而不用DS,這樣訪問速度會(huì)慢一些。

DS:數(shù)據(jù)段寄存器,用來存放數(shù)據(jù)段的段基址。程序中一般將所有要用到的數(shù)據(jù)集中在1個(gè)段內(nèi)存放,這個(gè)段稱為數(shù)據(jù)段。

CS:代碼段寄存器,指令機(jī)器碼所在段的段基址必須裝入到該寄存器中,它指出了下一條要取出的指令所在段的段基址,而指令指針寄存器IP內(nèi)裝的是下一條要取出的指令的段內(nèi)偏移量,這兩個(gè)寄存器配合給出了下一條要取指令的邏輯地址。CPU在取指令時(shí),總是取自CS:IP所指單元。

8086/8088內(nèi)部有專門的邏輯部件來完成將程序中提交的邏輯地址轉(zhuǎn)換為真正訪問存儲(chǔ)器時(shí)所需的物理地址,這一部件稱為20位地址加法器。

地址加法器是將邏輯地址中的段寄存器左移4位(即后面添加4個(gè)0,相當(dāng)于乘以10H),然后再加上邏輯地址中的偏移量,從而計(jì)算出物理地址。段寄存器加法器邏輯地址150偏移地址19020位物理地址190段地址000020位地址加法器段寄存器和偏移地址的寄存器的組合關(guān)系存放存儲(chǔ)器操作涉及的類型正常使用的段地址可被使用的段地址偏移地址取指令CS無IP堆棧操作SS無SP一般變量(以下情況除外)DSCS、ES、SS有效地址源數(shù)據(jù)串DSCS、ES、SSSI目標(biāo)數(shù)據(jù)串ES無DI作為基址寄存器使用的BPSSCS、DS、ES有效地址

堆棧是內(nèi)存的一個(gè)邏輯段,當(dāng)這個(gè)段被指定為

溫馨提示

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

評(píng)論

0/150

提交評(píng)論