IBMC微機(jī)組成原理與基本結(jié)構(gòu)_第1頁
IBMC微機(jī)組成原理與基本結(jié)構(gòu)_第2頁
IBMC微機(jī)組成原理與基本結(jié)構(gòu)_第3頁
IBMC微機(jī)組成原理與基本結(jié)構(gòu)_第4頁
IBMC微機(jī)組成原理與基本結(jié)構(gòu)_第5頁
已閱讀5頁,還剩44頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

IBM-PC微機(jī)組成原理IBM-PC微機(jī)基本結(jié)構(gòu)一、微機(jī)的一般構(gòu)成運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備。一般計(jì)算機(jī)應(yīng)包括五大部件:由于微機(jī)的主要特點(diǎn)是其體積很小,因此在系統(tǒng)設(shè)計(jì)上就有一些特殊考慮,它將運(yùn)算器和控制器兩大部件集成在一個(gè)集成電路芯片上,稱為微處理器,也叫中央處理器,簡(jiǎn)稱CPU

1微處理器CPU主存儲(chǔ)器I/O接口I/O設(shè)備I/O接口I/O設(shè)備地址總線數(shù)據(jù)總線控制總線系統(tǒng)總線微機(jī)硬件系統(tǒng)基本組成框圖21、中央處理器CPU微型計(jì)算機(jī)中的中央處理器也叫微處理器。它包括運(yùn)算器和控制器。功能:從主存儲(chǔ)器中逐條取出構(gòu)成程序的指令序列,分析各指令的功能,控制計(jì)算機(jī)各部件完成指定功能的各項(xiàng)操作。2、主存儲(chǔ)器主存儲(chǔ)器是用于存放程序和數(shù)據(jù)的部件。它由若干個(gè)存儲(chǔ)單元構(gòu)成。存儲(chǔ)單元的多少表示存儲(chǔ)器的容量。每個(gè)存儲(chǔ)單元使用一個(gè)唯一的編號(hào)來標(biāo)識(shí),稱為存儲(chǔ)單元的地址。對(duì)每個(gè)存儲(chǔ)單元內(nèi)容的存和取是按照地址進(jìn)行訪問的。3計(jì)算機(jī)存儲(chǔ)信息的基本單位是一個(gè)二進(jìn)制位,一位可存儲(chǔ)一個(gè)二進(jìn)制數(shù)0或1。每8位組成一個(gè)字節(jié)(BYTE)。76543210在大多數(shù)計(jì)算機(jī)中,存儲(chǔ)器的組織都是以字節(jié)為基本單位。每一個(gè)基本單位稱為一個(gè)存儲(chǔ)單元。一個(gè)存儲(chǔ)器是由許多的存儲(chǔ)單元構(gòu)成的,如某存儲(chǔ)器的容量為32KB,1MB,128MB等等。為了區(qū)分這些不同的存儲(chǔ)單元,一般使用單元地址來指示各個(gè)存儲(chǔ)單元。如一個(gè)10位二進(jìn)制數(shù)表示的地址,可以用來區(qū)分210=1024=1K個(gè)單元。存儲(chǔ)器地址0000000000000000000100000000101111111111…………4習(xí)慣上將CPU與主存儲(chǔ)器合稱為主機(jī)在計(jì)算機(jī)中,除了主存儲(chǔ)器之外,一般還配置有輔助存儲(chǔ)器,簡(jiǎn)稱輔存。由于它的位置是在主機(jī)之外,因此也叫做外存。3、輸入輸出設(shè)備及接口輸入設(shè)備將外部信息(程序、數(shù)據(jù)和命令)送入計(jì)算機(jī)。包括鍵盤、鼠標(biāo)等。輸出設(shè)備將計(jì)算機(jī)處理后的結(jié)果轉(zhuǎn)換為人或其它系統(tǒng)能識(shí)別的信息形式向外輸出。如顯示器、打印機(jī)等。有的設(shè)備既具有輸入功能又具有輸出功能。如磁盤、磁帶、觸摸顯示屏等。5由于I/O設(shè)備的工作速度、工作原理以及所處理的信息格式等與主機(jī)相差很大,因此I/O設(shè)備要通過I/O接口才能與系統(tǒng)總線連接。I/O接口是主機(jī)與I/O設(shè)備之間設(shè)置的邏輯控制部件。通過它實(shí)現(xiàn)主機(jī)與I/O設(shè)備間的信息傳送。4、系統(tǒng)總線系統(tǒng)總線將CPU、存儲(chǔ)器和I/O設(shè)備連接起來,用于傳送各大部件之間的信息。系統(tǒng)總線包括地址總線、數(shù)據(jù)總線和控制總線三組。它們分別用于傳送不同的信息。6二、Intel8086/8088CPU的功能結(jié)構(gòu)指令是構(gòu)成匯編語言程序的最基本單位。就象高級(jí)語言中的一個(gè)語句。程序是由一系列的指令——指令序列構(gòu)成。CPU執(zhí)行指令序列就是重復(fù)執(zhí)行以下兩個(gè)步驟:

