




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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
1IBM-PC微機(jī)組成原理IBM-PC微機(jī)基本結(jié)構(gòu)一、微機(jī)的微處理器CPU主存儲(chǔ)器I/O接口I/O設(shè)備I/O接口I/O設(shè)備地址總線數(shù)據(jù)總線控制總線系統(tǒng)總線微機(jī)硬件系統(tǒng)基本組成框圖2微處理器主存儲(chǔ)器I/O接口I/O設(shè)備I/O接口I/O設(shè)備地址1、中央處理器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)來(lái)標(biāo)識(shí),稱為存儲(chǔ)單元的地址。對(duì)每個(gè)存儲(chǔ)單元內(nèi)容的存和取是按照地址進(jìn)行訪問(wèn)的。31、中央處理器CPU微型計(jì)算機(jī)中的中央處理器計(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ǔ)單元,一般使用單元地址來(lái)指示各個(gè)存儲(chǔ)單元。如一個(gè)10位二進(jìn)制數(shù)表示的地址,可以用來(lái)區(qū)分210=1024=1K個(gè)單元。存儲(chǔ)器地址0000000000000000000100000000101111111111…………4計(jì)算機(jī)存儲(chǔ)信息的基本單位是一個(gè)二進(jìn)制位,一位可存儲(chǔ)一個(gè)二進(jìn)制習(xí)慣上將CPU與主存儲(chǔ)器合稱為主機(jī)在計(jì)算機(jī)中,除了主存儲(chǔ)器之外,一般還配置有輔助存儲(chǔ)器,簡(jiǎn)稱輔存。由于它的位置是在主機(jī)之外,因此也叫做外存。3、輸入輸出設(shè)備及接口輸入設(shè)備將外部信息(程序、數(shù)據(jù)和命令)送入計(jì)算機(jī)。包括鍵盤(pán)、鼠標(biāo)等。輸出設(shè)備將計(jì)算機(jī)處理后的結(jié)果轉(zhuǎn)換為人或其它系統(tǒng)能識(shí)別的信息形式向外輸出。如顯示器、打印機(jī)等。有的設(shè)備既具有輸入功能又具有輸出功能。如磁盤(pán)、磁帶、觸摸顯示屏等。5習(xí)慣上將CPU與主存儲(chǔ)器合稱為主機(jī)在計(jì)算機(jī)由于I/O設(shè)備的工作速度、工作原理以及所處理的信息格式等與主機(jī)相差很大,因此I/O設(shè)備要通過(guò)I/O接口才能與系統(tǒng)總線連接。I/O接口是主機(jī)與I/O設(shè)備之間設(shè)置的邏輯控制部件。通過(guò)它實(shí)現(xiàn)主機(jī)與I/O設(shè)備間的信息傳送。4、系統(tǒng)總線系統(tǒng)總線將CPU、存儲(chǔ)器和I/O設(shè)備連接起來(lái),用于傳送各大部件之間的信息。系統(tǒng)總線包括地址總線、數(shù)據(jù)總線和控制總線三組。它們分別用于傳送不同的信息。6由于I/O設(shè)備的工作速度、工作原理以及所處理二、Intel8086/8088CPU的功能結(jié)構(gòu)指令是構(gòu)成匯編語(yǔ)言程序的最基本單位。就象高級(jí)語(yǔ)言中的一個(gè)語(yǔ)句。程序是由一系列的指令——指令序列構(gòu)成。CPU執(zhí)行指令序列就是重復(fù)執(zhí)行以下兩個(gè)步驟:
從存儲(chǔ)器中取指令執(zhí)行指令所規(guī)定的功能7二、Intel8086/8088CPU的功能結(jié)構(gòu)這兩個(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í)間也較長(zhǎng)。但CPU卻只需要使用很短的時(shí)間去處理。因此大部分時(shí)間都是處于閑置狀態(tài)。采用串行工作方式的計(jì)算機(jī)其運(yùn)行速度較慢時(shí)間8這兩個(gè)步驟的執(zhí)行又可以分為兩種情況:1.串行方式取指2.指令流水線結(jié)構(gòu)AHALBHBLCHCLDISPBPSI地址加法器IPCSDSSSES總線控制邏輯暫存器標(biāo)志寄存器ALUEU控制器123456控制信號(hào)16位數(shù)據(jù)總線段寄存器通用寄存器組外部總線16位CPU內(nèi)總線AXBXCX20位地址總線指令隊(duì)列執(zhí)行單元(EU)總線接口單元(BIU)92.指令流水線結(jié)構(gòu)AHALBHBLCHCLDISPBPSI地(1)執(zhí)行單元EUEU的主要任務(wù)是分析與執(zhí)行指令,它包括:A、從指令隊(duì)列中取出指令代碼,由控制器譯碼后產(chǎn)生相應(yīng)的控制信號(hào),控制各部件完成指令規(guī)定的操作。B、對(duì)操作數(shù)執(zhí)行各種指定的算術(shù)或邏輯運(yùn)算C、向BIU發(fā)送訪問(wèn)主存或I/0的命令,并提供相應(yīng)的地址和傳送的數(shù)據(jù)10(1)執(zhí)行單元EUEU的主要任務(wù)是分析與執(zhí)行指令,它包括:A(2)總線接口單元BIUBIU負(fù)責(zé)CPU與存儲(chǔ)器、I/0的信息傳送。具體功能包括:A、取指令——根據(jù)CS寄存器和指令指針I(yè)P形成20位的物理地址,從該地址指定的存儲(chǔ)器單元中取出指令,并暫存到指令隊(duì)列中,等待EU取走并執(zhí)行。B、存取數(shù)據(jù)——在EU執(zhí)行指令的過(guò)程中,如果需要與存儲(chǔ)器或I/O端口傳送數(shù)據(jù)時(shí),根據(jù)EU提供的數(shù)據(jù)和地址,并結(jié)合相應(yīng)的段寄存器(DS、ES或SS)的內(nèi)容,進(jìn)入外部總線周期,與存儲(chǔ)器或I/0進(jìn)行數(shù)據(jù)的存取。EU和BIU是既分工又合作的兩個(gè)獨(dú)立部分。它們的操作在一定程序上是并行工作的,分別完成不同的任務(wù),因而大大加快了指令執(zhí)行速度。11(2)總線接口單元BIUBIU負(fù)責(zé)CPU與存儲(chǔ)器、I/0的信Intel8086/8088運(yùn)行時(shí)執(zhí)行過(guò)程大致如下圖所示。執(zhí)行執(zhí)行執(zhí)行執(zhí)行忙存數(shù)取數(shù)取指取指取指取指忙忙忙忙忙EUBIU外部總線時(shí)間…...…...…...等待12Intel8086/8088運(yùn)行時(shí)執(zhí)行過(guò)程大致如下圖所2.2Intel8086/8088CPU寄存器結(jié)構(gòu)及其用途一、通用寄存器AHALBHBLCHCLDHDLAXBXCXDXSPBPSIDIIPFLAGSDSESSSCS累加器基址寄存器計(jì)數(shù)寄存器數(shù)據(jù)寄存器堆棧寄存器基址寄存器源變址寄存器目的變址寄存器指令指針標(biāo)志寄存器堆棧段寄存器代碼段寄存器數(shù)據(jù)段寄存器附加段寄存器通用寄存器8個(gè)控制寄存器2個(gè)段寄存器4個(gè)132.2Intel8086/8088CPU寄存器結(jié)構(gòu)及其Intel8086/8088有8個(gè)16位通用寄存器,它們一般不只用作某個(gè)特定的功能,而是具有良好的通用性,可以由程序設(shè)計(jì)人員進(jìn)行編程訪問(wèn)。1.數(shù)據(jù)寄存器它包括AX、BX、CX和DX四個(gè)寄存器。它們中的每一個(gè)既可以是16位寄存器,也可以分成兩個(gè)8位寄存器使用。即可以當(dāng)作8個(gè)獨(dú)立的8位寄存器使用。數(shù)據(jù)寄存器既可以用來(lái)存放參加運(yùn)算的操作數(shù),也可以存放運(yùn)算的結(jié)果。在多數(shù)情況下,使用這些寄存器時(shí)必須在指令中指明。例:MOVAX,BX;將BX的內(nèi)容送到AX中ADDCH,DH;將DH和CH的內(nèi)容相加,結(jié)果送到CH14Intel8086/8088有8個(gè)16位在有些指令中,不需要明確指出使用的寄存器名,即隱念使用了某寄存器,稱為隱含使用。例如,在循環(huán)指令LOOP中,CX被隱含指定作循環(huán)次數(shù)計(jì)數(shù)用。另外,個(gè)別指令對(duì)寄存器有特定的使用,并且又必須在指令中指明它的名字,這類寄存器的使用稱為特定使用。例如,在移位指令(SHLAX,CL)中,CL被固定用作移位次數(shù)。2.指針寄存器指針寄存器有堆棧指針SP和基址指針BP它們一般被用作16位地址指針,在形成20位的物理地址時(shí)常被作為偏移量使用。15在有些指令中,不需要明確指出使用的寄存器名,SP指針——在進(jìn)行堆棧操作時(shí),被隱含使用,指向堆棧頂部單元。BP指針——被用來(lái)指向堆棧段內(nèi)某一存儲(chǔ)單元。BP除用作地址指針外也可以象數(shù)據(jù)寄存器一樣,存放參加運(yùn)算的操作數(shù)和運(yùn)算的結(jié)果。3.變址寄存器有兩個(gè)16位的變址寄存器SI和DI,一般被用來(lái)作地址指針。SI——源變址寄存器DI——目的變址寄存器同BP寄存器一樣,SI和DI也可以用作通用數(shù)據(jù)寄存器存放操作數(shù)和運(yùn)算結(jié)果。16SP指針——在進(jìn)行堆棧操作時(shí),被隱含使用,指向堆棧頂部單元。二、段寄存器8086/8088CPU在使用存儲(chǔ)器時(shí),將它劃分成若干個(gè)段。每個(gè)段用來(lái)存放不同目的內(nèi)容,如程序代碼、數(shù)據(jù)等等。每個(gè)存儲(chǔ)段用一個(gè)段寄存器來(lái)指明該段的起始位置(也叫段基址)?!a段數(shù)據(jù)段堆棧段附加段ESCSDSSS段寄存器段基址段基址段基址段基址17二、段寄存器8086/8088CPU在使用存儲(chǔ)CPU在訪問(wèn)存儲(chǔ)器時(shí)必須指明兩個(gè)內(nèi)容:(1)所訪問(wèn)的存儲(chǔ)單元屬于哪個(gè)段,即指明使用的段寄存器。(2)該存儲(chǔ)單元與段起始地址(段基址)的偏移大小,即偏移量。在程序設(shè)計(jì)中,一個(gè)程序?qū)⒋鎯?chǔ)器劃分成多少個(gè)存儲(chǔ)段是任意的。但在程序運(yùn)行的任何時(shí)刻最多只能有用CS、DS、ES和SS分別指定的4個(gè)當(dāng)前段。18CPU在訪問(wèn)存儲(chǔ)器時(shí)必須指明兩個(gè)內(nèi)容:(1)所訪問(wèn)的存儲(chǔ)單元三、指令指針I(yè)PCPU在運(yùn)行程序時(shí),以IP的內(nèi)容作為將要執(zhí)行指令在內(nèi)存中的存放地址的偏移量,以段寄存器CS作為代碼段的基址指針,即以CS和IP的內(nèi)容共同構(gòu)成了一條指令的存放地址。CPU根據(jù)CS和IP寄存器的內(nèi)容到內(nèi)存中去取指令,當(dāng)取出一條指令后,IP內(nèi)容自動(dòng)修改為指向下一條指令。.........CSIP偏移量代碼段基址CPU下一條指令正在執(zhí)行的指令19三、指令指針I(yè)PCPU在運(yùn)行程序時(shí),以IP的子程序調(diào)用指令CALL,將IP原有內(nèi)容自動(dòng)壓入堆棧,而將子程序的入口地址偏移量自動(dòng)送入IP,而返回指令RET,又自動(dòng)從堆棧中彈回原有IP的內(nèi)容。轉(zhuǎn)移指令將指令中的目的地址的偏移量送入IP例如,下面兩種指令就可以自動(dòng)改變IP寄存器的內(nèi)容。
注意:IP的內(nèi)容不能被直接進(jìn)行訪問(wèn),即不能用指令去讀IP的值,也不能用指令給它賦值。但是可以通過(guò)某些指令的執(zhí)行而自動(dòng)修改IP的內(nèi)容。20子程序調(diào)用指令CALL,將IP原有內(nèi)容自動(dòng)壓入堆棧,而將子程四、標(biāo)志寄存器標(biāo)志寄存器是用來(lái)反映CPU在程序運(yùn)行時(shí)的某些狀態(tài),如是否有進(jìn)位、奇偶性、結(jié)果的符號(hào)、結(jié)果是否為零等等。8086/8088CPU中標(biāo)志寄存器的長(zhǎng)度為16位,但其中只有9位才有意義。1514131211109876543210OFDFIFTFSFZFAFPFCF進(jìn)位位奇偶位零值位輔助進(jìn)位位單步標(biāo)志位符號(hào)位中斷允許位方向位溢出位21四、標(biāo)志寄存器標(biāo)志寄存器是用來(lái)反映CPU在程1.進(jìn)位位CF在進(jìn)行算術(shù)運(yùn)算時(shí),若最高位(對(duì)字操作是第15位,字節(jié)操作是第7位)產(chǎn)生進(jìn)位或借位時(shí)CF被自動(dòng)置“1”,否則置“0”。在移位類指令中,CF也被用來(lái)存放從最高位(左移時(shí))或最低位(右移時(shí))移出的數(shù)值(0或1)。2.奇偶位PF當(dāng)指令操作結(jié)果的低8位中含有1的個(gè)數(shù)為偶數(shù)時(shí),則PF被置1,否則PF被置0。
注意:PF只反映操作結(jié)果的低8位的奇偶性,與指令操作數(shù)的長(zhǎng)度無(wú)關(guān)。221.進(jìn)位位CF在進(jìn)行算術(shù)運(yùn)算時(shí),若最高位(對(duì)字操作3.輔助進(jìn)位位AF在進(jìn)行算術(shù)運(yùn)算時(shí),若低字節(jié)的低四位向高4位產(chǎn)生進(jìn)位或借位,即第3位產(chǎn)生進(jìn)位或借位時(shí),AF位被置1,否則置0。AF標(biāo)志位用于十進(jìn)制運(yùn)算的調(diào)整。注意:AF只反映運(yùn)算結(jié)果低八位,與操作數(shù)長(zhǎng)度無(wú)關(guān)。4.零值位ZF若運(yùn)算結(jié)果各位全為0,則ZF被置1,否則置0。5.符號(hào)位SF將運(yùn)算結(jié)果視為帶符號(hào)數(shù),當(dāng)運(yùn)算結(jié)果為負(fù)數(shù)時(shí)SF被置1,為正數(shù)時(shí),則置0。233.輔助進(jìn)位位AF在進(jìn)行算術(shù)運(yùn)算時(shí),若低字由于第7位是字節(jié)操作數(shù)的符號(hào)位,而第15位是字操作數(shù)的符號(hào)位,因此,SF位與運(yùn)算結(jié)果的最高位(第7位或第15位)相一致。6.溢出位OF當(dāng)運(yùn)算結(jié)果超過(guò)機(jī)器用補(bǔ)碼所能表示數(shù)的范圍時(shí),則OF置1,否則置0.字節(jié)數(shù)據(jù),機(jī)器用補(bǔ)碼所能表示的數(shù)范圍為-128—+127。字?jǐn)?shù)據(jù)的表示范圍為:-32768—+32767注意:溢出與進(jìn)位是兩個(gè)完全不同的概念,不能相互混淆。24由于第7位是字節(jié)操作數(shù)的符號(hào)位,而第15位是例如:計(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+(-1D)=-86D10101011計(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)行,即產(chǎn)生單步中斷。單步標(biāo)志位供調(diào)試程序使用。26計(jì)算-85D+-117D=-202D10108.中斷允許位IF該標(biāo)志位為控制標(biāo)志位。當(dāng)IF被設(shè)置為1時(shí),CPU可以響應(yīng)可屏蔽中斷,否則不允許響應(yīng)可屏蔽中斷。9.方向位DFDF也是控制標(biāo)志位。它被用來(lái)規(guī)定串操作指令的增減方向。當(dāng)DF=0時(shí),串操作指令自動(dòng)使變址寄存器(SI和DI)的內(nèi)容遞增。當(dāng)DF=1時(shí),串操作指令自動(dòng)使變址寄存器的內(nèi)容遞減。278.中斷允許位IF該標(biāo)志位為控制標(biāo)志位。2.3存儲(chǔ)器一、存儲(chǔ)器的組成1.存儲(chǔ)器是由若干個(gè)存儲(chǔ)單元構(gòu)成存儲(chǔ)單元的多少就表示了存儲(chǔ)器的容量。2.每個(gè)存儲(chǔ)單元存放相同長(zhǎng)度的二進(jìn)制數(shù)一個(gè)存儲(chǔ)單元的長(zhǎng)度一般為8位二進(jìn)制數(shù),稱為一個(gè)字節(jié)(BYTE)。3.每個(gè)存儲(chǔ)單元有一個(gè)唯一的地址編碼——地址8086/8088CPU具有20根地址線,即它可以產(chǎn)生20位的地址碼,它的存儲(chǔ)器尋址能力為220,即1兆字節(jié)空間。282.3存儲(chǔ)器一、存儲(chǔ)器的組成1.存儲(chǔ)器是由若干個(gè)存儲(chǔ)這一兆字節(jié)存儲(chǔ)單元的地址范圍為:00…...0~11…...1。如圖所示。20位20位…...07存儲(chǔ)單元(字節(jié))二進(jìn)制數(shù)地址000000000000000000000000000000000000000100000000000000000010…...1111111111111111111011111111111111111111十六進(jìn)制數(shù)地址00000H00001H00002HFFFFEHFFFFFH…...為了方便書(shū)寫(xiě),在源程序中常用5位十六進(jìn)制數(shù)或一個(gè)符號(hào)來(lái)表示一個(gè)存儲(chǔ)單元的地址。29這一兆字節(jié)存儲(chǔ)單元的地址范圍為:00…...0~11…...4.任何兩個(gè)相鄰字節(jié)單元就構(gòu)成一個(gè)字單元一個(gè)字存儲(chǔ)單元(WORD)的長(zhǎng)度為16位二進(jìn)制數(shù),即兩個(gè)字節(jié)。字單元的地址為兩個(gè)字節(jié)單元中較小地址字節(jié)單元的地址。16位長(zhǎng)數(shù)據(jù)的存放規(guī)則是低8位放在較低地址字節(jié)單元中,高8位放在較高地址字節(jié)單元中。例如,將數(shù)據(jù)3456H放在地址為09235H的存儲(chǔ)單元中的存儲(chǔ)分配如圖所示。......地址存儲(chǔ)單元09235H09236H5634304.任何兩個(gè)相鄰字節(jié)單元就構(gòu)成一個(gè)字單元5、在定義一個(gè)地址時(shí)必須指出是字節(jié)或字類型屬性由于存儲(chǔ)單元可分為字單元和字節(jié)單元,因此8086/8088CPU訪問(wèn)內(nèi)存的指令中,分為字節(jié)訪問(wèn)和字訪問(wèn)兩種指令。二、存儲(chǔ)器的段結(jié)構(gòu)8086/8088系統(tǒng)的存儲(chǔ)器段結(jié)構(gòu)具有以下幾個(gè)特點(diǎn):1.8086/8088CPU將1MB的存儲(chǔ)空間劃分成若干個(gè)段,每個(gè)段最大長(zhǎng)度為64K(65536)個(gè)字節(jié)單元組成。在8086/8088的匯編程序中,用戶可以根據(jù)自己需要來(lái)設(shè)定段的個(gè)數(shù)、各個(gè)段長(zhǎng)度和每個(gè)段的用途。并且代碼或數(shù)據(jù)可以存放在段內(nèi)任意單元中。315、在定義一個(gè)地址時(shí)必須指出是字節(jié)或字類型屬性2.每個(gè)段的基址必須是一個(gè)小節(jié)的首址。段基址——一個(gè)段的起始地址。在存儲(chǔ)器中規(guī)定從0地址開(kāi)始,每16個(gè)字節(jié)單元稱為一個(gè)小節(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é)的首地址最低位必為0(16進(jìn)制數(shù)表示)。因此段基址只能是上述64K個(gè)小節(jié)首址之一。322.每個(gè)段的基址必須是一個(gè)小節(jié)的首址。段基址——一個(gè)段的起3.邏輯段在物理存儲(chǔ)器中可以是鄰接的、間隔的、部分重疊的和完全重疊的等4種情況。邏輯段是指在匯編語(yǔ)言源程序中設(shè)置的段。內(nèi)存中的一個(gè)物理存儲(chǔ)單元可以映象到一個(gè)或多個(gè)邏輯段中。物理存儲(chǔ)器00000H10000HDA_BYTE段1段2段3段4段5鄰接部分重疊完全重疊間隔邏輯段0FFFFFHDA_BYTE物理單元可以映象到邏輯段2、段3和段4中。333.邏輯段在物理存儲(chǔ)器中可以是鄰接的、間隔的、部分重疊的和4、在任一時(shí)刻,一個(gè)程序只能訪問(wèn)4個(gè)段中的內(nèi)容。4個(gè)段分別是代碼段、數(shù)據(jù)段、堆棧段和附加段,稱為當(dāng)前段。4個(gè)段寄存器CS、DS、SS和ES分別保存了它們段基址的高16位地址,稱為段基值。段基址的最低4位為0。(小節(jié)首址的低4位為全0)。三、邏輯地址與物理地址及相互關(guān)系1.物理地址在1MB的存儲(chǔ)空間中,每個(gè)存儲(chǔ)單元的物理地址是唯一的,它就是該存儲(chǔ)單元的20位地址。8086/8088的物理地址范圍:00000H~0FFFFFH344、在任一時(shí)刻,一個(gè)程序只能訪問(wèn)4個(gè)段中的內(nèi)容。CPU與存儲(chǔ)器之間的任何信息交換都使用物理地址。2.邏輯地址在程序設(shè)計(jì)中,為了便于程序的開(kāi)發(fā)和對(duì)存儲(chǔ)器進(jìn)行動(dòng)態(tài)管理,使用了邏輯地址。一個(gè)邏輯地址包括兩個(gè)部分:段基值和偏移量(OFFSET)段基值:存放在某一個(gè)段寄存器中,是一個(gè)邏輯段的起始單元地址(段基址)的高16位。偏移量:表示某個(gè)存儲(chǔ)單元與它所在段的段基址之間的字節(jié)距離。當(dāng)偏移量為0時(shí),就是這個(gè)段的起始單元,而偏移量為0FFFFFH時(shí),就是這個(gè)段的最后一個(gè)字節(jié)單元。35CPU與存儲(chǔ)器之間的任何信息交換都使用物理地址。2.邏輯地邏輯地址的表示方法是段基值:偏移量例:3267H:00A0H它表示該邏輯單元位于段起始地址為32670H,段內(nèi)偏移量為00A0H個(gè)字節(jié)。3.邏輯地址轉(zhuǎn)換為物理地址當(dāng)CPU要訪問(wèn)存儲(chǔ)器時(shí),需要由總線接口單元BIU將邏輯地址轉(zhuǎn)換成物理地址。轉(zhuǎn)換方法:將邏輯地址的段基值左移4位,形成20位的段基址(低位為0)然后與16位的偏移量相加,結(jié)果即為20位的物理地址。其轉(zhuǎn)換示例如圖所示。36邏輯地址的表示方法是段基值:偏移量例:3267H:段1:2B0H段2:2C0H002D3H偏移量23H偏移量13H0915H003AH09150H003AH+)0918AH偏移量段基值邏輯地址物理地址右圖表示同一個(gè)物理地址002D3H被被兩個(gè)邏輯段中的邏輯地址映射。002B0H+00023H=002D3H002C0H+00013H=002D3H37段1:2B0H段2:2C0H002D3H偏移量23H偏移量14.邏輯地址的來(lái)源在程序的執(zhí)行過(guò)程中,CPU根據(jù)不同操作類型訪問(wèn)存儲(chǔ)器,其邏輯地址中段基值和偏移量的來(lái)源是不一樣的。下表是各種操作類型所對(duì)應(yīng)的邏輯地址的來(lái)源。邏輯地址隱含來(lái)源允許替代來(lái)源偏移量(OFFSET)操作類型序號(hào)123456取指令堆棧操作取源串存目的串以BP作基址存取一般變量DICSSSDSESSSDSIPSPSI有效地址EA有效地址EA無(wú)無(wú)CS,SS,ES無(wú)CS,DS,ESCS,SS,ES段基值384.邏輯地址的來(lái)源在程序的執(zhí)行過(guò)程中,CP說(shuō)明:(1)允許替代來(lái)源也叫做段超越,它表示了段基值除使用隱含的段寄存器外是否可以指定其它段寄存器來(lái)提供。(2)有效地址EA,它表示根據(jù)指令所采用的尋址方式(下一章介紹)計(jì)算出來(lái)的段內(nèi)偏移量。39說(shuō)明:(1)允許替代來(lái)源也叫做段超越,它表示了段基值除2.4堆棧及其操作方法堆棧是一個(gè)特定的存儲(chǔ)區(qū),訪問(wèn)該存儲(chǔ)區(qū)必須按照指定的規(guī)則進(jìn)行操作。堆棧一般分為:和專用堆棧存儲(chǔ)器軟件堆棧按堆棧的工作方式專門(mén)設(shè)計(jì)的存儲(chǔ)器專用堆棧存儲(chǔ)器軟件堆棧由程序設(shè)計(jì)人員用軟件在內(nèi)存儲(chǔ)器中劃出的一塊存儲(chǔ)區(qū)作為堆棧來(lái)使用。8086/8088就是這種方式。堆棧的用途:主要用于暫存數(shù)據(jù)以及在過(guò)程調(diào)用或處理中斷時(shí)保存斷點(diǎn)信息。一、堆棧的構(gòu)造402.4堆棧及其操作方法堆棧是一個(gè)特定的存儲(chǔ)區(qū)堆棧已存放數(shù)據(jù)TOPBottom......主存00000H堆棧的一端是固定的,稱為棧底。棧底是堆棧存儲(chǔ)區(qū)的最大地址單元。另一端是浮動(dòng)的,稱為棧頂。在任何時(shí)刻,棧頂是最后存入信息的存儲(chǔ)單元。棧頂是隨著堆棧中存放信息的多少而改變。為了指示現(xiàn)在堆棧中存放數(shù)據(jù)位置,通常設(shè)置一個(gè)寄存器來(lái)指示棧頂位置。其內(nèi)容就象一個(gè)指針一樣,因此被稱為堆棧指針SP(StackPointer)。SP的內(nèi)容始終指向棧頂單元堆棧中數(shù)據(jù)進(jìn)出都由SP來(lái)控制41堆棧已存放數(shù)據(jù)TOPBottom......主存00000H在堆棧中存取數(shù)據(jù)的規(guī)則是:“先進(jìn)后出FILO”(First-InLost-Out)。即最先送入堆棧的數(shù)據(jù)要到最后才能取出,而最后送入堆棧的數(shù)據(jù),最先取出。二、8086/8088堆棧的組織在8086/8088微機(jī)中堆棧是由堆棧段寄存器SS指定的一段存儲(chǔ)區(qū)。SSSP堆棧BottomTopXXXXXXXXXXXX堆棧初始化時(shí)的SP42在堆棧中存取數(shù)據(jù)的規(guī)則是:“先進(jìn)后出FILO”堆棧頂部由椎棧指針SP指示。SP中內(nèi)容始終表示堆棧段基址與棧頂之間的距離(字節(jié)數(shù))。當(dāng)SP內(nèi)容為最大值時(shí),表示堆棧為空。而當(dāng)(SP)=0時(shí),表示堆棧全滿。當(dāng)SP被初始化時(shí),指向棧底+2單元,其值就是個(gè)堆棧的長(zhǎng)度。由于SP是16位寄存器,因此堆棧最大64K字節(jié)數(shù)據(jù)在堆棧中的存放格式是:以字為單位存放,數(shù)據(jù)的低8位放在較低地址單元,高8位放在較高地址單元。當(dāng)用戶程序中要求的堆棧長(zhǎng)度超過(guò)一個(gè)堆棧段的最大長(zhǎng)度64KB時(shí),可以設(shè)置幾個(gè)堆棧段。通過(guò)改變堆棧段寄存器SS的內(nèi)容,即可改變到另一個(gè)堆棧段,當(dāng)改變了堆棧段寄存器SS的內(nèi)容后,必須緊接著賦與SP新值。43堆棧頂部由椎棧指針SP指示。SP中內(nèi)容始終表三、堆棧操作1.設(shè)置堆棧設(shè)置堆棧主要是對(duì)堆棧段寄存器SS和堆棧指針SP賦值。例如:STACK1SEGMEMTPARASTACKDB100DUP(0)STACK1ENDS第一行中的PARASTACK就是用來(lái)說(shuō)明本段為堆棧段。當(dāng)程序經(jīng)過(guò)匯編、連接并裝入內(nèi)存時(shí),系統(tǒng)將自動(dòng)為其分配一個(gè)存儲(chǔ)區(qū)作為堆棧段,將這個(gè)段的段基址的高16位送入SS中,而將程序指定的字節(jié)單元數(shù)100(64H)賦值給SP,這樣堆棧就被設(shè)置好了。44三、堆棧操作1.設(shè)置堆棧設(shè)置堆棧主要是對(duì)堆棧段寄存器SS和2.進(jìn)棧PUSH進(jìn)棧就是把數(shù)據(jù)存入堆棧。由指令PUSH或者由機(jī)器自動(dòng)實(shí)現(xiàn),可以將通用寄存器、段寄存器或字存儲(chǔ)單元的內(nèi)容壓入堆棧頂部。例:PUSHAX;將寄存器AX的內(nèi)容壓入堆棧PUSHDS;將段寄存器DS的內(nèi)容壓入堆棧PUSHDATA-WORD;將字存儲(chǔ)單元DADA-WORD壓入;堆棧PUSHF;將標(biāo)志寄存器內(nèi)容壓入堆棧。進(jìn)棧的執(zhí)行過(guò)程:(1)首先將堆棧指針SP減2,即指向一個(gè)空的堆棧字單元SP<=(SP)—2452.進(jìn)棧PUSH進(jìn)棧就是把數(shù)據(jù)存入堆棧。由指(2)將要儲(chǔ)存的內(nèi)容(寄存器或存儲(chǔ)單元的內(nèi)容)送入SP指向的字單元中。(SP)<=數(shù)據(jù)例如,指令PUSHAX的執(zhí)行過(guò)程如下圖所示:SSALAH(AH)(AL)現(xiàn)(SP)原(SP).........SP(SP)-2(1)(2)00000H46(2)將要儲(chǔ)存的內(nèi)容(寄存器或存儲(chǔ)單元的內(nèi)容)送入SP指向的3.出棧POP出棧操作由POP指令實(shí)現(xiàn),它從堆棧頂部彈出一個(gè)字到通用寄存器、段寄存器或字存儲(chǔ)單元。例如:POPAX;將棧頂字單元內(nèi)容彈出到AXPOPDS;將棧頂字單元內(nèi)容彈出到DSPOPDATA-WORD;將棧頂字單元內(nèi)容彈出到;DATA-WORD存儲(chǔ)。POPF;將棧頂字單元內(nèi)容送回標(biāo)志寄存器F。出棧的操作過(guò)程:(1)將SP指向的字單元(即棧頂字單元)內(nèi)容送往指定的寄存器或存儲(chǔ)器。即寄存器/存儲(chǔ)器<=(CSP)473.出棧POP出棧操作由POP指令實(shí)現(xiàn),它從(2)堆棧指針SP內(nèi)容加2,即SP<=(SP)+2例如,指令POPAX的操作過(guò)程如下圖所示。SP(SP)+2SSALAHXXXX現(xiàn)(SP)原(SP).........XXXX00000H(2)(1)48(2)堆棧指針SP內(nèi)容加2,即SP<=(SP)+2例如,指令演講完畢,謝謝觀看!演講完畢,謝謝觀看!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
50IBM-PC微機(jī)組成原理IBM-PC微機(jī)基本結(jié)構(gòu)一、微機(jī)的微處理器CPU主存儲(chǔ)器I/O接口I/O設(shè)備I/O接口I/O設(shè)備地址總線數(shù)據(jù)總線控制總線系統(tǒng)總線微機(jī)硬件系統(tǒng)基本組成框圖51微處理器主存儲(chǔ)器I/O接口I/O設(shè)備I/O接口I/O設(shè)備地址1、中央處理器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)來(lái)標(biāo)識(shí),稱為存儲(chǔ)單元的地址。對(duì)每個(gè)存儲(chǔ)單元內(nèi)容的存和取是按照地址進(jìn)行訪問(wèn)的。521、中央處理器CPU微型計(jì)算機(jī)中的中央處理器計(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ǔ)單元,一般使用單元地址來(lái)指示各個(gè)存儲(chǔ)單元。如一個(gè)10位二進(jìn)制數(shù)表示的地址,可以用來(lái)區(qū)分210=1024=1K個(gè)單元。存儲(chǔ)器地址0000000000000000000100000000101111111111…………53計(jì)算機(jī)存儲(chǔ)信息的基本單位是一個(gè)二進(jìn)制位,一位可存儲(chǔ)一個(gè)二進(jìn)制習(xí)慣上將CPU與主存儲(chǔ)器合稱為主機(jī)在計(jì)算機(jī)中,除了主存儲(chǔ)器之外,一般還配置有輔助存儲(chǔ)器,簡(jiǎn)稱輔存。由于它的位置是在主機(jī)之外,因此也叫做外存。3、輸入輸出設(shè)備及接口輸入設(shè)備將外部信息(程序、數(shù)據(jù)和命令)送入計(jì)算機(jī)。包括鍵盤(pán)、鼠標(biāo)等。輸出設(shè)備將計(jì)算機(jī)處理后的結(jié)果轉(zhuǎn)換為人或其它系統(tǒng)能識(shí)別的信息形式向外輸出。如顯示器、打印機(jī)等。有的設(shè)備既具有輸入功能又具有輸出功能。如磁盤(pán)、磁帶、觸摸顯示屏等。54習(xí)慣上將CPU與主存儲(chǔ)器合稱為主機(jī)在計(jì)算機(jī)由于I/O設(shè)備的工作速度、工作原理以及所處理的信息格式等與主機(jī)相差很大,因此I/O設(shè)備要通過(guò)I/O接口才能與系統(tǒng)總線連接。I/O接口是主機(jī)與I/O設(shè)備之間設(shè)置的邏輯控制部件。通過(guò)它實(shí)現(xiàn)主機(jī)與I/O設(shè)備間的信息傳送。4、系統(tǒng)總線系統(tǒng)總線將CPU、存儲(chǔ)器和I/O設(shè)備連接起來(lái),用于傳送各大部件之間的信息。系統(tǒng)總線包括地址總線、數(shù)據(jù)總線和控制總線三組。它們分別用于傳送不同的信息。55由于I/O設(shè)備的工作速度、工作原理以及所處理二、Intel8086/8088CPU的功能結(jié)構(gòu)指令是構(gòu)成匯編語(yǔ)言程序的最基本單位。就象高級(jí)語(yǔ)言中的一個(gè)語(yǔ)句。程序是由一系列的指令——指令序列構(gòu)成。CPU執(zhí)行指令序列就是重復(fù)執(zhí)行以下兩個(gè)步驟:
從存儲(chǔ)器中取指令執(zhí)行指令所規(guī)定的功能56二、Intel8086/8088CPU的功能結(jié)構(gòu)這兩個(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í)間也較長(zhǎng)。但CPU卻只需要使用很短的時(shí)間去處理。因此大部分時(shí)間都是處于閑置狀態(tài)。采用串行工作方式的計(jì)算機(jī)其運(yùn)行速度較慢時(shí)間57這兩個(gè)步驟的執(zhí)行又可以分為兩種情況:1.串行方式取指2.指令流水線結(jié)構(gòu)AHALBHBLCHCLDISPBPSI地址加法器IPCSDSSSES總線控制邏輯暫存器標(biāo)志寄存器ALUEU控制器123456控制信號(hào)16位數(shù)據(jù)總線段寄存器通用寄存器組外部總線16位CPU內(nèi)總線AXBXCX20位地址總線指令隊(duì)列執(zhí)行單元(EU)總線接口單元(BIU)582.指令流水線結(jié)構(gòu)AHALBHBLCHCLDISPBPSI地(1)執(zhí)行單元EUEU的主要任務(wù)是分析與執(zhí)行指令,它包括:A、從指令隊(duì)列中取出指令代碼,由控制器譯碼后產(chǎn)生相應(yīng)的控制信號(hào),控制各部件完成指令規(guī)定的操作。B、對(duì)操作數(shù)執(zhí)行各種指定的算術(shù)或邏輯運(yùn)算C、向BIU發(fā)送訪問(wèn)主存或I/0的命令,并提供相應(yīng)的地址和傳送的數(shù)據(jù)59(1)執(zhí)行單元EUEU的主要任務(wù)是分析與執(zhí)行指令,它包括:A(2)總線接口單元BIUBIU負(fù)責(zé)CPU與存儲(chǔ)器、I/0的信息傳送。具體功能包括:A、取指令——根據(jù)CS寄存器和指令指針I(yè)P形成20位的物理地址,從該地址指定的存儲(chǔ)器單元中取出指令,并暫存到指令隊(duì)列中,等待EU取走并執(zhí)行。B、存取數(shù)據(jù)——在EU執(zhí)行指令的過(guò)程中,如果需要與存儲(chǔ)器或I/O端口傳送數(shù)據(jù)時(shí),根據(jù)EU提供的數(shù)據(jù)和地址,并結(jié)合相應(yīng)的段寄存器(DS、ES或SS)的內(nèi)容,進(jìn)入外部總線周期,與存儲(chǔ)器或I/0進(jìn)行數(shù)據(jù)的存取。EU和BIU是既分工又合作的兩個(gè)獨(dú)立部分。它們的操作在一定程序上是并行工作的,分別完成不同的任務(wù),因而大大加快了指令執(zhí)行速度。60(2)總線接口單元BIUBIU負(fù)責(zé)CPU與存儲(chǔ)器、I/0的信Intel8086/8088運(yùn)行時(shí)執(zhí)行過(guò)程大致如下圖所示。執(zhí)行執(zhí)行執(zhí)行執(zhí)行忙存數(shù)取數(shù)取指取指取指取指忙忙忙忙忙EUBIU外部總線時(shí)間…...…...…...等待61Intel8086/8088運(yùn)行時(shí)執(zhí)行過(guò)程大致如下圖所2.2Intel8086/8088CPU寄存器結(jié)構(gòu)及其用途一、通用寄存器AHALBHBLCHCLDHDLAXBXCXDXSPBPSIDIIPFLAGSDSESSSCS累加器基址寄存器計(jì)數(shù)寄存器數(shù)據(jù)寄存器堆棧寄存器基址寄存器源變址寄存器目的變址寄存器指令指針標(biāo)志寄存器堆棧段寄存器代碼段寄存器數(shù)據(jù)段寄存器附加段寄存器通用寄存器8個(gè)控制寄存器2個(gè)段寄存器4個(gè)622.2Intel8086/8088CPU寄存器結(jié)構(gòu)及其Intel8086/8088有8個(gè)16位通用寄存器,它們一般不只用作某個(gè)特定的功能,而是具有良好的通用性,可以由程序設(shè)計(jì)人員進(jìn)行編程訪問(wèn)。1.數(shù)據(jù)寄存器它包括AX、BX、CX和DX四個(gè)寄存器。它們中的每一個(gè)既可以是16位寄存器,也可以分成兩個(gè)8位寄存器使用。即可以當(dāng)作8個(gè)獨(dú)立的8位寄存器使用。數(shù)據(jù)寄存器既可以用來(lái)存放參加運(yùn)算的操作數(shù),也可以存放運(yùn)算的結(jié)果。在多數(shù)情況下,使用這些寄存器時(shí)必須在指令中指明。例:MOVAX,BX;將BX的內(nèi)容送到AX中ADDCH,DH;將DH和CH的內(nèi)容相加,結(jié)果送到CH63Intel8086/8088有8個(gè)16位在有些指令中,不需要明確指出使用的寄存器名,即隱念使用了某寄存器,稱為隱含使用。例如,在循環(huán)指令LOOP中,CX被隱含指定作循環(huán)次數(shù)計(jì)數(shù)用。另外,個(gè)別指令對(duì)寄存器有特定的使用,并且又必須在指令中指明它的名字,這類寄存器的使用稱為特定使用。例如,在移位指令(SHLAX,CL)中,CL被固定用作移位次數(shù)。2.指針寄存器指針寄存器有堆棧指針SP和基址指針BP它們一般被用作16位地址指針,在形成20位的物理地址時(shí)常被作為偏移量使用。64在有些指令中,不需要明確指出使用的寄存器名,SP指針——在進(jìn)行堆棧操作時(shí),被隱含使用,指向堆棧頂部單元。BP指針——被用來(lái)指向堆棧段內(nèi)某一存儲(chǔ)單元。BP除用作地址指針外也可以象數(shù)據(jù)寄存器一樣,存放參加運(yùn)算的操作數(shù)和運(yùn)算的結(jié)果。3.變址寄存器有兩個(gè)16位的變址寄存器SI和DI,一般被用來(lái)作地址指針。SI——源變址寄存器DI——目的變址寄存器同BP寄存器一樣,SI和DI也可以用作通用數(shù)據(jù)寄存器存放操作數(shù)和運(yùn)算結(jié)果。65SP指針——在進(jìn)行堆棧操作時(shí),被隱含使用,指向堆棧頂部單元。二、段寄存器8086/8088CPU在使用存儲(chǔ)器時(shí),將它劃分成若干個(gè)段。每個(gè)段用來(lái)存放不同目的內(nèi)容,如程序代碼、數(shù)據(jù)等等。每個(gè)存儲(chǔ)段用一個(gè)段寄存器來(lái)指明該段的起始位置(也叫段基址)?!a段數(shù)據(jù)段堆棧段附加段ESCSDSSS段寄存器段基址段基址段基址段基址66二、段寄存器8086/8088CPU在使用存儲(chǔ)CPU在訪問(wèn)存儲(chǔ)器時(shí)必須指明兩個(gè)內(nèi)容:(1)所訪問(wèn)的存儲(chǔ)單元屬于哪個(gè)段,即指明使用的段寄存器。(2)該存儲(chǔ)單元與段起始地址(段基址)的偏移大小,即偏移量。在程序設(shè)計(jì)中,一個(gè)程序?qū)⒋鎯?chǔ)器劃分成多少個(gè)存儲(chǔ)段是任意的。但在程序運(yùn)行的任何時(shí)刻最多只能有用CS、DS、ES和SS分別指定的4個(gè)當(dāng)前段。67CPU在訪問(wèn)存儲(chǔ)器時(shí)必須指明兩個(gè)內(nèi)容:(1)所訪問(wèn)的存儲(chǔ)單元三、指令指針I(yè)PCPU在運(yùn)行程序時(shí),以IP的內(nèi)容作為將要執(zhí)行指令在內(nèi)存中的存放地址的偏移量,以段寄存器CS作為代碼段的基址指針,即以CS和IP的內(nèi)容共同構(gòu)成了一條指令的存放地址。CPU根據(jù)CS和IP寄存器的內(nèi)容到內(nèi)存中去取指令,當(dāng)取出一條指令后,IP內(nèi)容自動(dòng)修改為指向下一條指令。.........CSIP偏移量代碼段基址CPU下一條指令正在執(zhí)行的指令68三、指令指針I(yè)PCPU在運(yùn)行程序時(shí),以IP的子程序調(diào)用指令CALL,將IP原有內(nèi)容自動(dòng)壓入堆棧,而將子程序的入口地址偏移量自動(dòng)送入IP,而返回指令RET,又自動(dòng)從堆棧中彈回原有IP的內(nèi)容。轉(zhuǎn)移指令將指令中的目的地址的偏移量送入IP例如,下面兩種指令就可以自動(dòng)改變IP寄存器的內(nèi)容。
注意:IP的內(nèi)容不能被直接進(jìn)行訪問(wèn),即不能用指令去讀IP的值,也不能用指令給它賦值。但是可以通過(guò)某些指令的執(zhí)行而自動(dòng)修改IP的內(nèi)容。69子程序調(diào)用指令CALL,將IP原有內(nèi)容自動(dòng)壓入堆棧,而將子程四、標(biāo)志寄存器標(biāo)志寄存器是用來(lái)反映CPU在程序運(yùn)行時(shí)的某些狀態(tài),如是否有進(jìn)位、奇偶性、結(jié)果的符號(hào)、結(jié)果是否為零等等。8086/8088CPU中標(biāo)志寄存器的長(zhǎng)度為16位,但其中只有9位才有意義。1514131211109876543210OFDFIFTFSFZFAFPFCF進(jìn)位位奇偶位零值位輔助進(jìn)位位單步標(biāo)志位符號(hào)位中斷允許位方向位溢出位70四、標(biāo)志寄存器標(biāo)志寄存器是用來(lái)反映CPU在程1.進(jìn)位位CF在進(jìn)行算術(shù)運(yùn)算時(shí),若最高位(對(duì)字操作是第15位,字節(jié)操作是第7位)產(chǎn)生進(jìn)位或借位時(shí)CF被自動(dòng)置“1”,否則置“0”。在移位類指令中,CF也被用來(lái)存放從最高位(左移時(shí))或最低位(右移時(shí))移出的數(shù)值(0或1)。2.奇偶位PF當(dāng)指令操作結(jié)果的低8位中含有1的個(gè)數(shù)為偶數(shù)時(shí),則PF被置1,否則PF被置0。
注意:PF只反映操作結(jié)果的低8位的奇偶性,與指令操作數(shù)的長(zhǎng)度無(wú)關(guān)。711.進(jìn)位位CF在進(jìn)行算術(shù)運(yùn)算時(shí),若最高位(對(duì)字操作3.輔助進(jìn)位位AF在進(jìn)行算術(shù)運(yùn)算時(shí),若低字節(jié)的低四位向高4位產(chǎn)生進(jìn)位或借位,即第3位產(chǎn)生進(jìn)位或借位時(shí),AF位被置1,否則置0。AF標(biāo)志位用于十進(jìn)制運(yùn)算的調(diào)整。注意:AF只反映運(yùn)算結(jié)果低八位,與操作數(shù)長(zhǎng)度無(wú)關(guān)。4.零值位ZF若運(yùn)算結(jié)果各位全為0,則ZF被置1,否則置0。5.符號(hào)位SF將運(yùn)算結(jié)果視為帶符號(hào)數(shù),當(dāng)運(yùn)算結(jié)果為負(fù)數(shù)時(shí)SF被置1,為正數(shù)時(shí),則置0。723.輔助進(jìn)位位AF在進(jìn)行算術(shù)運(yùn)算時(shí),若低字由于第7位是字節(jié)操作數(shù)的符號(hào)位,而第15位是字操作數(shù)的符號(hào)位,因此,SF位與運(yùn)算結(jié)果的最高位(第7位或第15位)相一致。6.溢出位OF當(dāng)運(yùn)算結(jié)果超過(guò)機(jī)器用補(bǔ)碼所能表示數(shù)的范圍時(shí),則OF置1,否則置0.字節(jié)數(shù)據(jù),機(jī)器用補(bǔ)碼所能表示的數(shù)范圍為-128—+127。字?jǐn)?shù)據(jù)的表示范圍為:-32768—+32767注意:溢出與進(jìn)位是兩個(gè)完全不同的概念,不能相互混淆。73由于第7位是字節(jié)操作數(shù)的符號(hào)位,而第15位是例如:計(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é)果正確。74例如:計(jì)算-85D+(-1D)=-86D10101011計(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)行,即產(chǎn)生單步中斷。單步標(biāo)志位供調(diào)試程序使用。75計(jì)算-85D+-117D=-202D10108.中斷允許位IF該標(biāo)志位為控制標(biāo)志位。當(dāng)IF被設(shè)置為1時(shí),CPU可以響應(yīng)可屏蔽中斷,否則不允許響應(yīng)可屏蔽中斷。9.方向位DFDF也是控制標(biāo)志位。它被用來(lái)規(guī)定串操作指令的增減方向。當(dāng)DF=0時(shí),串操作指令自動(dòng)使變址寄存器(SI和DI)的內(nèi)容遞增。當(dāng)DF=1時(shí),串操作指令自動(dòng)使變址寄存器的內(nèi)容遞減。768.中斷允許位IF該標(biāo)志位為控制標(biāo)志位。2.3存儲(chǔ)器一、存儲(chǔ)器的組成1.存儲(chǔ)器是由若干個(gè)存儲(chǔ)單元構(gòu)成存儲(chǔ)單元的多少就表示了存儲(chǔ)器的容量。2.每個(gè)存儲(chǔ)單元存放相同長(zhǎng)度的二進(jìn)制數(shù)一個(gè)存儲(chǔ)單元的長(zhǎng)度一般為8位二進(jìn)制數(shù),稱為一個(gè)字節(jié)(BYTE)。3.每個(gè)存儲(chǔ)單元有一個(gè)唯一的地址編碼——地址8086/8088CPU具有20根地址線,即它可以產(chǎn)生20位的地址碼,它的存儲(chǔ)器尋址能力為220,即1兆字節(jié)空間。772.3存儲(chǔ)器一、存儲(chǔ)器的組成1.存儲(chǔ)器是由若干個(gè)存儲(chǔ)這一兆字節(jié)存儲(chǔ)單元的地址范圍為:00…...0~11…...1。如圖所示。20位20位…...07存儲(chǔ)單元(字節(jié))二進(jìn)制數(shù)地址000000000000000000000000000000000000000100000000000000000010…...1111111111111111111011111111111111111111十六進(jìn)制數(shù)地址00000H00001H00002HFFFFEHFFFFFH…...為了方便書(shū)寫(xiě),在源程序中常用5位十六進(jìn)制數(shù)或一個(gè)符號(hào)來(lái)表示一個(gè)存儲(chǔ)單元的地址。78這一兆字節(jié)存儲(chǔ)單元的地址范圍為:00…...0~11…...4.任何兩個(gè)相鄰字節(jié)單元就構(gòu)成一個(gè)字單元一個(gè)字存儲(chǔ)單元(WORD)的長(zhǎng)度為16位二進(jìn)制數(shù),即兩個(gè)字節(jié)。字單元的地址為兩個(gè)字節(jié)單元中較小地址字節(jié)單元的地址。16位長(zhǎng)數(shù)據(jù)的存放規(guī)則是低8位放在較低地址字節(jié)單元中,高8位放在較高地址字節(jié)單元中。例如,將數(shù)據(jù)3456H放在地址為09235H的存儲(chǔ)單元中的存儲(chǔ)分配如圖所示。......地址存儲(chǔ)單元09235H09236H5634794.任何兩個(gè)相鄰字節(jié)單元就構(gòu)成一個(gè)字單元5、在定義一個(gè)地址時(shí)必須指出是字節(jié)或字類型屬性由于存儲(chǔ)單元可分為字單元和字節(jié)單元,因此8086/8088CPU訪問(wèn)內(nèi)存的指令中,分為字節(jié)訪問(wèn)和字訪問(wèn)兩種指令。二、存儲(chǔ)器的段結(jié)構(gòu)8086/8088系統(tǒng)的存儲(chǔ)器段結(jié)構(gòu)具有以下幾個(gè)特點(diǎn):1.8086/8088CPU將1MB的存儲(chǔ)空間劃分成若干個(gè)段,每個(gè)段最大長(zhǎng)度為64K(65536)個(gè)字節(jié)單元組成。在8086/8088的匯編程序中,用戶可以根據(jù)自己需要來(lái)設(shè)定段的個(gè)數(shù)、各個(gè)段長(zhǎng)度和每個(gè)段的用途。并且代碼或數(shù)據(jù)可以存放在段內(nèi)任意單元中。805、在定義一個(gè)地址時(shí)必須指出是字節(jié)或字類型屬性2.每個(gè)段的基址必須是一個(gè)小節(jié)的首址。段基址——一個(gè)段的起始地址。在存儲(chǔ)器中規(guī)定從0地址開(kāi)始,每16個(gè)字節(jié)單元稱為一個(gè)小節(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é)的首地址最低位必為0(16進(jìn)制數(shù)表示)。因此段基址只能是上述64K個(gè)小節(jié)首址之一。812.每個(gè)段的基址必須是一個(gè)小節(jié)的首址。段基址——一個(gè)段的起3.邏輯段在物理存儲(chǔ)器中可以是鄰接的、間隔的、部分重疊的和完全重疊的等4種情況。邏輯段是指在匯編語(yǔ)言源程序中設(shè)置的段。內(nèi)存中的一個(gè)物理存儲(chǔ)單元可以映象到一個(gè)或多個(gè)邏輯段中。物理存儲(chǔ)器00000H10000HDA_BYTE段1段2段3段4段5鄰接部分重疊完全重疊間隔邏輯段0FFFFFHDA_BYTE物理單元可以映象到邏輯段2、段3和段4中。823.邏輯段在物理存儲(chǔ)器中可以是鄰接的、間隔的、部分重疊的和4、在任一時(shí)刻,一個(gè)程序只能訪問(wèn)4個(gè)段中的內(nèi)容。4個(gè)段分別是代碼段、數(shù)據(jù)段、堆棧段和附加段,稱為當(dāng)前段。4個(gè)段寄存器CS、DS、SS和ES分別保存了它們段基址的高16位地址,稱為段基值。段基址的最低4位為0。(小節(jié)首址的低4位為全0)。三、邏輯地址與物理地址及相互關(guān)系1.物理地址在1MB的存儲(chǔ)空間中,每個(gè)存儲(chǔ)單元的物理地址是唯一的,它就是該存儲(chǔ)單元的20位地址。8086/8088的物理地址范圍:00000H~0FFFFFH834、在任一時(shí)刻,一個(gè)程序只能訪問(wèn)4個(gè)段中的內(nèi)容。CPU與存儲(chǔ)器之間的任何信息交換都使用物理地址。2.邏輯地址在程序設(shè)計(jì)中,為了便于程序的開(kāi)發(fā)和對(duì)存儲(chǔ)器進(jìn)行動(dòng)態(tài)管理,使用了邏輯地址。一個(gè)邏輯地址包括兩個(gè)部分:段基值和偏移量(OFFSET)段基值:存放在某一個(gè)段寄存器中,是一個(gè)邏輯段的起始單元地址(段基址)的高16位。偏移量:表示某個(gè)存儲(chǔ)單元與它所在段的段基址之間的字節(jié)距離。當(dāng)偏移量為0時(shí),就是這個(gè)段的起始單元,而偏移量為0FFFFFH時(shí),就是這個(gè)段的最后一個(gè)字節(jié)單元。84CPU與存儲(chǔ)器之間的任何信息交換都使用物理地址。2.邏輯地邏輯地址的表示方法是段基值:偏移量例:3267H:00A0H它表示該邏輯單元位于段起始地址為32670H,段內(nèi)偏移量為00A0H個(gè)字節(jié)。3.邏輯地址轉(zhuǎn)換為物理地址當(dāng)CPU要訪問(wèn)存儲(chǔ)器時(shí),需要由總線接口單元BIU將邏輯地址轉(zhuǎn)換成物理地址。轉(zhuǎn)換方法:將邏輯地址的段基值左移4位,形成20位的段基址(低位為0)然后與16位的偏移量相加,結(jié)果即為20位的物理地址。其轉(zhuǎn)換示例如圖所示。85邏輯地址的表示方法是段基值:偏移量例:3267H:段1:2B0H段2:2C0H002D3H偏移量23H偏移量13H0915H003AH09150H003AH+)0918AH偏移量段基值邏輯地址物理地址右圖表示同一個(gè)物理地址002D3H被被兩個(gè)邏輯段中的邏輯地址映射。002B0H+00023H=002D3H002C0H+00013H=002D3H86段1:2B0H段2:2C0H002D3H偏移量23H偏移量14.邏輯地址的來(lái)源在程序的執(zhí)行過(guò)程中,CPU根據(jù)不同操作類型訪問(wèn)存儲(chǔ)器,其邏輯地址中段基值和偏移量的來(lái)源是不一樣的。下表是各種操作類型所對(duì)應(yīng)的邏輯地址的來(lái)源。邏輯地址隱含來(lái)源允許替代來(lái)源偏移量(OFFSET)操作類型序號(hào)123456取指令堆棧操作取源串存目的串以BP作基址存取一般變量DICSSSDSESSSDSIPSPSI有效地址EA有效地址EA無(wú)無(wú)CS,SS,ES無(wú)CS,DS,ESCS,SS,ES段基值874.邏輯地址的來(lái)源在程序的執(zhí)行過(guò)程中,CP說(shuō)明:(1)允許替代來(lái)源也叫做段超越,它表示了段基值除使用隱含的段寄存器外是否可以指定其它段寄存器來(lái)提供。(2)有效地址EA,它表示根據(jù)指令所采用的尋址方式(下一章介紹)計(jì)算出來(lái)的段內(nèi)偏移量。88說(shuō)明:(1)允許替代來(lái)源也叫做段超越,它表示了段基值除2.4堆棧及其操作方法堆棧是一個(gè)特定的存儲(chǔ)區(qū),訪問(wèn)該存儲(chǔ)區(qū)必須按照指定的規(guī)則進(jìn)行操作。堆棧一般分為:和專用
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 班主任在班級(jí)活動(dòng)中的引導(dǎo)角色計(jì)劃
- 合同范本音樂(lè)app
- 股骨頸骨折護(hù)理查房
- 班級(jí)班規(guī)的制定與執(zhí)行計(jì)劃
- 2025年自然拼讀2級(jí)標(biāo)準(zhǔn)課件材料
- 學(xué)校周邊安全環(huán)境的構(gòu)建計(jì)劃
- 建立有效的會(huì)議記錄機(jī)制計(jì)劃
- 第3課 中華文明的起源2024-2025學(xué)年新教材七年級(jí)上冊(cè)歷史新教學(xué)設(shè)計(jì)(統(tǒng)編版2024)
- 以活動(dòng)促學(xué)習(xí)的班級(jí)實(shí)踐計(jì)劃
- 《貴州水城礦業(yè)股份有限公司水城縣米籮煤礦(新立一期)(延續(xù))礦產(chǎn)資源綠色開(kāi)發(fā)利用方案(三合一)》評(píng)審意見(jiàn)
- (高清版)外墻外保溫工程技術(shù)標(biāo)準(zhǔn)JGJ144-2019
- 機(jī)電控制與可編程序控制器課程設(shè)計(jì)報(bào)告
- 簡(jiǎn)版?zhèn)€人征信報(bào)告模板
- 森林防火主題教育班會(huì)PPT
- 船舶安檢缺陷處理建議表籍國(guó)內(nèi)航行海船
- 輻照交聯(lián)電線電纜型號(hào)說(shuō)明
- 公路工程決算編制辦法(交公路發(fā)2004-507號(hào))附表
- 礦山機(jī)械無(wú)人駕駛項(xiàng)目可行性研究報(bào)告模板
- 預(yù)充氣競(jìng)技步槍 標(biāo)準(zhǔn)A4靶紙
- 避免同業(yè)競(jìng)爭(zhēng)承諾函
- 產(chǎn)品批量質(zhì)量事故追責(zé)管理規(guī)范
評(píng)論
0/150
提交評(píng)論