版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
IBM-PC微機組成原理IBM-PC微機基本結(jié)構(gòu)一、微機的一般構(gòu)成運算器、控制器、存儲器、輸入設(shè)備和輸出設(shè)備。一般計算機應(yīng)包括五大部件:由于微機的主要特點是其體積很小,因此在系統(tǒng)設(shè)計上就有一些特殊考慮,它將運算器和控制器兩大部件集成在一個集成電路芯片上,稱為微處理器,也叫中央處理器,簡稱CPU
1IBM-PC微機組成原理IBM-PC微機基本結(jié)構(gòu)一、微機的微處理器CPU主存儲器I/O接口I/O設(shè)備I/O接口I/O設(shè)備地址總線數(shù)據(jù)總線控制總線系統(tǒng)總線微機硬件系統(tǒng)基本組成框圖2微處理器主存儲器I/O接口I/O設(shè)備I/O接口I/O設(shè)備地址1、中央處理器CPU微型計算機中的中央處理器也叫微處理器。它包括運算器和控制器。功能:從主存儲器中逐條取出構(gòu)成程序的指令序列,分析各指令的功能,控制計算機各部件完成指定功能的各項操作。2、主存儲器主存儲器是用于存放程序和數(shù)據(jù)的部件。它由若干個存儲單元構(gòu)成。存儲單元的多少表示存儲器的容量。每個存儲單元使用一個唯一的編號來標識,稱為存儲單元的地址。對每個存儲單元內(nèi)容的存和取是按照地址進行訪問的。31、中央處理器CPU微型計算機中的中央處理器計算機存儲信息的基本單位是一個二進制位,一位可存儲一個二進制數(shù)0或1。每8位組成一個字節(jié)(BYTE)。76543210在大多數(shù)計算機中,存儲器的組織都是以字節(jié)為基本單位。每一個基本單位稱為一個存儲單元。一個存儲器是由許多的存儲單元構(gòu)成的,如某存儲器的容量為32KB,1MB,128MB等等。為了區(qū)分這些不同的存儲單元,一般使用單元地址來指示各個存儲單元。如一個10位二進制數(shù)表示的地址,可以用來區(qū)分210=1024=1K個單元。存儲器地址0000000000000000000100000000101111111111…………4計算機存儲信息的基本單位是一個二進制位,一位可存儲一個二進制習(xí)慣上將CPU與主存儲器合稱為主機在計算機中,除了主存儲器之外,一般還配置有輔助存儲器,簡稱輔存。由于它的位置是在主機之外,因此也叫做外存。3、輸入輸出設(shè)備及接口輸入設(shè)備將外部信息(程序、數(shù)據(jù)和命令)送入計算機。包括鍵盤、鼠標等。輸出設(shè)備將計算機處理后的結(jié)果轉(zhuǎn)換為人或其它系統(tǒng)能識別的信息形式向外輸出。如顯示器、打印機等。有的設(shè)備既具有輸入功能又具有輸出功能。如磁盤、磁帶、觸摸顯示屏等。5習(xí)慣上將CPU與主存儲器合稱為主機在計算機由于I/O設(shè)備的工作速度、工作原理以及所處理的信息格式等與主機相差很大,因此I/O設(shè)備要通過I/O接口才能與系統(tǒng)總線連接。I/O接口是主機與I/O設(shè)備之間設(shè)置的邏輯控制部件。通過它實現(xiàn)主機與I/O設(shè)備間的信息傳送。4、系統(tǒng)總線系統(tǒng)總線將CPU、存儲器和I/O設(shè)備連接起來,用于傳送各大部件之間的信息。系統(tǒng)總線包括地址總線、數(shù)據(jù)總線和控制總線三組。它們分別用于傳送不同的信息。6由于I/O設(shè)備的工作速度、工作原理以及所處理二、Intel8086/8088CPU的功能結(jié)構(gòu)指令是構(gòu)成匯編語言程序的最基本單位。就象高級語言中的一個語句。程序是由一系列的指令——指令序列構(gòu)成。CPU執(zhí)行指令序列就是重復(fù)執(zhí)行以下兩個步驟:
從存儲器中取指令執(zhí)行指令所規(guī)定的功能7二、Intel8086/8088CPU的功能結(jié)構(gòu)這兩個步驟的執(zhí)行又可以分為兩種情況:1.串行方式取指執(zhí)行存數(shù)取指執(zhí)行取指取數(shù)執(zhí)行忙閑忙忙閑忙忙閑CPU外部總線特點:(1)當CPU在執(zhí)行指令時,不需要占用外部總線,但此時總線也不能作它用,因此外部總線的空閑時間比較多。(2)在從存儲器取指令或數(shù)據(jù)時,總線處于忙狀態(tài),其所占用的時間也較長。但CPU卻只需要使用很短的時間去處理。因此大部分時間都是處于閑置狀態(tài)。采用串行工作方式的計算機其運行速度較慢時間8這兩個步驟的執(zhí)行又可以分為兩種情況:1.串行方式取指2.指令流水線結(jié)構(gòu)AHALBHBLCHCLDISPBPSI地址加法器IPCSDSSSES總線控制邏輯暫存器標志寄存器ALUEU控制器123456控制信號16位數(shù)據(jù)總線段寄存器通用寄存器組外部總線16位CPU內(nèi)總線AXBXCX20位地址總線指令隊列執(zhí)行單元(EU)總線接口單元(BIU)92.指令流水線結(jié)構(gòu)AHALBHBLCHCLDISPBPSI地(1)執(zhí)行單元EUEU的主要任務(wù)是分析與執(zhí)行指令,它包括:A、從指令隊列中取出指令代碼,由控制器譯碼后產(chǎn)生相應(yīng)的控制信號,控制各部件完成指令規(guī)定的操作。B、對操作數(shù)執(zhí)行各種指定的算術(shù)或邏輯運算C、向BIU發(fā)送訪問主存或I/0的命令,并提供相應(yīng)的地址和傳送的數(shù)據(jù)10(1)執(zhí)行單元EUEU的主要任務(wù)是分析與執(zhí)行指令,它包括:A(2)總線接口單元BIUBIU負責(zé)CPU與存儲器、I/0的信息傳送。具體功能包括:A、取指令——根據(jù)CS寄存器和指令指針I(yè)P形成20位的物理地址,從該地址指定的存儲器單元中取出指令,并暫存到指令隊列中,等待EU取走并執(zhí)行。B、存取數(shù)據(jù)——在EU執(zhí)行指令的過程中,如果需要與存儲器或I/O端口傳送數(shù)據(jù)時,根據(jù)EU提供的數(shù)據(jù)和地址,并結(jié)合相應(yīng)的段寄存器(DS、ES或SS)的內(nèi)容,進入外部總線周期,與存儲器或I/0進行數(shù)據(jù)的存取。EU和BIU是既分工又合作的兩個獨立部分。它們的操作在一定程序上是并行工作的,分別完成不同的任務(wù),因而大大加快了指令執(zhí)行速度。11(2)總線接口單元BIUBIU負責(zé)CPU與存儲器、I/0的信Intel8086/8088運行時執(zhí)行過程大致如下圖所示。執(zhí)行執(zhí)行執(zhí)行執(zhí)行忙存數(shù)取數(shù)取指取指取指取指忙忙忙忙忙EUBIU外部總線時間…...…...…...等待12Intel8086/8088運行時執(zhí)行過程大致如下圖所2.2Intel8086/8088CPU寄存器結(jié)構(gòu)及其用途一、通用寄存器AHALBHBLCHCLDHDLAXBXCXDXSPBPSIDIIPFLAGSDSESSSCS累加器基址寄存器計數(shù)寄存器數(shù)據(jù)寄存器堆棧寄存器基址寄存器源變址寄存器目的變址寄存器指令指針標志寄存器堆棧段寄存器代碼段寄存器數(shù)據(jù)段寄存器附加段寄存器通用寄存器8個控制寄存器2個段寄存器4個132.2Intel8086/8088CPU寄存器結(jié)構(gòu)及其Intel8086/8088有8個16位通用寄存器,它們一般不只用作某個特定的功能,而是具有良好的通用性,可以由程序設(shè)計人員進行編程訪問。1.數(shù)據(jù)寄存器它包括AX、BX、CX和DX四個寄存器。它們中的每一個既可以是16位寄存器,也可以分成兩個8位寄存器使用。即可以當作8個獨立的8位寄存器使用。數(shù)據(jù)寄存器既可以用來存放參加運算的操作數(shù),也可以存放運算的結(jié)果。在多數(shù)情況下,使用這些寄存器時必須在指令中指明。例:MOVAX,BX;將BX的內(nèi)容送到AX中ADDCH,DH;將DH和CH的內(nèi)容相加,結(jié)果送到CH14Intel8086/8088有8個16位在有些指令中,不需要明確指出使用的寄存器名,即隱念使用了某寄存器,稱為隱含使用。例如,在循環(huán)指令LOOP中,CX被隱含指定作循環(huán)次數(shù)計數(shù)用。另外,個別指令對寄存器有特定的使用,并且又必須在指令中指明它的名字,這類寄存器的使用稱為特定使用。例如,在移位指令(SHLAX,CL)中,CL被固定用作移位次數(shù)。2.指針寄存器指針寄存器有堆棧指針SP和基址指針BP它們一般被用作16位地址指針,在形成20位的物理地址時常被作為偏移量使用。15在有些指令中,不需要明確指出使用的寄存器名,SP指針——在進行堆棧操作時,被隱含使用,指向堆棧頂部單元。BP指針——被用來指向堆棧段內(nèi)某一存儲單元。BP除用作地址指針外也可以象數(shù)據(jù)寄存器一樣,存放參加運算的操作數(shù)和運算的結(jié)果。3.變址寄存器有兩個16位的變址寄存器SI和DI,一般被用來作地址指針。SI——源變址寄存器DI——目的變址寄存器同BP寄存器一樣,SI和DI也可以用作通用數(shù)據(jù)寄存器存放操作數(shù)和運算結(jié)果。16SP指針——在進行堆棧操作時,被隱含使用,指向堆棧頂部單元。二、段寄存器8086/8088CPU在使用存儲器時,將它劃分成若干個段。每個段用來存放不同目的內(nèi)容,如程序代碼、數(shù)據(jù)等等。每個存儲段用一個段寄存器來指明該段的起始位置(也叫段基址)?!a段數(shù)據(jù)段堆棧段附加段ESCSDSSS段寄存器段基址段基址段基址段基址17二、段寄存器8086/8088CPU在使用存儲CPU在訪問存儲器時必須指明兩個內(nèi)容:(1)所訪問的存儲單元屬于哪個段,即指明使用的段寄存器。(2)該存儲單元與段起始地址(段基址)的偏移大小,即偏移量。在程序設(shè)計中,一個程序?qū)⒋鎯ζ鲃澐殖啥嗌賯€存儲段是任意的。但在程序運行的任何時刻最多只能有用CS、DS、ES和SS分別指定的4個當前段。18CPU在訪問存儲器時必須指明兩個內(nèi)容:(1)所訪問的存儲單元三、指令指針I(yè)PCPU在運行程序時,以IP的內(nèi)容作為將要執(zhí)行指令在內(nèi)存中的存放地址的偏移量,以段寄存器CS作為代碼段的基址指針,即以CS和IP的內(nèi)容共同構(gòu)成了一條指令的存放地址。CPU根據(jù)CS和IP寄存器的內(nèi)容到內(nèi)存中去取指令,當取出一條指令后,IP內(nèi)容自動修改為指向下一條指令。.........CSIP偏移量代碼段基址CPU下一條指令正在執(zhí)行的指令19三、指令指針I(yè)PCPU在運行程序時,以IP的子程序調(diào)用指令CALL,將IP原有內(nèi)容自動壓入堆棧,而將子程序的入口地址偏移量自動送入IP,而返回指令RET,又自動從堆棧中彈回原有IP的內(nèi)容。轉(zhuǎn)移指令將指令中的目的地址的偏移量送入IP例如,下面兩種指令就可以自動改變IP寄存器的內(nèi)容。
注意:IP的內(nèi)容不能被直接進行訪問,即不能用指令去讀IP的值,也不能用指令給它賦值。但是可以通過某些指令的執(zhí)行而自動修改IP的內(nèi)容。20子程序調(diào)用指令CALL,將IP原有內(nèi)容自動壓入堆棧,而將子程四、標志寄存器標志寄存器是用來反映CPU在程序運行時的某些狀態(tài),如是否有進位、奇偶性、結(jié)果的符號、結(jié)果是否為零等等。8086/8088CPU中標志寄存器的長度為16位,但其中只有9位才有意義。1514131211109876543210OFDFIFTFSFZFAFPFCF進位位奇偶位零值位輔助進位位單步標志位符號位中斷允許位方向位溢出位21四、標志寄存器標志寄存器是用來反映CPU在程1.進位位CF在進行算術(shù)運算時,若最高位(對字操作是第15位,字節(jié)操作是第7位)產(chǎn)生進位或借位時CF被自動置“1”,否則置“0”。在移位類指令中,CF也被用來存放從最高位(左移時)或最低位(右移時)移出的數(shù)值(0或1)。2.奇偶位PF當指令操作結(jié)果的低8位中含有1的個數(shù)為偶數(shù)時,則PF被置1,否則PF被置0。
注意:PF只反映操作結(jié)果的低8位的奇偶性,與指令操作數(shù)的長度無關(guān)。221.進位位CF在進行算術(shù)運算時,若最高位(對字操作3.輔助進位位AF在進行算術(shù)運算時,若低字節(jié)的低四位向高4位產(chǎn)生進位或借位,即第3位產(chǎn)生進位或借位時,AF位被置1,否則置0。AF標志位用于十進制運算的調(diào)整。注意:AF只反映運算結(jié)果低八位,與操作數(shù)長度無關(guān)。4.零值位ZF若運算結(jié)果各位全為0,則ZF被置1,否則置0。5.符號位SF將運算結(jié)果視為帶符號數(shù),當運算結(jié)果為負數(shù)時SF被置1,為正數(shù)時,則置0。233.輔助進位位AF在進行算術(shù)運算時,若低字由于第7位是字節(jié)操作數(shù)的符號位,而第15位是字操作數(shù)的符號位,因此,SF位與運算結(jié)果的最高位(第7位或第15位)相一致。6.溢出位OF當運算結(jié)果超過機器用補碼所能表示數(shù)的范圍時,則OF置1,否則置0.字節(jié)數(shù)據(jù),機器用補碼所能表示的數(shù)范圍為-128—+127。字數(shù)據(jù)的表示范圍為:-32768—+32767注意:溢出與進位是兩個完全不同的概念,不能相互混淆。24由于第7位是字節(jié)操作數(shù)的符號位,而第15位是例如:計算-85D+(-1D)=-86D10101011B+)11111111B10101010B1-86D計算100D+100D=200D01100100B+)01100100B11001000B-56DCF=0,OF=1,結(jié)果發(fā)生溢出,即結(jié)果出錯。進位被丟棄CF=1,OF=0,結(jié)果正確。25例如:計算-85D+(-1D)=-86D10101011計算-85D+-117D=-202D10101011B+)10001011B00110110B54D1CF=1,OF=1,結(jié)果發(fā)生溢出,即結(jié)果出錯。7.單步標志位TF(TraceFlag)單步標志也叫跟蹤位,該標志為控制標志位,當TF位被設(shè)置為1時,每執(zhí)行一條指令后,CPU暫停運行,即產(chǎn)生單步中斷。單步標志位供調(diào)試程序使用。26計算-85D+-117D=-202D10108.中斷允許位IF該標志位為控制標志位。當IF被設(shè)置為1時,CPU可以響應(yīng)可屏蔽中斷,否則不允許響應(yīng)可屏蔽中斷。9.方向位DFDF也是控制標志位。它被用來規(guī)定串操作指令的增減方向。當DF=0時,串操作指令自動使變址寄存器(SI和DI)的內(nèi)容遞增。當DF=1時,串操作指令自動使變址寄存器的內(nèi)容遞減。278.中斷允許位IF該標志位為控制標志位。2.3存儲器一、存儲器的組成1.存儲器是由若干個存儲單元構(gòu)成存儲單元的多少就表示了存儲器的容量。2.每個存儲單元存放相同長度的二進制數(shù)一個存儲單元的長度一般為8位二進制數(shù),稱為一個字節(jié)(BYTE)。3.每個存儲單元有一個唯一的地址編碼——地址8086/8088CPU具有20根地址線,即它可以產(chǎn)生20位的地址碼,它的存儲器尋址能力為220,即1兆字節(jié)空間。282.3存儲器一、存儲器的組成1.存儲器是由若干個存儲這一兆字節(jié)存儲單元的地址范圍為:00…...0~11…...1。如圖所示。20位20位…...07存儲單元(字節(jié))二進制數(shù)地址000000000000000000000000000000000000000100000000000000000010…...1111111111111111111011111111111111111111十六進制數(shù)地址00000H00001H00002HFFFFEHFFFFFH…...為了方便書寫,在源程序中常用5位十六進制數(shù)或一個符號來表示一個存儲單元的地址。29這一兆字節(jié)存儲單元的地址范圍為:00…...0~11…...4.任何兩個相鄰字節(jié)單元就構(gòu)成一個字單元一個字存儲單元(WORD)的長度為16位二進制數(shù),即兩個字節(jié)。字單元的地址為兩個字節(jié)單元中較小地址字節(jié)單元的地址。16位長數(shù)據(jù)的存放規(guī)則是低8位放在較低地址字節(jié)單元中,高8位放在較高地址字節(jié)單元中。例如,將數(shù)據(jù)3456H放在地址為09235H的存儲單元中的存儲分配如圖所示。......地址存儲單元09235H09236H5634304.任何兩個相鄰字節(jié)單元就構(gòu)成一個字單元5、在定義一個地址時必須指出是字節(jié)或字類型屬性由于存儲單元可分為字單元和字節(jié)單元,因此8086/8088CPU訪問內(nèi)存的指令中,分為字節(jié)訪問和字訪問兩種指令。二、存儲器的段結(jié)構(gòu)8086/8088系統(tǒng)的存儲器段結(jié)構(gòu)具有以下幾個特點:1.8086/8088CPU將1MB的存儲空間劃分成若干個段,每個段最大長度為64K(65536)個字節(jié)單元組成。在8086/8088的匯編程序中,用戶可以根據(jù)自己需要來設(shè)定段的個數(shù)、各個段長度和每個段的用途。并且代碼或數(shù)據(jù)可以存放在段內(nèi)任意單元中。315、在定義一個地址時必須指出是字節(jié)或字類型屬性2.每個段的基址必須是一個小節(jié)的首址。段基址——一個段的起始地址。在存儲器中規(guī)定從0地址開始,每16個字節(jié)單元稱為一個小節(jié)(Paragraph)。因此,1MB內(nèi)存就可劃分為64K個小節(jié)。第1小節(jié):00000H,00001H,00002H……0000FH第2小節(jié):00010H,00011H,00012H……0011FH第65535小節(jié):FFFE0HFFFE1HFFFE2H……FFFEFH第65536小節(jié):FFFF0HFFFF1HFFFF2H……FFFFFH…..…..…..…..…..可以看出,每個小節(jié)的首地址最低位必為0(16進制數(shù)表示)。因此段基址只能是上述64K個小節(jié)首址之一。322.每個段的基址必須是一個小節(jié)的首址。段基址——一個段的起3.邏輯段在物理存儲器中可以是鄰接的、間隔的、部分重疊的和完全重疊的等4種情況。邏輯段是指在匯編語言源程序中設(shè)置的段。內(nèi)存中的一個物理存儲單元可以映象到一個或多個邏輯段中。物理存儲器00000H10000HDA_BYTE段1段2段3段4段5鄰接部分重疊完全重疊間隔邏輯段0FFFFFHDA_BYTE物理單元可以映象到邏輯段2、段3和段4中。333.邏輯段在物理存儲器中可以是鄰接的、間隔的、部分重疊的和4、在任一時刻,一個程序只能訪問4個段中的內(nèi)容。4個段分別是代碼段、數(shù)據(jù)段、堆棧段和附加段,稱為當前段。4個段寄存器CS、DS、SS和ES分別保存了它們段基址的高16位地址,稱為段基值。段基址的最低4位為0。(小節(jié)首址的低4位為全0)。三、邏輯地址與物理地址及相互關(guān)系1.物理地址在1MB的存儲空間中,每個存儲單元的物理地址是唯一的,它就是該存儲單元的20位地址。8086/8088的物理地址范圍:00000H~0FFFFFH344、在任一時刻,一個程序只能訪問4個段中的內(nèi)容。CPU與存儲器之間的任何信息交換都使用物理地址。2.邏輯地址在程序設(shè)計中,為了便于程序的開發(fā)和對存儲器進行動態(tài)管理,使用了邏輯地址。一個邏輯地址包括兩個部分:段基值和偏移量(OFFSET)段基值:存放在某一個段寄存器中,是一個邏輯段的起始單元地址(段基址)的高16位。偏移量:表示某個存儲單元與它所在段的段基址之間的字節(jié)距離。當偏移量為0時,就是這個段的起始單元,而偏移量為0FFFFFH時,就是這個段的最后一個字節(jié)單元。35CPU與存儲器之間的任何信息交換都使用物理地址。2.邏輯地邏輯地址的表示方法是段基值:偏移量例:3267H:00A0H它表示該邏輯單元位于段起始地址為32670H,段內(nèi)偏移量為00A0H個字節(jié)。3.邏輯地址轉(zhuǎn)換為物理地址當CPU要訪問存儲器時,需要由總線接口單元BIU將邏輯地址轉(zhuǎn)換成物理地址。轉(zhuǎn)換方法:將邏輯地址的段基值左移4位,形成20位的段基址(低位為0)然后與16位的偏移量相加,結(jié)果即為20位的物理地址。其轉(zhuǎn)換示例如圖所示。36邏輯地址的表示方法是段基值:偏移量例:3267H:段1:2B0H段2:2C0H002D3H偏移量23H偏移量13H0915H003AH09150H003AH+)0918AH偏移量段基值邏輯地址物理地址右圖表示同一個物理地址002D3H被被兩個邏輯段中的邏輯地址映射。002B0H+00023H=002D3H002C0H+00013H=002D3H37段1:2B0H段2:2C0H002D3H偏移量23H偏移量14.邏輯地址的來源在程序的執(zhí)行過程中,CPU根據(jù)不同操作類型訪問存儲器,其邏輯地址中段基值和偏移量的來源是不一樣的。下表是各種操作類型所對應(yīng)的邏輯地址的來源。邏輯地址隱含來源允許替代來源偏移量(OFFSET)操作類型序號123456取指令堆棧操作取源串存目的串以BP作基址存取一般變量DICSSSDSESSSDSIPSPSI有效地址EA有效地址EA無無CS,SS,ES無CS,DS,ESCS,SS,ES段基值384.邏輯地址的來源在程序的執(zhí)行過程中,CP說明:(1)允許替代來源也叫做段超越,它表示了段基值除使用隱含的段寄存器外是否可以指定其它段寄存器來提供。(2)有效地址EA,它表示根據(jù)指令所采用的尋址方式(下一章介紹)計算出來的段內(nèi)偏移量。39說明:(1)允許替代來源也叫做段超越,它表示了段基值除2.4堆棧及其操作方法堆棧是一個特定的存儲區(qū),訪問該存儲區(qū)必須按照指定的規(guī)則進行操作。堆棧一般分為:和專用堆棧存儲器軟件堆棧按堆棧的工作方式專門設(shè)計的存儲器專用堆棧存儲器軟件堆棧由程序設(shè)計人員用軟件在內(nèi)存儲器中劃出的一塊存儲區(qū)作為堆棧來使用。8086/8088就是這種方式。堆棧的用途:主要用于暫存數(shù)據(jù)以及在過程調(diào)用或處理中斷時保存斷點信息。一、堆棧的構(gòu)造402.4堆棧及其操作方法堆棧是一個特定的存儲區(qū)堆棧已存放數(shù)據(jù)TOPBottom......主存00000H堆棧的一端是固定的,稱為棧底。棧底是堆棧存儲區(qū)的最大地址單元。另一端是浮動的,稱為棧頂。在任何時刻,棧頂是最后存入信息的存儲單元。棧頂是隨著堆棧中存放信息的多少而改變。為了指示現(xiàn)在堆棧中存放數(shù)據(jù)位置,通常設(shè)置一個寄存器來指示棧頂位置。其內(nèi)容就象一個指針一樣,因此被稱為堆棧指針SP(StackPointer)。SP的內(nèi)容始終指向棧頂單元堆棧中數(shù)據(jù)進出都由SP來控制41堆棧已存放數(shù)據(jù)TOPBottom......主存00000H在堆棧中存取數(shù)據(jù)的規(guī)則是:“先進后出FILO”(First-InLost-Out)。即最先送入堆棧的數(shù)據(jù)要到最后才能取出,而最后送入堆棧的數(shù)據(jù),最先取出。二、8086/8088堆棧的組織在8086/8088微機中堆棧是由堆棧段寄存器SS指定的一段存儲區(qū)。SSSP堆棧BottomTopXXXXXXXXXXXX堆棧初始化時的SP42在堆棧中存取數(shù)據(jù)的規(guī)則是:“先進后出FILO”堆棧頂部由椎棧指針SP指示。SP中內(nèi)容始終表示堆棧段基址與棧頂之間的距離(字節(jié)數(shù))。當SP內(nèi)容為最大值時,表示堆棧為空。而當(SP)=0時,表示堆棧全滿。當SP被初始化時,指向棧底+2單元,其值就是個堆棧的長度。由于SP是16位寄存器,因此堆棧最大64K字節(jié)數(shù)據(jù)在堆棧中的存放格式是:以字為單位存放,數(shù)據(jù)的低8位放在較低地址單元,高8位放在較高地址單元。當用戶程序中要求的堆棧長度超過一個堆棧段的最大長度64KB時,可以設(shè)置幾個堆棧段。通過改變堆棧段寄存器SS的內(nèi)容,即可改變到另一個堆棧段,當改變了堆棧段寄存器SS的內(nèi)容后,必須緊接著賦與SP新值。43堆棧頂部由椎棧指針SP指示。SP中內(nèi)容始終表三、堆棧操作1.設(shè)置堆棧設(shè)置堆棧主要是對堆棧段寄存器SS和堆棧指針SP賦值。例如:STACK1SEGMEMTPARASTACKDB100DUP(0)STACK1ENDS第一行中的PARASTACK就是用來說明本段為堆棧段。當程序經(jīng)過匯編、連接并裝入內(nèi)存時,系統(tǒng)將自動為其分配一個存儲區(qū)作為堆棧段,將這個段的段基址的高16位送入SS中,而將程序指定的字節(jié)單元數(shù)100(64H)賦值給SP,這樣堆棧就被設(shè)置好了。44三、堆棧操作1.設(shè)置堆棧設(shè)置堆棧主要是對堆棧段寄存器SS和2.進棧PUSH進棧就是把數(shù)據(jù)存入堆棧。由指令PUSH或者由機器自動實現(xiàn),可以將通用寄存器、段寄存器或字存儲單元的內(nèi)容壓入堆棧頂部。例:PUSHAX;將寄存器AX的內(nèi)容壓入堆棧PUSHDS;將段寄存器DS的內(nèi)容壓入堆棧PUSHDATA-WORD;將字存儲單元DADA-WORD壓入;堆棧PUSHF;將標志寄存器內(nèi)容壓入堆棧。進棧的執(zhí)行過程:(1)首先將堆棧指針SP減2,即指向一個空的堆棧字單元SP<=(SP)—2452.進棧PUSH進棧就是把數(shù)據(jù)存入堆棧。由指(2)將要儲存的內(nèi)容(寄存器或存儲單元的內(nèi)容)送入SP指向的字單元中。(SP)<=數(shù)據(jù)例如,指令PUSHAX的執(zhí)行過程如下圖所示:SSALAH(AH)(AL)現(xiàn)(SP)原(SP).........SP(SP)-2(1)(2)00000H46(2)將要儲存的內(nèi)容(寄存器或存儲單元的內(nèi)容)送入SP指向的3.出棧POP出棧操作由POP指令實現(xiàn),它從堆棧頂部彈出一個字到通用寄存器、段寄存器或字存儲單元。例如:POPAX;將棧頂字單元內(nèi)容彈出到AXPOPDS;將棧頂字單元內(nèi)容彈出到DSPOPDATA-WORD;將棧頂字單元內(nèi)容彈出到;DATA-WORD存儲。POPF;將棧頂字單元內(nèi)容送回標志寄存器F。出棧的操作過程:(1)將SP指向的字單元(即棧頂字單元)內(nèi)容送往指定的寄存器或存儲器。即寄存器/存儲器<=(CSP)473.出棧POP出棧操作由POP指令實現(xiàn),它從(2)堆棧指針SP內(nèi)容加2,即SP<=(SP)+2例如,指令POPAX的操作過程如下圖所示。SP(SP)+2SSALAHXXXX現(xiàn)(SP)原(SP).........XXXX00000H(2)(1)48(2)堆棧指針SP內(nèi)容加2,即SP<=(SP)+2例如,指令演講完畢,謝謝觀看!演講完畢,謝謝觀看!IBM-PC微機組成原理IBM-PC微機基本結(jié)構(gòu)一、微機的一般構(gòu)成運算器、控制器、存儲器、輸入設(shè)備和輸出設(shè)備。一般計算機應(yīng)包括五大部件:由于微機的主要特點是其體積很小,因此在系統(tǒng)設(shè)計上就有一些特殊考慮,它將運算器和控制器兩大部件集成在一個集成電路芯片上,稱為微處理器,也叫中央處理器,簡稱CPU
50IBM-PC微機組成原理IBM-PC微機基本結(jié)構(gòu)一、微機的微處理器CPU主存儲器I/O接口I/O設(shè)備I/O接口I/O設(shè)備地址總線數(shù)據(jù)總線控制總線系統(tǒng)總線微機硬件系統(tǒng)基本組成框圖51微處理器主存儲器I/O接口I/O設(shè)備I/O接口I/O設(shè)備地址1、中央處理器CPU微型計算機中的中央處理器也叫微處理器。它包括運算器和控制器。功能:從主存儲器中逐條取出構(gòu)成程序的指令序列,分析各指令的功能,控制計算機各部件完成指定功能的各項操作。2、主存儲器主存儲器是用于存放程序和數(shù)據(jù)的部件。它由若干個存儲單元構(gòu)成。存儲單元的多少表示存儲器的容量。每個存儲單元使用一個唯一的編號來標識,稱為存儲單元的地址。對每個存儲單元內(nèi)容的存和取是按照地址進行訪問的。521、中央處理器CPU微型計算機中的中央處理器計算機存儲信息的基本單位是一個二進制位,一位可存儲一個二進制數(shù)0或1。每8位組成一個字節(jié)(BYTE)。76543210在大多數(shù)計算機中,存儲器的組織都是以字節(jié)為基本單位。每一個基本單位稱為一個存儲單元。一個存儲器是由許多的存儲單元構(gòu)成的,如某存儲器的容量為32KB,1MB,128MB等等。為了區(qū)分這些不同的存儲單元,一般使用單元地址來指示各個存儲單元。如一個10位二進制數(shù)表示的地址,可以用來區(qū)分210=1024=1K個單元。存儲器地址0000000000000000000100000000101111111111…………53計算機存儲信息的基本單位是一個二進制位,一位可存儲一個二進制習(xí)慣上將CPU與主存儲器合稱為主機在計算機中,除了主存儲器之外,一般還配置有輔助存儲器,簡稱輔存。由于它的位置是在主機之外,因此也叫做外存。3、輸入輸出設(shè)備及接口輸入設(shè)備將外部信息(程序、數(shù)據(jù)和命令)送入計算機。包括鍵盤、鼠標等。輸出設(shè)備將計算機處理后的結(jié)果轉(zhuǎn)換為人或其它系統(tǒng)能識別的信息形式向外輸出。如顯示器、打印機等。有的設(shè)備既具有輸入功能又具有輸出功能。如磁盤、磁帶、觸摸顯示屏等。54習(xí)慣上將CPU與主存儲器合稱為主機在計算機由于I/O設(shè)備的工作速度、工作原理以及所處理的信息格式等與主機相差很大,因此I/O設(shè)備要通過I/O接口才能與系統(tǒng)總線連接。I/O接口是主機與I/O設(shè)備之間設(shè)置的邏輯控制部件。通過它實現(xiàn)主機與I/O設(shè)備間的信息傳送。4、系統(tǒng)總線系統(tǒng)總線將CPU、存儲器和I/O設(shè)備連接起來,用于傳送各大部件之間的信息。系統(tǒng)總線包括地址總線、數(shù)據(jù)總線和控制總線三組。它們分別用于傳送不同的信息。55由于I/O設(shè)備的工作速度、工作原理以及所處理二、Intel8086/8088CPU的功能結(jié)構(gòu)指令是構(gòu)成匯編語言程序的最基本單位。就象高級語言中的一個語句。程序是由一系列的指令——指令序列構(gòu)成。CPU執(zhí)行指令序列就是重復(fù)執(zhí)行以下兩個步驟:
從存儲器中取指令執(zhí)行指令所規(guī)定的功能56二、Intel8086/8088CPU的功能結(jié)構(gòu)這兩個步驟的執(zhí)行又可以分為兩種情況:1.串行方式取指執(zhí)行存數(shù)取指執(zhí)行取指取數(shù)執(zhí)行忙閑忙忙閑忙忙閑CPU外部總線特點:(1)當CPU在執(zhí)行指令時,不需要占用外部總線,但此時總線也不能作它用,因此外部總線的空閑時間比較多。(2)在從存儲器取指令或數(shù)據(jù)時,總線處于忙狀態(tài),其所占用的時間也較長。但CPU卻只需要使用很短的時間去處理。因此大部分時間都是處于閑置狀態(tài)。采用串行工作方式的計算機其運行速度較慢時間57這兩個步驟的執(zhí)行又可以分為兩種情況:1.串行方式取指2.指令流水線結(jié)構(gòu)AHALBHBLCHCLDISPBPSI地址加法器IPCSDSSSES總線控制邏輯暫存器標志寄存器ALUEU控制器123456控制信號16位數(shù)據(jù)總線段寄存器通用寄存器組外部總線16位CPU內(nèi)總線AXBXCX20位地址總線指令隊列執(zhí)行單元(EU)總線接口單元(BIU)582.指令流水線結(jié)構(gòu)AHALBHBLCHCLDISPBPSI地(1)執(zhí)行單元EUEU的主要任務(wù)是分析與執(zhí)行指令,它包括:A、從指令隊列中取出指令代碼,由控制器譯碼后產(chǎn)生相應(yīng)的控制信號,控制各部件完成指令規(guī)定的操作。B、對操作數(shù)執(zhí)行各種指定的算術(shù)或邏輯運算C、向BIU發(fā)送訪問主存或I/0的命令,并提供相應(yīng)的地址和傳送的數(shù)據(jù)59(1)執(zhí)行單元EUEU的主要任務(wù)是分析與執(zhí)行指令,它包括:A(2)總線接口單元BIUBIU負責(zé)CPU與存儲器、I/0的信息傳送。具體功能包括:A、取指令——根據(jù)CS寄存器和指令指針I(yè)P形成20位的物理地址,從該地址指定的存儲器單元中取出指令,并暫存到指令隊列中,等待EU取走并執(zhí)行。B、存取數(shù)據(jù)——在EU執(zhí)行指令的過程中,如果需要與存儲器或I/O端口傳送數(shù)據(jù)時,根據(jù)EU提供的數(shù)據(jù)和地址,并結(jié)合相應(yīng)的段寄存器(DS、ES或SS)的內(nèi)容,進入外部總線周期,與存儲器或I/0進行數(shù)據(jù)的存取。EU和BIU是既分工又合作的兩個獨立部分。它們的操作在一定程序上是并行工作的,分別完成不同的任務(wù),因而大大加快了指令執(zhí)行速度。60(2)總線接口單元BIUBIU負責(zé)CPU與存儲器、I/0的信Intel8086/8088運行時執(zhí)行過程大致如下圖所示。執(zhí)行執(zhí)行執(zhí)行執(zhí)行忙存數(shù)取數(shù)取指取指取指取指忙忙忙忙忙EUBIU外部總線時間…...…...…...等待61Intel8086/8088運行時執(zhí)行過程大致如下圖所2.2Intel8086/8088CPU寄存器結(jié)構(gòu)及其用途一、通用寄存器AHALBHBLCHCLDHDLAXBXCXDXSPBPSIDIIPFLAGSDSESSSCS累加器基址寄存器計數(shù)寄存器數(shù)據(jù)寄存器堆棧寄存器基址寄存器源變址寄存器目的變址寄存器指令指針標志寄存器堆棧段寄存器代碼段寄存器數(shù)據(jù)段寄存器附加段寄存器通用寄存器8個控制寄存器2個段寄存器4個622.2Intel8086/8088CPU寄存器結(jié)構(gòu)及其Intel8086/8088有8個16位通用寄存器,它們一般不只用作某個特定的功能,而是具有良好的通用性,可以由程序設(shè)計人員進行編程訪問。1.數(shù)據(jù)寄存器它包括AX、BX、CX和DX四個寄存器。它們中的每一個既可以是16位寄存器,也可以分成兩個8位寄存器使用。即可以當作8個獨立的8位寄存器使用。數(shù)據(jù)寄存器既可以用來存放參加運算的操作數(shù),也可以存放運算的結(jié)果。在多數(shù)情況下,使用這些寄存器時必須在指令中指明。例:MOVAX,BX;將BX的內(nèi)容送到AX中ADDCH,DH;將DH和CH的內(nèi)容相加,結(jié)果送到CH63Intel8086/8088有8個16位在有些指令中,不需要明確指出使用的寄存器名,即隱念使用了某寄存器,稱為隱含使用。例如,在循環(huán)指令LOOP中,CX被隱含指定作循環(huán)次數(shù)計數(shù)用。另外,個別指令對寄存器有特定的使用,并且又必須在指令中指明它的名字,這類寄存器的使用稱為特定使用。例如,在移位指令(SHLAX,CL)中,CL被固定用作移位次數(shù)。2.指針寄存器指針寄存器有堆棧指針SP和基址指針BP它們一般被用作16位地址指針,在形成20位的物理地址時常被作為偏移量使用。64在有些指令中,不需要明確指出使用的寄存器名,SP指針——在進行堆棧操作時,被隱含使用,指向堆棧頂部單元。BP指針——被用來指向堆棧段內(nèi)某一存儲單元。BP除用作地址指針外也可以象數(shù)據(jù)寄存器一樣,存放參加運算的操作數(shù)和運算的結(jié)果。3.變址寄存器有兩個16位的變址寄存器SI和DI,一般被用來作地址指針。SI——源變址寄存器DI——目的變址寄存器同BP寄存器一樣,SI和DI也可以用作通用數(shù)據(jù)寄存器存放操作數(shù)和運算結(jié)果。65SP指針——在進行堆棧操作時,被隱含使用,指向堆棧頂部單元。二、段寄存器8086/8088CPU在使用存儲器時,將它劃分成若干個段。每個段用來存放不同目的內(nèi)容,如程序代碼、數(shù)據(jù)等等。每個存儲段用一個段寄存器來指明該段的起始位置(也叫段基址)。………………代碼段數(shù)據(jù)段堆棧段附加段ESCSDSSS段寄存器段基址段基址段基址段基址66二、段寄存器8086/8088CPU在使用存儲CPU在訪問存儲器時必須指明兩個內(nèi)容:(1)所訪問的存儲單元屬于哪個段,即指明使用的段寄存器。(2)該存儲單元與段起始地址(段基址)的偏移大小,即偏移量。在程序設(shè)計中,一個程序?qū)⒋鎯ζ鲃澐殖啥嗌賯€存儲段是任意的。但在程序運行的任何時刻最多只能有用CS、DS、ES和SS分別指定的4個當前段。67CPU在訪問存儲器時必須指明兩個內(nèi)容:(1)所訪問的存儲單元三、指令指針I(yè)PCPU在運行程序時,以IP的內(nèi)容作為將要執(zhí)行指令在內(nèi)存中的存放地址的偏移量,以段寄存器CS作為代碼段的基址指針,即以CS和IP的內(nèi)容共同構(gòu)成了一條指令的存放地址。CPU根據(jù)CS和IP寄存器的內(nèi)容到內(nèi)存中去取指令,當取出一條指令后,IP內(nèi)容自動修改為指向下一條指令。.........CSIP偏移量代碼段基址CPU下一條指令正在執(zhí)行的指令68三、指令指針I(yè)PCPU在運行程序時,以IP的子程序調(diào)用指令CALL,將IP原有內(nèi)容自動壓入堆棧,而將子程序的入口地址偏移量自動送入IP,而返回指令RET,又自動從堆棧中彈回原有IP的內(nèi)容。轉(zhuǎn)移指令將指令中的目的地址的偏移量送入IP例如,下面兩種指令就可以自動改變IP寄存器的內(nèi)容。
注意:IP的內(nèi)容不能被直接進行訪問,即不能用指令去讀IP的值,也不能用指令給它賦值。但是可以通過某些指令的執(zhí)行而自動修改IP的內(nèi)容。69子程序調(diào)用指令CALL,將IP原有內(nèi)容自動壓入堆棧,而將子程四、標志寄存器標志寄存器是用來反映CPU在程序運行時的某些狀態(tài),如是否有進位、奇偶性、結(jié)果的符號、結(jié)果是否為零等等。8086/8088CPU中標志寄存器的長度為16位,但其中只有9位才有意義。1514131211109876543210OFDFIFTFSFZFAFPFCF進位位奇偶位零值位輔助進位位單步標志位符號位中斷允許位方向位溢出位70四、標志寄存器標志寄存器是用來反映CPU在程1.進位位CF在進行算術(shù)運算時,若最高位(對字操作是第15位,字節(jié)操作是第7位)產(chǎn)生進位或借位時CF被自動置“1”,否則置“0”。在移位類指令中,CF也被用來存放從最高位(左移時)或最低位(右移時)移出的數(shù)值(0或1)。2.奇偶位PF當指令操作結(jié)果的低8位中含有1的個數(shù)為偶數(shù)時,則PF被置1,否則PF被置0。
注意:PF只反映操作結(jié)果的低8位的奇偶性,與指令操作數(shù)的長度無關(guān)。711.進位位CF在進行算術(shù)運算時,若最高位(對字操作3.輔助進位位AF在進行算術(shù)運算時,若低字節(jié)的低四位向高4位產(chǎn)生進位或借位,即第3位產(chǎn)生進位或借位時,AF位被置1,否則置0。AF標志位用于十進制運算的調(diào)整。注意:AF只反映運算結(jié)果低八位,與操作數(shù)長度無關(guān)。4.零值位ZF若運算結(jié)果各位全為0,則ZF被置1,否則置0。5.符號位SF將運算結(jié)果視為帶符號數(shù),當運算結(jié)果為負數(shù)時SF被置1,為正數(shù)時,則置0。723.輔助進位位AF在進行算術(shù)運算時,若低字由于第7位是字節(jié)操作數(shù)的符號位,而第15位是字操作數(shù)的符號位,因此,SF位與運算結(jié)果的最高位(第7位或第15位)相一致。6.溢出位OF當運算結(jié)果超過機器用補碼所能表示數(shù)的范圍時,則OF置1,否則置0.字節(jié)數(shù)據(jù),機器用補碼所能表示的數(shù)范圍為-128—+127。字數(shù)據(jù)的表示范圍為:-32768—+32767注意:溢出與進位是兩個完全不同的概念,不能相互混淆。73由于第7位是字節(jié)操作數(shù)的符號位,而第15位是例如:計算-85D+(-1D)=-86D10101011B+)11111111B10101010B1-86D計算100D+100D=200D01100100B+)01100100B11001000B-56DCF=0,OF=1,結(jié)果發(fā)生溢出,即結(jié)果出錯。進位被丟棄CF=1,OF=0,結(jié)果正確。74例如:計算-85D+(-1D)=-86D10101011計算-85D+-117D=-202D10101011B+)10001011B00110110B54D1CF=1,OF=1,結(jié)果發(fā)生溢出,即結(jié)果出錯。7.單步標志位TF(TraceFlag)單步標志也叫跟蹤位,該標志為控制標志位,當TF位被設(shè)置為1時,每執(zhí)行一條指令后,CPU暫停運行,即產(chǎn)生單步中斷。單步標志位供調(diào)試程序使用。75計算-85D+-117D=-202D10108.中斷允許位IF該標志位為控制標志位。當IF被設(shè)置為1時,CPU可以響應(yīng)可屏蔽中斷,否則不允許響應(yīng)可屏蔽中斷。9.方向位DFDF也是控制標志位。它被用來規(guī)定串操作指令的增減方向。當DF=0時,串操作指令自動使變址寄存器(SI和DI)的內(nèi)容遞增。當DF=1時,串操作指令自動使變址寄存器的內(nèi)容遞減。768.中斷允許位IF該標志位為控制標志位。2.3存儲器一、存儲器的組成1.存儲器是由若干個存儲單元構(gòu)成存儲單元的多少就表示了存儲器的容量。2.每個存儲單元存放相同長度的二進制數(shù)一個存儲單元的長度一般為8位二進制數(shù),稱為一個字節(jié)(BYTE)。3.每個存儲單元有一個唯一的地址編碼——地址8086/8088CPU具有20根地址線,即它可以產(chǎn)生20位的地址碼,它的存儲器尋址能力為220,即1兆字節(jié)空間。772.3存儲器一、存儲器的組成1.存儲器是由若干個存儲這一兆字節(jié)存儲單元的地址范圍為:00…...0~11…...1。如圖所示。20位20位…...07存儲單元(字節(jié))二進制數(shù)地址000000000000000000000000000000000000000100000000000000000010…...1111111111111111111011111111111111111111十六進制數(shù)地址00000H00001H00002HFFFFEHFFFFFH…...為了方便書寫,在源程序中常用5位十六進制數(shù)或一個符號來表示一個存儲單元的地址。78這一兆字節(jié)存儲單元的地址范圍為:00…...0~11…...4.任何兩個相鄰字節(jié)單元就構(gòu)成一個字單元一個字存儲單元(WORD)的長度為16位二進制數(shù),即兩個字節(jié)。字單元的地址為兩個字節(jié)單元中較小地址字節(jié)單元的地址。16位長數(shù)據(jù)的存放規(guī)則是低8位放在較低地址字節(jié)單元中,高8位放在較高地址字節(jié)單元中。例如,將數(shù)據(jù)3456H放在地址為09235H的存儲單元中的存儲分配如圖所示。......地址存儲單元09235H09236H5634794.任何兩個相鄰字節(jié)單元就構(gòu)成一個字單元5、在定義一個地址時必須指出是字節(jié)或字類型屬性由于存儲單元可分為字單元和字節(jié)單元,因此8086/8088CPU訪問內(nèi)存的指令中,分為字節(jié)訪問和字訪問兩種指令。二、存儲器的段結(jié)構(gòu)8086/8088系統(tǒng)的存儲器段結(jié)構(gòu)具有以下幾個特點:1.8086/8088CPU將1MB的存儲空間劃分成若干個段,每個段最大長度為64K(65536)個字節(jié)單元組成。在8086/8088的匯編程序中,用戶可以根據(jù)自己需要來設(shè)定段的個數(shù)、各個段長度和每個段的用途。并且代碼或數(shù)據(jù)可以存放在段內(nèi)任意單元中。805、在定義一個地址時必須指出是字節(jié)或字類型屬性2.每個段的基址必須是一個小節(jié)的首址。段基址——一個段的起始地址。在存儲器中規(guī)定從0地址開始,每16個字節(jié)單元稱為一個小節(jié)(Paragraph)。因此,1MB內(nèi)存就可劃分為64K個小節(jié)。第1小節(jié):00000H,00001H,00002H……0000FH第2小節(jié):00010H,00011H,00012H……0011FH第65535小節(jié):FFFE0HFFFE1HFFFE2H……FFFEFH第65536小節(jié):FFFF0HFFFF1HFFFF2H……FFFFFH…..…..…..…..…..可以看出,每個小節(jié)的首地址最低位必為0(16進制數(shù)表示)。因此段基址只能是上述64K個小節(jié)首址之一。812.每個段的基址必須是一個小節(jié)的首址。段基址——一個段的起3.邏輯段在物理存儲器中可以是鄰接的、間隔的、部分重疊的和完全重疊的等4種情況。邏輯段是指在匯編語言源程序中設(shè)置的段。內(nèi)存中的一個物理存儲單元可以映象到一個或多個邏輯段中。物理存儲器00000H10000HDA_BYTE段1段2段3段4段5鄰接部分重疊完全重疊間隔邏輯段0FFFFFHDA_BYTE物理單元可以映象到邏輯段2、段3和段4中。823.邏輯段在物理存儲器中可以是鄰接的、間隔的、部分重疊的和4、在任一時刻,一個程序只能訪問4個段中的內(nèi)容。4個段分別是代碼段、數(shù)據(jù)段、堆棧段和附加段,稱為當前段。4個段寄存器CS、DS、SS和ES分別保存了它們段基址的高16位地址,稱為段基值。段基址的最低4位為0。(小節(jié)首址的低4位為全0)。三、邏輯地址與物理地址及相互關(guān)系1.物理地址在1MB的存儲空間中,每個存儲單元的物理地址是唯一的,它就是該存儲單元的20位地址。8086/8088的物理地址范圍:00000H~0FFFFFH834、在任一時刻,一個程序只能訪問4個段中的內(nèi)容。CPU與存儲器之間的任何信息交換都使用物理地址。2.邏輯地址在程序設(shè)計中,為了便于程序的開發(fā)和對存儲器進行動態(tài)管理,使用了邏輯地址。一個邏輯地址包括兩個部分:段基值和偏移量(OFFSET)段基值:存放在某一個段寄存器中,是一個邏輯段的起始單元地址(段基址)的高16位。偏移量:表示某個存儲單元與它所在段的段基址之間的字節(jié)距離。當偏移量為0時,就是這個段的起始單元,而偏移量為0FFFFFH時,就是這個段的最后一個字節(jié)單元。84CPU與存儲器之間的任何信息交換都使用物理地址。2.邏輯地邏輯地址的表示方法是段基值:偏移量例:3267H:00A0H它表示該邏輯單元位于段起始地址為32670H,段內(nèi)偏移量為00A0H個字節(jié)。3.邏輯地址轉(zhuǎn)換為物理地址當CPU要訪問存儲器時,需要由總線接口單元BIU將邏輯地址轉(zhuǎn)換成物理地址。轉(zhuǎn)換方法:將邏輯地址的段基值左移4位,形成20位的段基址(低位為0)然后與16位的偏移量相加,結(jié)果即為20位的物理地址。其轉(zhuǎn)換示例如圖所示。85邏輯地址的表示方法是段基值:偏移量例:3267H:段1:2B0H段2:2C0H002D3H偏移量23H偏移量13H0915H003AH09150H003AH+)0918AH偏移量段基值邏輯地址物理地址右圖表示同一個物理地址002D3H被被兩個邏輯段中的邏輯地址映射。002B0H+00023H=002D3H002C0H+00013H=002D3H86段1:2B0H段2:2C0H002D3H偏移量23H偏移量14.邏輯地址的來源在程序的執(zhí)行過程中,CPU根據(jù)不同操作類型訪問存儲器,其邏輯地址中段基值和偏移量的來源是不一樣的。下表是各種操作類型所對應(yīng)的邏輯地址的來源。邏輯地址隱含來源允許替代來源偏移量(OFFSET)操作類型序號123456取指令堆棧操作取源串存目的串以BP作基址存取一般變量DICSSSDSESSSDSIPSPSI有效地址EA有效地址EA無無CS,SS,ES無CS,DS,ESCS,SS,ES段基值874.邏輯地址的來源在程序的執(zhí)行過程中,CP說明:(1)允許替代來源也叫做段超越,它表示了段基值除使用隱含的段寄存器外是否可以指定其它段寄存器來提供。(2)有效地址EA,它表示根據(jù)指令所采用的尋址方式(下一章介紹)計算出來的段內(nèi)偏移量。88說明:(1)允許替代來源也叫做段超越,它表示了段基值除2.4堆棧及其操作方法堆棧是一個特定的存儲區(qū),訪問該存儲區(qū)必須按照指定的規(guī)則進行操作。堆棧一般分為:和專用
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2019粵教版 高中美術(shù) 選擇性必修2 中國書畫 《第二單元 中國書法》大單元整體教學(xué)設(shè)計2020課標
- 2024屆河北省邯鄲市六校第一次教學(xué)質(zhì)量檢測試題(合肥一模)數(shù)學(xué)試題
- 茶樓合伙協(xié)議書范本
- 北京統(tǒng)一租賃房屋租賃合同
- 童謠兒歌我來讀活動
- 腎臟移植手術(shù)
- 山東省濱州市2024-2025學(xué)年八年級上學(xué)期期中考試語文試題(含答案)
- 湖南省益陽市赫山區(qū)箴言龍光橋?qū)W校2024-2025學(xué)年一年級上學(xué)期期中考試數(shù)學(xué)試題(無答案)
- 【初中地理】影響氣候的因素課件-2024-2025學(xué)年湘教版地理七年級上冊
- 電影機械行業(yè)相關(guān)投資計劃提議
- 藍色插畫風(fēng)護理部工作總結(jié)PPT通用模板
- 干貨間充質(zhì)干細胞功能及應(yīng)用PPT通用課件
- 涂布機操作培訓(xùn)教材(ppt29張)課件
- 深度游標卡尺的使用方法
- 驕傲的孔雀(1)
- 汽車尾氣排放檢測操作標準
- 人教版小學(xué)階段數(shù)學(xué)知識網(wǎng)絡(luò)圖
- 《中醫(yī)基礎(chǔ)理論腎》PPT課件.ppt
- CNAS-EC-017_2017《認證機構(gòu)認可風(fēng)險分級管理辦法》
- 高壓線遷移施工方案
- 中國移動分公司營業(yè)廳服務(wù)守則管理守則
評論
0/150
提交評論