從存儲(chǔ)器中取指令執(zhí)行指令所規(guī)定的功能7這兩個(gè)步驟的執(zhí)行又可以分為兩種情況:1.串行方式取指執(zhí)行存數(shù)取指執(zhí)行取指取數(shù)執(zhí)行忙閑忙忙閑忙忙閑CPU外部總線特點(diǎn):(1)當(dāng)CPU在執(zhí)行指令時(shí),不需要占用外部總線,但此時(shí)總線也不能作它用,因此外部總線的空閑時(shí)間比較多。(2)在從存儲(chǔ)器取指令或數(shù)據(jù)時(shí),總線處于忙狀態(tài),其所占用的時(shí)間也較長。但CPU卻只需要使用很短的時(shí)間去處理。因此大部分時(shí)間都是處于閑置狀態(tài)。采用串行工作方式的計(jì)算機(jī)其運(yùn)行速度較慢時(shí)間82.指令流水線結(jié)構(gòu)AHALBHBLCHCLDISPBPSI地址加法器IPCSDSSSES總線控制邏輯暫存器標(biāo)志寄存器ALUEU控制器123456控制信號(hào)16位數(shù)據(jù)總線段寄存器通用寄存器組外部總線16位CPU內(nèi)總線AXBXCX20位地址總線指令隊(duì)列執(zhí)行單元(EU)總線接口單元(BIU)9(1)執(zhí)行單元EUEU的主要任務(wù)是分析與執(zhí)行指令,它包括:A、從指令隊(duì)列中取出指令代碼,由控制器譯碼后產(chǎn)生相應(yīng)的控制信號(hào),控制各部件完成指令規(guī)定的操作。B、對(duì)操作數(shù)執(zhí)行各種指定的算術(shù)或邏輯運(yùn)算C、向BIU發(fā)送訪問主存或I/0的命令,并提供相應(yīng)的地址和傳送的數(shù)據(jù)10(2)總線線接口單元元BIUBIU負(fù)責(zé)責(zé)CPU與與存儲(chǔ)器、、I/0的的信息傳送送。具體功功能包括::A、取指令令——根據(jù)據(jù)CS寄存存器和指令令指針I(yè)P形成20位的物理理地址,從從該地址指指定的存儲(chǔ)儲(chǔ)器單元中中取出指令令,并暫存存到指令隊(duì)隊(duì)列中,等等待EU取取走并執(zhí)行行。B、存取數(shù)數(shù)據(jù)——在在EU執(zhí)行行指令的過過程中,如如果需要與與存儲(chǔ)器或或I/O端端口傳送數(shù)數(shù)據(jù)時(shí),根根據(jù)EU提提供的數(shù)據(jù)據(jù)和地址,,并結(jié)合相相應(yīng)的段寄寄存器(DS、ES或SS))的內(nèi)容,,進(jìn)入外部部總線周期期,與存儲(chǔ)儲(chǔ)器或I/0進(jìn)行數(shù)數(shù)據(jù)的存取取。EU和BIU是既分分工又合作作的兩個(gè)獨(dú)獨(dú)立部分。。它們的操操作在一定定程序上是是并行工作作的,分別別完成不同同的任務(wù),,因而大大大加快了指指令執(zhí)行速速度。11Intel8086/8088運(yùn)運(yùn)行時(shí)執(zhí)執(zhí)行過程大大致如下圖圖所示。執(zhí)行執(zhí)行執(zhí)行執(zhí)行忙存數(shù)取數(shù)取指取指取指取指忙忙忙忙忙EUBIU外部總線時(shí)間…...…...…...等待122.2Intel8086/8088CPU寄存存器結(jié)構(gòu)及及其用途一、通用寄寄存器AHALBHBLCHCLDHDLAXBXCXDXSPBPSIDIIPFLAGSDSESSSCS累加器基址寄存器器計(jì)數(shù)寄存器器數(shù)據(jù)寄存器器堆棧寄存器器基址寄存器器源變址寄存存器目的變址寄寄存器指令指針標(biāo)志寄存器器堆棧段寄存存器代碼段寄存存器數(shù)據(jù)段寄存存器附加段寄存存器通用寄存器器8個(gè)控制寄存器器2個(gè)段寄存器4個(gè)13Intel8086/8088有8個(gè)16位位通用寄存存器,它們們一般不只只用作某個(gè)個(gè)特定的功功能,而是是具有良好好的通用性性,可以由由程序設(shè)計(jì)計(jì)人員進(jìn)行行編程訪問問。1.數(shù)據(jù)據(jù)寄存器它包括AX、BX、、CX和DX四個(gè)寄寄存器。它它們中的每每一個(gè)既可可以是16位寄存器器,也可以以分成兩個(gè)個(gè)8位寄存存器使用。。即可以當(dāng)當(dāng)作8個(gè)獨(dú)獨(dú)立的8位位寄存器使使用。數(shù)據(jù)寄存器器既可以用用來存放參參加運(yùn)算的的操作數(shù),,也可以存存放運(yùn)算的的結(jié)果。在在多數(shù)情況況下,使用用這些寄存存器時(shí)必須須在指令中中指明。例:MOVAX,BX;將BX的內(nèi)容容送到AX中ADDCH,DH;將DH和CH的的內(nèi)容相加加,結(jié)果送送到CH14在有些指令令中,不需需要明確指指出使用的的寄存器名名,即隱念念使用了某某寄存器,,稱為隱含含使用。例如,在循循環(huán)指令LOOP中,CX被隱含含指定作循循環(huán)次數(shù)計(jì)計(jì)數(shù)用。另外,個(gè)別別指令對(duì)寄寄存器有特特定的使用用,并且又又必須在指指令中指明明它的名字字,這類寄寄存器的使使用稱為特特定使用。。例如,在移移位指令((SHLAX,,CL)中中,CL被被固定用作作移位次數(shù)數(shù)。2.指針針寄存器指針寄存器器有堆棧指指針SP和和基址指針針BP它們一般被被用作16位地址指指針,在形形成20位位的物理地地址時(shí)常被被作為偏移移量使用。。15SP指針———在進(jìn)行行堆棧操作作時(shí),被隱隱含使用,,指向堆棧棧頂部單元元。BP指針———被用來來指向堆棧棧段內(nèi)某一一存儲(chǔ)單元元。BP除除用作地址址指針外也也可以象數(shù)數(shù)據(jù)寄存器器一樣,,存放參加加運(yùn)算的操操作數(shù)和運(yùn)運(yùn)算的結(jié)果果。3.變變址寄存器器有兩個(gè)16位的變址址寄存器SI和DI,一般被被用來作地地址指針。。SI——源源變址寄存存器DI——目目的變址寄寄存器同BP寄存存器一樣,,SI和DI也可以以用作通用用數(shù)據(jù)寄存存器存放操操作數(shù)和運(yùn)運(yùn)算結(jié)果。。16二、段寄存存器8086/8088CPU在在使用存儲(chǔ)儲(chǔ)器時(shí),將將它劃分成成若干個(gè)段段。每個(gè)段段用來存放放不同目的的內(nèi)容,如如程序代碼碼、數(shù)據(jù)等等等。每個(gè)個(gè)存儲(chǔ)段用用一個(gè)段寄寄存器來指指明該段的的起始位置置(也叫段段基址)。?!a段數(shù)據(jù)段堆棧段附加段ESCSDSSS段寄存器段基址段基址段基址段基址17CPU在訪訪問存儲(chǔ)器器時(shí)必須指指明兩個(gè)內(nèi)內(nèi)容:(1)所訪訪問的存儲(chǔ)儲(chǔ)單元屬于于哪個(gè)段,,即指明使使用的段寄寄存器。(2)該存存儲(chǔ)單元與與段起始地地址(段基基址)的偏偏移大小,,即偏移量量。在程序設(shè)計(jì)計(jì)中,一個(gè)個(gè)程序?qū)⒋娲鎯?chǔ)器劃分分成多少個(gè)個(gè)存儲(chǔ)段是是任意的。。但在程序序運(yùn)行的任任何時(shí)刻最最多只能有有用CS、、DS、ES和SS分別指定定的4個(gè)當(dāng)當(dāng)前段。18三、指令指指針I(yè)PCPU在運(yùn)運(yùn)行程序時(shí)時(shí),以IP的內(nèi)容作作為將要執(zhí)執(zhí)行指令在在內(nèi)存中的的存放地址址的偏移量量,以段寄寄存器CS作為代碼碼段的基址址指針,即即以CS和和IP的內(nèi)內(nèi)容共同構(gòu)構(gòu)成了一條條指令的存存放地址。。CPU根據(jù)據(jù)CS和IP寄存器器的內(nèi)容到到內(nèi)存中去去取指令,,當(dāng)取出一一條指令后后,IP內(nèi)內(nèi)容自動(dòng)修修改為指向向下一條指指令。.........CSIP偏移量代碼段基址址CPU下一條指令令正在執(zhí)行的的指令19子程序調(diào)用用指令CALL,將將IP原有有內(nèi)容自動(dòng)動(dòng)壓入堆棧棧,而將子子程序的入入口地址偏偏移量自動(dòng)動(dòng)送入IP,而返回回指令RET,又自自動(dòng)從堆棧棧中彈回原原有IP的的內(nèi)容。轉(zhuǎn)移指令將將指令中的的目的地址址的偏移量量送入IP例如,下面面兩種指令令就可以自自動(dòng)改變IP寄存器器的內(nèi)容。。注意:IP的內(nèi)內(nèi)容不能被被直接進(jìn)行行訪問,即即不能用指指令去讀IP的值,,也不能能用指令給給它賦值。。但是可以以通過某些些指令的執(zhí)執(zhí)行而自動(dòng)動(dòng)修改IP的內(nèi)容。。20四、標(biāo)志寄寄存器標(biāo)志寄存器器是用來反反映CPU在程序運(yùn)運(yùn)行時(shí)的某某些狀態(tài),,如是否有有進(jìn)位、奇奇偶性、結(jié)結(jié)果的符號(hào)號(hào)、結(jié)果是是否為零等等等。8086/8088CPU中中標(biāo)志寄存存器的長度度為16位位,但其中中只有9位位才有意義義。1514131211109876543210OFDFIFTFSFZFAFPFCF進(jìn)位位奇偶位零值位輔助進(jìn)位位位單步標(biāo)志位位符號(hào)位中斷允許位位方向位溢出位211.進(jìn)位位位CF在進(jìn)行算術(shù)術(shù)運(yùn)算時(shí),,若最高位位(對(duì)字操操作是第15位,字字節(jié)操作是是第7位))產(chǎn)生進(jìn)位位或借位時(shí)時(shí)CF被自自動(dòng)置“1”,否則則置“0””。在移位類指指令中,CF也被用用來存放從從最高位((左移時(shí)))或最低位位(右移時(shí)時(shí))移出的的數(shù)值(0或1)。。2.奇偶偶位PF當(dāng)指令操作作結(jié)果的低低8位中含含有1的個(gè)個(gè)數(shù)為偶數(shù)數(shù)時(shí),則PF被置1,否則PF被置0。注意:PF只反反映操作結(jié)結(jié)果的低8位的奇偶偶性,與指指令操作數(shù)數(shù)的長度無無關(guān)。223.輔助助進(jìn)位位AF在進(jìn)行算術(shù)術(shù)運(yùn)算時(shí),,若低字節(jié)節(jié)的低四位位向高4位位產(chǎn)生進(jìn)位位或借位,,即第3位位產(chǎn)生進(jìn)位位或借位時(shí)時(shí),AF位位被置1,,否則置0。AF標(biāo)標(biāo)志位用于于十進(jìn)制運(yùn)運(yùn)算的調(diào)整整。注意:AF只反映映運(yùn)算結(jié)果果低八位,,與操作數(shù)數(shù)長度無關(guān)關(guān)。4.零值值位ZF若運(yùn)算結(jié)果果各位全為為0,則ZF被置1,否則置置0。5.符號(hào)號(hào)位SF將運(yùn)算結(jié)果果視為帶符符號(hào)數(shù),當(dāng)當(dāng)運(yùn)算結(jié)果果為負(fù)數(shù)時(shí)時(shí)SF被置置1,為正正數(shù)時(shí),則則置0。23由于第7位位是字節(jié)操操作數(shù)的符符號(hào)位,而而第15位位是字操作作數(shù)的符號(hào)號(hào)位,因此此,SF位位與運(yùn)算結(jié)結(jié)果的最高高位(第7位或第15位)相相一致。6.溢出位位OF當(dāng)運(yùn)算結(jié)果果超過機(jī)器器用補(bǔ)碼所所能表示數(shù)數(shù)的范圍時(shí)時(shí),則OF置1,否否則置0.字節(jié)數(shù)據(jù)據(jù),機(jī)器器用補(bǔ)碼碼所能表表示的數(shù)數(shù)范圍為為-128—+127。字?jǐn)?shù)據(jù)的的表示范范圍為::-32768—+32767注意:溢出與進(jìn)進(jìn)位是兩兩個(gè)完全全不同的的概念,,不能相相互混淆淆。24例如:計(jì)計(jì)算-85D+((-1D)=-86D10101011B+)11111111B10101010B1-86D計(jì)算100D+100D=200D01100100B+)01100100B11001000B-56DCF=0,OF=1,結(jié)果果發(fā)生溢溢出,即即結(jié)果出出錯(cuò)。進(jìn)位被丟丟棄CF=1,OF=0,結(jié)果果正確。。25計(jì)算-85D+-117D=-202D10101011B+)10001011B00110110B54D1CF=1,OF=1,結(jié)果果發(fā)生溢溢出,即即結(jié)果出出錯(cuò)。7.單單步標(biāo)志志位TF(TraceFlag))單步標(biāo)志志也叫跟跟蹤位,,該標(biāo)志志為控制制標(biāo)志位位,當(dāng)TF位被被設(shè)置為為1時(shí),,每執(zhí)行行一條指指令后,,CPU暫停運(yùn)運(yùn)行,即即產(chǎn)生單單步中斷斷。單步步標(biāo)志位位供調(diào)試試程序使使用。268.中中斷允允許位IF該標(biāo)志位位為控制制標(biāo)志位位。當(dāng)IF被設(shè)設(shè)置為1時(shí),CPU可可以響應(yīng)應(yīng)可屏蔽蔽中斷,,否則不不允許響響應(yīng)可屏屏蔽中斷斷。9.方方向位位DFDF也是是控制標(biāo)標(biāo)志位。。它被用用來規(guī)定定串操作作指令的的增減方方向。當(dāng)當(dāng)DF=0時(shí),,串操作作指令自自動(dòng)使變變址寄存存器(SI和DI)的的內(nèi)容遞遞增。當(dāng)當(dāng)DF=1時(shí),,串操作作指令自自動(dòng)使變變址寄存存器的內(nèi)內(nèi)容遞減減。272.3存存儲(chǔ)器一、存儲(chǔ)儲(chǔ)器的組組成1.存存儲(chǔ)器是是由若干干個(gè)存儲(chǔ)儲(chǔ)單元構(gòu)構(gòu)成存儲(chǔ)單元元的多少少就表示示了存儲(chǔ)儲(chǔ)器的容容量。2.每每個(gè)存儲(chǔ)儲(chǔ)單元存存放相同同長度的的二進(jìn)制制數(shù)一個(gè)存儲(chǔ)儲(chǔ)單元的的長度一一般為8位二進(jìn)進(jìn)制數(shù),,稱為一一個(gè)字節(jié)節(jié)(BYTE)。3.每每個(gè)存儲(chǔ)儲(chǔ)單元有有一個(gè)唯唯一的地地址編碼碼——地地址8086/8088CPU具具有20根地址址線,即即它可以以產(chǎn)生20位的的地址碼碼,它的的存儲(chǔ)器器尋址能能力為220,即1兆兆字節(jié)空空間。28這一兆字字節(jié)存儲(chǔ)儲(chǔ)單元的的地址范范圍為::00……...0~11…...1。如如圖所示示。20位20位…...07存儲(chǔ)單元元(字節(jié)節(jié))二進(jìn)制數(shù)數(shù)地址000000000000000000000000000000000000000100000000000000000010…...1111111111111111111011111111111111111111十六進(jìn)制制數(shù)地址址00000H00001H00002HFFFFEHFFFFFH…...為了方便便書寫,,在源程程序中常常用5位位十六進(jìn)進(jìn)制數(shù)或或一個(gè)符符號(hào)來表表示一個(gè)個(gè)存儲(chǔ)單單元的地地址。294.任任何兩兩個(gè)相鄰鄰字節(jié)單單元就構(gòu)構(gòu)成一個(gè)個(gè)字單元元一個(gè)字存存儲(chǔ)單元元(WORD))的長度度為16位二進(jìn)進(jìn)制數(shù),,即兩個(gè)個(gè)字節(jié)。。字單元元的地址址為兩個(gè)個(gè)字節(jié)單單元中較較小地址址字節(jié)單單元的地地址。16位長長數(shù)據(jù)的的存放規(guī)規(guī)則是低低8位放放在較低低地址字字節(jié)單元元中,高高8位放放在較高高地址字字節(jié)單元元中。例如,將將數(shù)據(jù)3456H放在在地址為為09235H的存儲(chǔ)儲(chǔ)單元中中的存儲(chǔ)儲(chǔ)分配如如圖所示示。......地址存儲(chǔ)單元元09235H09236H5634305、在定定義一個(gè)個(gè)地址時(shí)時(shí)必須指指出是字字節(jié)或字字類型屬屬性由于存儲(chǔ)儲(chǔ)單元可可分為字字單元和和字節(jié)單單元,因因此8086/8088CPU訪問問內(nèi)存的的指令中中,分為為字節(jié)訪訪問和字字訪問兩兩種指令令。二、存儲(chǔ)儲(chǔ)器的段段結(jié)構(gòu)8086/8088系系統(tǒng)的存存儲(chǔ)器段段結(jié)構(gòu)具具有以下下幾個(gè)特特點(diǎn):1.8086/8088CPU將1MB的存存儲(chǔ)空間間劃分成成若干個(gè)個(gè)段,每每個(gè)段最最大長度度為64K(65536)個(gè)個(gè)字節(jié)單單元組成成。在8086/8088的匯編編程序中中,用戶戶可以根根據(jù)自己己需要來來設(shè)定段段的個(gè)數(shù)數(shù)、各個(gè)個(gè)段長度度和每個(gè)個(gè)段的用用途。并并且代碼碼或數(shù)據(jù)據(jù)可以存存放在段段內(nèi)任意意單元中中。312.每每個(gè)段的的基址必必須是一一個(gè)小節(jié)節(jié)的首址址。段基址———一個(gè)個(gè)段的起起始地址址。在存儲(chǔ)器器中規(guī)定定從0地地址開始始,每16個(gè)字字節(jié)單元元稱為一一個(gè)小節(jié)節(jié)(Paragraph)。。因此,,1MB內(nèi)存就就可劃分分為64K個(gè)小小節(jié)。第1小小節(jié)::00000H,00001H,00002H………0000FH第2小小節(jié)::00010H,00011H,00012H………0011FH第65535小小節(jié):FFFE0HFFFE1HFFFE2H………FFFEFH第65536小小節(jié):FFFF0HFFFF1HFFFF2H………FFFFFH…..…..…..…..…..可以看出出,每個(gè)小節(jié)節(jié)的首地地址最低低位必為為0(16進(jìn)制制數(shù)表示示)。因此段段基址只只能是上上述64K個(gè)小小節(jié)首址址之一。。323.邏邏輯輯段在在物理理存儲(chǔ)儲(chǔ)器中中可以以是鄰鄰接的的、間間隔的的、部部分重重疊的的和完完全重重疊的的等4種情情況。。邏輯段段是指指在匯匯編語語言源源程序序中設(shè)設(shè)置的的段。。內(nèi)存中中的一一個(gè)物物理存存儲(chǔ)單單元可可以映映象到到一個(gè)個(gè)或多多個(gè)邏邏輯段段中。。物理存存儲(chǔ)器器00000H10000HDA_BYTE段1段2段3段4段5鄰接部分重重疊完全重重疊間隔邏輯段段0FFFFFHDA_BYTE物理單單元可可以映映象到到邏輯輯段2、段段3和和段4中。。334、在在任一一時(shí)刻刻,一一個(gè)程程序只只能訪訪問4個(gè)段段中的的內(nèi)容容。4個(gè)段段分別別是代代碼段段、數(shù)數(shù)據(jù)段段、堆堆棧段段和附附加段段,稱稱為當(dāng)當(dāng)前段段。。4個(gè)個(gè)段寄寄存器器CS、DS、、SS和ES分分別保保存了了它們們段基基址的的高16位位地址址,稱稱為段段基值值。段段基址址的最最低4位為為0。。(小小節(jié)首首址的的低4位為為全0))。三、邏邏輯輯地址址與物物理地地址及及相互互關(guān)系系1.物物理理地址址在1MB的的存儲(chǔ)儲(chǔ)空間間中,,每個(gè)個(gè)存儲(chǔ)儲(chǔ)單元元的物物理地地址是是唯一一的,,它就就是該該存儲(chǔ)儲(chǔ)單元元的20位位地址址。8086/8088的物物理地地址范范圍::00000H~0FFFFFH34CPU與存存儲(chǔ)器器之間間的任任何信信息交交換都都使用用物理理地址址。2.邏邏輯輯地址址在程序序設(shè)計(jì)計(jì)中,,為了了便于于程序序的開開發(fā)和和對(duì)存存儲(chǔ)器器進(jìn)行行動(dòng)態(tài)態(tài)管理理,使使用了了邏輯輯地址址。一個(gè)邏邏輯地地址包包括兩兩個(gè)部部分::段基基值和和偏移移量((OFFSET)段基值值:存放放在某某一個(gè)個(gè)段寄寄存器器中,,是一一個(gè)邏邏輯段段的起起始單單元地地址((段基基址))的高高16位。。偏移量量:表示示某個(gè)個(gè)存儲(chǔ)儲(chǔ)單元元與它它所在在段的的段基基址之之間的的字節(jié)節(jié)距離離。當(dāng)偏移移量為為0時(shí)時(shí),就就是這這個(gè)段段的起起始單單元,,而偏偏移量量為0FFFFFH時(shí),,就是是這個(gè)個(gè)段的的最后后一個(gè)個(gè)字節(jié)節(jié)單元元。35邏輯地地址的的表示示方法法是段基值值:偏偏移量量例:3267H:00A0H它表示示該邏邏輯單單元位位于段段起始始地址址為32670H,,段內(nèi)內(nèi)偏移移量為為00A0H個(gè)個(gè)字節(jié)節(jié)。3.邏邏輯地地址轉(zhuǎn)轉(zhuǎn)換為為物理理地址址當(dāng)CPU要要訪問問存儲(chǔ)儲(chǔ)器時(shí)時(shí),需需要由由總線線接口口單元元BIU將將邏輯輯地址址轉(zhuǎn)換換成物物理地地址。。轉(zhuǎn)換方方法::將邏邏輯地地址的的段基基值左左移4位,,形成成20位的的段基基址((低位位為0)然然后與與16位的的偏移移量相相加,,結(jié)果果即為為20位的的物理理地址址。其其轉(zhuǎn)換換示例例如圖圖所示示。36段1:2B0H段2:2C0H002D3H偏移量量23H偏移量量13H0915H003AH09150H003AH+)0918AH偏移量量段基值值邏輯地地址物理地地址右圖表表示同同一個(gè)個(gè)物理理地址址002D3H被被被兩個(gè)個(gè)邏輯輯段中中的邏邏輯地地址映映射。。002B0H+00023H=002D3H002C0H+00013H=002D3H374.邏邏輯地地址的的來源源在程序序的執(zhí)執(zhí)行過過程中中,CPU根據(jù)據(jù)不同同操作作類型型訪問問存儲(chǔ)儲(chǔ)器,,其邏邏輯地地址中中段基基值和和偏移移量的的來源源是不不一樣樣的。。下表表是各各種操操作類類型所所對(duì)應(yīng)應(yīng)的邏邏輯地地址的的來源源。邏輯地地址隱含來來源允許替替代來來源偏移量量(OFFSET)操作類類型序號(hào)123456取指令令堆棧操操作取源串串存目的的串以BP作基基址存取一一般變變量DICSSSDSESSSDSIPSPSI有效地地址EA有效地地址EA無無CS,,SS,ES無CS,,DS,ESCS,,SS,ES段基值值38說明::(1))允許許替代代來源源也叫叫做段段超越越,它它表示示了段段基值值除使使用隱隱含的的段寄寄存器器外是是否可可以指指定其其它段段寄存存器來來提供供。(2))有效效地址址EA,它它表示示根據(jù)據(jù)指令令所采采用的的尋址址方式式(下下一章章介紹紹)計(jì)計(jì)算出出來的的段內(nèi)內(nèi)偏移移量。。392.4堆堆棧及及其操操作方方法堆棧是是一個(gè)個(gè)特定定的存存儲(chǔ)區(qū)區(qū),訪訪問該該存儲(chǔ)儲(chǔ)區(qū)必必須按按照指指定的的規(guī)則則進(jìn)行行操作作。堆棧一一般分分為::和專用堆堆棧存存儲(chǔ)器器軟件堆堆棧按堆棧棧的工工作方方式專專門設(shè)設(shè)計(jì)的的存儲(chǔ)儲(chǔ)器專用堆堆棧存存儲(chǔ)器器軟件堆堆棧由程序序設(shè)計(jì)計(jì)人員員用軟軟件在在內(nèi)存存儲(chǔ)器器中劃劃出的的一塊塊存儲(chǔ)儲(chǔ)區(qū)作作為堆堆棧來來使用用。8086/8088就是是這種種方式式。堆棧的的用途途:主要用用于暫暫存數(shù)數(shù)據(jù)以以及在在過程程調(diào)用用或處處理中中斷時(shí)時(shí)保存存斷點(diǎn)點(diǎn)信息息。一、堆堆棧的的構(gòu)造造40堆棧已存放放數(shù)據(jù)據(jù)TOPBottom......主存00000H堆棧的的一端端是固固定的的,稱稱為棧底。棧底底是堆堆棧存存儲(chǔ)區(qū)區(qū)的最最大地地址單單元。。另一端端是浮浮動(dòng)的的,稱稱為棧頂。在任任何時(shí)時(shí)刻,,棧頂頂是最最后存存入信信息的的存儲(chǔ)儲(chǔ)單元元。棧棧頂是是隨著著堆棧棧中存存放信信息的的多少少而改改變。。為了指指示現(xiàn)現(xiàn)在堆堆棧中中存放放數(shù)據(jù)據(jù)位置置,通通常設(shè)設(shè)置一一個(gè)寄寄存器器來指指示棧棧頂位位置。。其內(nèi)內(nèi)容就就象一一個(gè)指指針一一樣,,因此此被稱稱為堆堆棧指指針SP((StackPointer))。SP的的內(nèi)容容始終終指向向棧頂頂單元元堆棧中中數(shù)據(jù)據(jù)進(jìn)出出都由由SP來控控制41在堆棧棧中存存取數(shù)數(shù)據(jù)的的規(guī)則則是::“先先進(jìn)后后出FILO””(First-InLost-Out)。。即最最先送送入堆堆棧的的數(shù)據(jù)據(jù)要到到最后后才能能取出出,而而最后后送入入堆棧棧的數(shù)數(shù)據(jù),,最先先取出出。二、8086/8088堆棧棧的組組織在8086/8088微微機(jī)中中堆棧棧是由由堆棧棧段寄寄存器器SS指定定的一一段存存儲(chǔ)區(qū)區(qū)。SSSP堆棧BottomTopXXXXXXXXXXXX堆棧初初始化化時(shí)的的SP42堆棧頂頂部由由椎棧棧指針針SP指示示。SP中中內(nèi)容容始終終表示示堆棧棧段基基址與與棧頂頂之間間的距距離((字節(jié)節(jié)數(shù)))。當(dāng)當(dāng)SP內(nèi)容容為最最大值值時(shí),,表示示堆棧棧為空空。而而當(dāng)((SP)=0時(shí)時(shí),表表示堆堆棧全全滿。。當(dāng)SP被初初始化化時(shí),,指向向棧底底+2單元元,其其值就就是個(gè)個(gè)堆棧棧的長長度。。由于于SP是16位位寄存存器,,因此此堆棧棧最大大64K字字節(jié)數(shù)據(jù)在在堆棧棧中的的存放放格式式是::以字字為單單位存存放,,數(shù)據(jù)據(jù)的低低8位位放在在較低低地址址單元元,高高8位位放在在較高高地址址單元元。當(dāng)用戶戶程序序中要要求的的堆棧棧長度度超過過一個(gè)個(gè)堆棧棧段的的最大大長度度64KB時(shí),,可以以設(shè)置置幾個(gè)個(gè)堆棧棧段。。通過過改變變堆棧棧段寄寄存器器SS的內(nèi)內(nèi)容,,即可可改變變到另另一個(gè)個(gè)堆棧棧段,,當(dāng)改改變了了堆棧棧段寄寄存器器SS的內(nèi)內(nèi)容后后,必必須緊緊接著著賦與與SP新值值。43三、堆堆棧棧操作作1.設(shè)設(shè)置堆堆棧設(shè)置堆堆棧主主要是是對(duì)堆堆棧段段寄存存器SS和和堆棧棧指針針SP賦值值。例如::STACK1SEGMEMTPARASTACKDB100DUP(0)STACK1ENDS第一行行中的的PARASTACK就是是用來來說明明本段段為堆堆棧段段。當(dāng)程序序經(jīng)過過匯編編、連連接并并裝入入內(nèi)存存時(shí),,系統(tǒng)統(tǒng)將自自動(dòng)為為其分分配一一個(gè)存存儲(chǔ)區(qū)區(qū)作為為堆棧棧段,,將這這個(gè)段段的段段基址址的高高16位送送入SS中中,而而將程程序指指定的的字節(jié)節(jié)單元元數(shù)100(64H)賦賦值給給SP,這這樣堆堆棧就就被設(shè)設(shè)置好好了。。442.進(jìn)進(jìn)棧PUSH進(jìn)棧就就是把把數(shù)據(jù)據(jù)存入入堆棧棧。由由指令令PUSH或者者由機(jī)機(jī)器自自動(dòng)實(shí)實(shí)現(xiàn),,可以以將通通用寄寄存器器、段段寄存存器或或字存存儲(chǔ)單單元的的內(nèi)容容壓入入堆棧棧頂部部。例:PUSHAX;將寄存存器AX的的內(nèi)

溫馨提示

  • 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)論