匯編語言程序設(shè)計2_第1頁
匯編語言程序設(shè)計2_第2頁
匯編語言程序設(shè)計2_第3頁
匯編語言程序設(shè)計2_第4頁
匯編語言程序設(shè)計2_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2.1 8086CPU編程結(jié)構(gòu)編程結(jié)構(gòu)2.2 8086存儲器結(jié)微機構(gòu)存儲器結(jié)微機構(gòu)2.3 8086的的I/O接口接口 8086/8088微處理器是微處理器是Intel公司推出的第三代公司推出的第三代CPU芯芯片,它們的內(nèi)部結(jié)構(gòu)基本相同,內(nèi)部數(shù)據(jù)總線都是片,它們的內(nèi)部結(jié)構(gòu)基本相同,內(nèi)部數(shù)據(jù)總線都是16位,位,都采用都采用16位結(jié)構(gòu)進(jìn)行操作及存儲器尋址,但外部性能有所位結(jié)構(gòu)進(jìn)行操作及存儲器尋址,但外部性能有所差異,差異,8086是是16為微型處理器,為微型處理器,CPU與外部進(jìn)行數(shù)據(jù)交與外部進(jìn)行數(shù)據(jù)交換數(shù)據(jù)總線采用換數(shù)據(jù)總線采用16位,而位,而8088是準(zhǔn)是準(zhǔn)16為微型處理器,為微型處理器,CPU

2、與外部進(jìn)行數(shù)據(jù)交換數(shù)據(jù)總線采用與外部進(jìn)行數(shù)據(jù)交換數(shù)據(jù)總線采用16位,最大尋找空位,最大尋找空間為間為1M。兩者具有類似的體系結(jié)構(gòu),指令系統(tǒng)、指令編。兩者具有類似的體系結(jié)構(gòu),指令系統(tǒng)、指令編碼格式、尋址方式完全相同,兩種處理器都封裝在相同的碼格式、尋址方式完全相同,兩種處理器都封裝在相同的40腳雙列直插組件腳雙列直插組件(DIP)中。中。 8086/8088CPU編程結(jié)構(gòu)是指從程序員和使用者的角度看到編程結(jié)構(gòu)是指從程序員和使用者的角度看到的結(jié)構(gòu),亦可稱為功能結(jié)構(gòu),其內(nèi)部結(jié)構(gòu)如圖所示。的結(jié)構(gòu),亦可稱為功能結(jié)構(gòu),其內(nèi)部結(jié)構(gòu)如圖所示。AHALBHBLCHCLDHDL通用寄存器SPBPSIDI數(shù) 據(jù)寄存

3、器指針和變址寄存器內(nèi)部數(shù)據(jù)總線(16位)運算寄存器EU控制電路AXBXCXDX標(biāo)志寄存器執(zhí)行單元(EU)總線接口單元(BIU)1 2 3 4 5 6指令隊列緩沖器(8位)內(nèi)部寄存器IPESSSDSCSALUDB(16位)AB(20位)輸入輸出控制電 路8086總線DB(16位)20位地址加法器 按功能可分為兩部分:執(zhí)行單元按功能可分為兩部分:執(zhí)行單元EU(Execution Unit)和總和總線接口單元線接口單元BIU(Bus Interface Unit)。 2.1.1執(zhí)行單元執(zhí)行單元EU 執(zhí)行單元包括算術(shù)邏輯單元執(zhí)行單元包括算術(shù)邏輯單元(ALU),狀態(tài)標(biāo)志寄存器,狀態(tài)標(biāo)志寄存器(FLAGS

4、),一組通用寄存器組和相應(yīng)的控制電路,所有寄,一組通用寄存器組和相應(yīng)的控制電路,所有寄存器都是存器都是16位的,執(zhí)行單元不直接與外設(shè)交換信息,它通位的,執(zhí)行單元不直接與外設(shè)交換信息,它通過總線接口單元接收指令和數(shù)據(jù),可以進(jìn)行過總線接口單元接收指令和數(shù)據(jù),可以進(jìn)行8位和位和16位算位算術(shù)運算、邏輯運算和移位操作等。術(shù)運算、邏輯運算和移位操作等。 2.1.2總線接口單元總線接口單元BIU 總線接口單元總線接口單元BIU的功能是負(fù)責(zé)的功能是負(fù)責(zé)CPU與存儲器、與存儲器、I/O的信息的信息傳送。具體功能是根據(jù)段寄存器傳送。具體功能是根據(jù)段寄存器CS和指令指針和指令指針I(yè)P形成的形成的20位物理地址從存

5、儲器中取出指令,并暫存在指令隊列中,位物理地址從存儲器中取出指令,并暫存在指令隊列中,等待執(zhí)行單元等待執(zhí)行單元EU取走并執(zhí)行。取走并執(zhí)行。 總線接口單元由一個指令隊列,一組段寄存器總線接口單元由一個指令隊列,一組段寄存器(DS、CS、ES、SS),一個指令指針寄存器,一個指令指針寄存器(IP),地址加法器組成。,地址加法器組成。地址加法器根據(jù)地址加法器根據(jù)EU的請求,形成的請求,形成20位的實際物理地址,位的實際物理地址,完成完成CPU與存儲器或與存儲器或I/O接口的數(shù)據(jù)交換。接口的數(shù)據(jù)交換。8086CPU的指的指令隊列為令隊列為6個字節(jié)個字節(jié)(8088為為4字節(jié)字節(jié)),在執(zhí)行指令的同時,可,

6、在執(zhí)行指令的同時,可從內(nèi)存中取出后續(xù)的指令代碼,放在指令隊列中,可以提從內(nèi)存中取出后續(xù)的指令代碼,放在指令隊列中,可以提高高CPU的工作效率。的工作效率。 BIU與與EU的動作協(xié)調(diào)原則:的動作協(xié)調(diào)原則: 總線接口部件總線接口部件(BIU)和執(zhí)行部件和執(zhí)行部件(EU)按以下流水線技術(shù)原按以下流水線技術(shù)原則協(xié)調(diào)工作,共同完成所要求的信息處理任務(wù):則協(xié)調(diào)工作,共同完成所要求的信息處理任務(wù): (1)每當(dāng))每當(dāng)8086的指令隊列中有兩個空字節(jié),或的指令隊列中有兩個空字節(jié),或8088的指的指令隊列中有一個空字節(jié)時,令隊列中有一個空字節(jié)時,BIU就會自動把指令取到指令就會自動把指令取到指令隊列中。其取指的順

7、序是按指令在程序中出現(xiàn)的前后順序。隊列中。其取指的順序是按指令在程序中出現(xiàn)的前后順序。 (2)每當(dāng))每當(dāng)EU準(zhǔn)備執(zhí)行一條指令時,它會從準(zhǔn)備執(zhí)行一條指令時,它會從BIU部件的指部件的指令隊列前部取出指令的代碼,然后用幾個時鐘周期去執(zhí)行令隊列前部取出指令的代碼,然后用幾個時鐘周期去執(zhí)行指令。在執(zhí)行指令的過程中,如果必須訪問存儲器或者指令。在執(zhí)行指令的過程中,如果必須訪問存儲器或者IO端口,那么端口,那么EU就會請求就會請求BIU,進(jìn)入總線周期,完成訪問,進(jìn)入總線周期,完成訪問內(nèi)存或者內(nèi)存或者IO端口的操作;如果此時端口的操作;如果此時BIU正好處于空閑狀正好處于空閑狀態(tài),會立即響應(yīng)態(tài),會立即響應(yīng)E

8、U的總線請求。如的總線請求。如BIU正將某個指令字節(jié)正將某個指令字節(jié)取到指令隊列中,則取到指令隊列中,則BIU將首先完成這個取指令的總線周將首先完成這個取指令的總線周期,然后再去響應(yīng)期,然后再去響應(yīng)EU發(fā)出的訪問總線的請求。發(fā)出的訪問總線的請求。 (3)當(dāng)指令隊列已滿,且)當(dāng)指令隊列已滿,且EU又沒有總線訪問請求時,又沒有總線訪問請求時,BIU便進(jìn)入空閑狀態(tài)。便進(jìn)入空閑狀態(tài)。 (4)在執(zhí)行轉(zhuǎn)移指令、調(diào)用指令和返回指令時,由于待)在執(zhí)行轉(zhuǎn)移指令、調(diào)用指令和返回指令時,由于待執(zhí)行指令的順序發(fā)生了變化,則指令隊列中已經(jīng)裝入的字執(zhí)行指令的順序發(fā)生了變化,則指令隊列中已經(jīng)裝入的字節(jié)被自動消除,節(jié)被自動消

9、除,BIU會接著往指令隊列裝入轉(zhuǎn)向的另一程會接著往指令隊列裝入轉(zhuǎn)向的另一程序段中的指令代碼。序段中的指令代碼。 總線接口單元由一個指令隊列,一組段寄存器總線接口單元由一個指令隊列,一組段寄存器(DS、CS、ES、SS),一個指令指針寄存器,一個指令指針寄存器(IP),地址加法器組成。,地址加法器組成。地址加法器根據(jù)地址加法器根據(jù)EU的請求,形成的請求,形成20位的實際物理地址,位的實際物理地址,完成完成CPU與存儲器或與存儲器或I/O接口的數(shù)據(jù)交換。接口的數(shù)據(jù)交換。8086CPU的指的指令隊列為令隊列為6個字節(jié)個字節(jié)(8088為為4字節(jié)字節(jié)),在執(zhí)行指令的同時,可,在執(zhí)行指令的同時,可從內(nèi)存中

10、取出后續(xù)的指令代碼,放在指令隊列中,可以提從內(nèi)存中取出后續(xù)的指令代碼,放在指令隊列中,可以提高高CPU的工作效率。的工作效率。 2.1.3 8086/8088內(nèi)部寄存器內(nèi)部寄存器 8086/8088內(nèi)部的寄存器可以分為通用寄存器和專用寄存內(nèi)部的寄存器可以分為通用寄存器和專用寄存器兩大類,專用寄存器包括器兩大類,專用寄存器包括IP、SP和和FLAGS三個三個16位寄位寄存器。存器。 1通用寄存器通用寄存器 數(shù)據(jù)寄存器、指針寄存器和變址寄存器統(tǒng)稱為通用寄存器。數(shù)據(jù)寄存器、指針寄存器和變址寄存器統(tǒng)稱為通用寄存器。數(shù)據(jù)寄存器主要用于保存操作數(shù)運算結(jié)果等信息,有四個數(shù)據(jù)寄存器主要用于保存操作數(shù)運算結(jié)果等

11、信息,有四個16位的數(shù)據(jù)寄存器位的數(shù)據(jù)寄存器AX,BX,CX,DX可分解成八個獨立可分解成八個獨立的的8位寄存器,這八個位寄存器,這八個8位的寄存器有各自的名稱,分別稱位的寄存器有各自的名稱,分別稱為為AH,AL,BH,BL,CH,CL,DH,DL,并且均可以,并且均可以獨立存取。名稱中的字母獨立存取。名稱中的字母H表示高,表示高,L表示低。如表示低。如AL表示表示低低8位,位,AH表示高表示高8位,位,AH寄存器和寄存器和AL寄存器的合并就寄存器的合并就是是AX寄存器,其他寄存器類推。即低位字節(jié)的寄存器分寄存器,其他寄存器類推。即低位字節(jié)的寄存器分別稱作別稱作AL、BL、CL和和DL,高位字

12、節(jié)的寄存器分別稱作,高位字節(jié)的寄存器分別稱作AH、BH、CH和和DH。 AX和和AL寄存器又稱為累加寄存器寄存器又稱為累加寄存器(Accumulator)。一般。一般通過累加器進(jìn)行的操作所用的時間可能最少,此外累加器通過累加器進(jìn)行的操作所用的時間可能最少,此外累加器還有許多專門的用途,所以累加器使用的最普遍。還有許多專門的用途,所以累加器使用的最普遍。 BX寄存器成為基寄存器成為基(Base)地址寄存器。他是四個寄存器中地址寄存器。他是四個寄存器中唯一可作為存儲器基址指針使用的寄存器。唯一可作為存儲器基址指針使用的寄存器。 CX寄存器稱為計數(shù)寄存器稱為計數(shù)(Count)寄存器。在字符串操作和循

13、環(huán)寄存器。在字符串操作和循環(huán)操作時,用它來控制重復(fù)循環(huán)操作次數(shù)。在一位操作時,操作時,用它來控制重復(fù)循環(huán)操作次數(shù)。在一位操作時,CL寄存器用于保存移位的位數(shù)。寄存器用于保存移位的位數(shù)。 DX寄存器稱為數(shù)據(jù)寄存器稱為數(shù)據(jù)(Data)寄存器。在進(jìn)行寄存器。在進(jìn)行32位的乘除法位的乘除法操作時,用它存放被除數(shù)的高操作時,用它存放被除數(shù)的高16位或余數(shù)。它也用于存放位或余數(shù)。它也用于存放I/O端口地址。端口地址。變址寄存器變址寄存器(SI、DI)和指針寄存器和指針寄存器(BP、SP)主要用于存放主要用于存放某個存儲單元的偏移地址,或某組存儲單元開始地址的偏移某個存儲單元的偏移地址,或某組存儲單元開始地

14、址的偏移量,即作為存儲器量,即作為存儲器(短短)指針使用。作為通用寄存器,它們也指針使用。作為通用寄存器,它們也可以保存可以保存16位算術(shù)邏輯運算中的操作數(shù)和運算結(jié)果,有時運位算術(shù)邏輯運算中的操作數(shù)和運算結(jié)果,有時運算結(jié)果就是需要的存儲單元地址的偏移量。注意,算結(jié)果就是需要的存儲單元地址的偏移量。注意,16位的變位的變址寄存器和指針寄存器不能分解成址寄存器和指針寄存器不能分解成8位寄存器使用。位寄存器使用。SI和和DI寄存器在字符串操作中,規(guī)定由寄存器在字符串操作中,規(guī)定由SI給出源串指針,由給出源串指針,由DI給出給出目的串指針,所以目的串指針,所以SI也稱為源變址也稱為源變址(Source

15、 Index)寄存器,寄存器,DI也稱為目的變址也稱為目的變址(Destination Index)寄存器。寄存器。BP和和SP寄存器在對堆棧操作時,寄存器在對堆棧操作時,BP主要用于給出堆棧中主要用于給出堆棧中數(shù)據(jù)區(qū)基址的偏移地址,從而方便的實現(xiàn)直接存取堆棧中的數(shù)據(jù)區(qū)基址的偏移地址,從而方便的實現(xiàn)直接存取堆棧中的數(shù)據(jù),所以數(shù)據(jù),所以BP也稱為基指針也稱為基指針(Base Pointer)寄存器。正常寄存器。正常情況下,情況下,SP只作為堆棧指針只作為堆棧指針(Stack Pointer)使用,即保存使用,即保存堆棧棧頂?shù)刂返钠啤6褩m數(shù)刂返钠啤?段寄存器段寄存器8086/8088CPU

16、依賴其內(nèi)部的四個段寄存器實現(xiàn)尋址依賴其內(nèi)部的四個段寄存器實現(xiàn)尋址1M字節(jié)的物理地字節(jié)的物理地址空間。址空間。8086/8088把把1M字節(jié)地址空間分成若干邏輯段,當(dāng)前使用段的字節(jié)地址空間分成若干邏輯段,當(dāng)前使用段的起始地址起始地址(段基址段基址)存放在段寄存器中。由段基址和段內(nèi)偏移地址形成存放在段寄存器中。由段基址和段內(nèi)偏移地址形成20位地址,我們將在下節(jié)詳細(xì)介紹形成位地址,我們將在下節(jié)詳細(xì)介紹形成20位地址的具體方法。位地址的具體方法。8086/8088CPU的四個段寄存器均是的四個段寄存器均是16位的,分別稱為代碼段位的,分別稱為代碼段(Code Segment)寄存器寄存器CS,數(shù)據(jù)段,

17、數(shù)據(jù)段(Data Segment)寄存器寄存器DS,堆棧段,堆棧段(Stack Segment)寄存器寄存器SS,附加段,附加段(Extra Segment)寄存器寄存器ES。段寄。段寄存器主要解決存器主要解決20位地址形成和程序中指令代碼與數(shù)據(jù)分開存放,除位地址形成和程序中指令代碼與數(shù)據(jù)分開存放,除CS是是用于指示指令代碼的地址空間之外,其它段寄存器都用于指示數(shù)據(jù)的地用于指示指令代碼的地址空間之外,其它段寄存器都用于指示數(shù)據(jù)的地址空間。址空間。3指令指針寄存器指令指針寄存器IP8086/8088CPU中的指令指針寄存器中的指令指針寄存器IP(Instruction Pointer)也是也是1

18、6位位的,它給出將要從主存中取出指令在代碼段中的偏移地址,其值為該指的,它給出將要從主存中取出指令在代碼段中的偏移地址,其值為該指令到所在段基址的字節(jié)距離。令到所在段基址的字節(jié)距離。 OF DF IF TF SF ZF AF PF CF進(jìn)進(jìn)借借位位標(biāo)標(biāo)志志奇奇偶偶標(biāo)標(biāo)志志半半進(jìn)進(jìn)借借位位標(biāo)標(biāo)志志零零標(biāo)標(biāo)志志符符號號標(biāo)標(biāo)志志單單步步中中斷斷中中斷斷允允許許方方向向標(biāo)標(biāo)志志溢溢出出標(biāo)標(biāo)志志1-有進(jìn)、借位有進(jìn)、借位0-無進(jìn)、借位無進(jìn)、借位1-低低4位向高位向高4位有進(jìn)、借位位有進(jìn)、借位0-低低4位向高位向高4位無進(jìn)、借位位無進(jìn)、借位1-結(jié)果為結(jié)果為00-結(jié)果不為結(jié)果不為04標(biāo)志寄存器標(biāo)志寄存器FLA

19、GS標(biāo)志寄存器又稱為程序狀態(tài)字寄存器標(biāo)志寄存器又稱為程序狀態(tài)字寄存器(program status word, PSW)。各標(biāo)志在標(biāo)志寄存器中的位置如下所示:。各標(biāo)志在標(biāo)志寄存器中的位置如下所示:有些指令的執(zhí)行受某些標(biāo)志的影響,有些指令的執(zhí)行不受標(biāo)志的有些指令的執(zhí)行受某些標(biāo)志的影響,有些指令的執(zhí)行不受標(biāo)志的影響。所以,程序員要充分注意指令與標(biāo)志的關(guān)系。影響。所以,程序員要充分注意指令與標(biāo)志的關(guān)系。9個標(biāo)志可分成兩組,第一組個標(biāo)志可分成兩組,第一組6個標(biāo)志主要受算術(shù)運算和邏輯運算個標(biāo)志主要受算術(shù)運算和邏輯運算結(jié)果的影響,稱為運算結(jié)果標(biāo)志,第二組標(biāo)志不受運算結(jié)果的影結(jié)果的影響,稱為運算結(jié)果標(biāo)志,第

20、二組標(biāo)志不受運算結(jié)果的影響,稱為狀態(tài)控制標(biāo)志。響,稱為狀態(tài)控制標(biāo)志。(1)運算結(jié)果(狀態(tài))標(biāo)志位)運算結(jié)果(狀態(tài))標(biāo)志位OF(Overflow Flag)溢出標(biāo)志:在運算過程中,如操作數(shù)超出了溢出標(biāo)志:在運算過程中,如操作數(shù)超出了機器能表示的范圍,則稱為溢出。此時機器能表示的范圍,則稱為溢出。此時OF位置位置1,否則置,否則置0。SF(Sign Flag)符號標(biāo)志:記錄運算結(jié)果的符號,結(jié)果為負(fù)時置符號標(biāo)志:記錄運算結(jié)果的符號,結(jié)果為負(fù)時置1,否則置否則置0。ZF(Zero Flag)零標(biāo)志:運算結(jié)果為零標(biāo)志:運算結(jié)果為0時時ZF位置位置1,否則置,否則置0。CF(Carry Flag)進(jìn)位標(biāo)志

21、:記錄運算時有效位產(chǎn)生的進(jìn)位值。例進(jìn)位標(biāo)志:記錄運算時有效位產(chǎn)生的進(jìn)位值。例如,執(zhí)行加法指令時,最高有效位有進(jìn)位時置如,執(zhí)行加法指令時,最高有效位有進(jìn)位時置1,否則置,否則置0。AF(Auxiliary carry Falg)輔助進(jìn)位標(biāo)志:記錄運算時第輔助進(jìn)位標(biāo)志:記錄運算時第3位位(半個半個字節(jié)字節(jié))產(chǎn)生的進(jìn)位值。例如,執(zhí)行加法指令時第產(chǎn)生的進(jìn)位值。例如,執(zhí)行加法指令時第3位有進(jìn)位時置位有進(jìn)位時置1,否則置否則置0。PF(Parity Flag)奇偶標(biāo)志:用來為機器中傳送信息時可能產(chǎn)生的奇偶標(biāo)志:用來為機器中傳送信息時可能產(chǎn)生的代碼出錯情況提供檢驗條件。當(dāng)結(jié)果操作數(shù)中代碼出錯情況提供檢驗條件

22、。當(dāng)結(jié)果操作數(shù)中1的個數(shù)為偶數(shù)時置的個數(shù)為偶數(shù)時置1,否則置,否則置0。2)控制標(biāo)志位)控制標(biāo)志位DF(Direction Flag)方向標(biāo)志:在串處理指令中控制處理信方向標(biāo)志:在串處理指令中控制處理信息的方向用。當(dāng)息的方向用。當(dāng)DF位為位為1時,每次操作后是變址寄存器時,每次操作后是變址寄存器SI和和DI減量,這樣就是串處理從高地址向低地址方向處理。當(dāng)減量,這樣就是串處理從高地址向低地址方向處理。當(dāng)DF為為0時,則使時,則使SI和和DI增量,使串處理從低地址向高地址方增量,使串處理從低地址向高地址方向處理。向處理。8086/8088提供的專門用于設(shè)置方向標(biāo)志提供的專門用于設(shè)置方向標(biāo)志DF的指

23、令的指令是是STF,專門用于清除,專門用于清除DF的指令時的指令時CLD。IF(Interrupt Flag)中斷向量:當(dāng)中斷向量:當(dāng)IF為為1時,允許中斷,否則時,允許中斷,否則關(guān)閉中斷。關(guān)閉中斷。8086/8088提供的專門用于設(shè)置中斷允許標(biāo)志提供的專門用于設(shè)置中斷允許標(biāo)志IF的指令是的指令是STI,專門用于清,專門用于清IF的指令是的指令是CLI。TF(Trap Flag)追蹤標(biāo)志:用于單步操作方式,當(dāng)追蹤標(biāo)志追蹤標(biāo)志:用于單步操作方式,當(dāng)追蹤標(biāo)志TF被置被置1后,后,CPU進(jìn)入單步方式。所謂單步方式是指在一條進(jìn)入單步方式。所謂單步方式是指在一條指令執(zhí)行后,產(chǎn)生一個單步中斷,這主要用于程

24、序的調(diào)試。指令執(zhí)行后,產(chǎn)生一個單步中斷,這主要用于程序的調(diào)試。8086/8088沒有專門設(shè)置和清除沒有專門設(shè)置和清除TF標(biāo)志的指令,用通過其他標(biāo)志的指令,用通過其他方法設(shè)置或清除方法設(shè)置或清除TF。2.2.1 存儲單元的地址和內(nèi)容存儲單元的地址和內(nèi)容計算機存儲器以字節(jié)為單位存儲信息,計算機存儲器以字節(jié)為單位存儲信息,為了正確的存放或取得信息,每一個為了正確的存放或取得信息,每一個字節(jié)單元給以一個存儲器地址。地址字節(jié)單元給以一個存儲器地址。地址從從0開始編號,順序地每次加開始編號,順序地每次加1。在。在機器里,地址也是用二進(jìn)制數(shù)來表示機器里,地址也是用二進(jìn)制數(shù)來表示的的,它是無符號整數(shù),為了書寫

25、和編它是無符號整數(shù),為了書寫和編程方便地址格式一般采用十六進(jìn)制數(shù)程方便地址格式一般采用十六進(jìn)制數(shù)表示。從圖中可以看到,表示。從圖中可以看到, 地址為地址為1001H的字節(jié)存儲單元中的內(nèi)容是的字節(jié)存儲單元中的內(nèi)容是34H,而地址為,而地址為200AH的字節(jié)存儲單的字節(jié)存儲單元中的內(nèi)容是元中的內(nèi)容是78H。分別記為:。分別記為:(1000H)=33H(200AH)=78H存儲器地址33H1000H34H1001H35H1002H36H10033H78H200AH89H200BH8086微機的字長為微機的字長為16位,由位,由2個字節(jié)組成一個字,分成低位個字節(jié)組成一個字,分成低位字節(jié)和高位字節(jié)。一個

26、字存放到存儲器要占用連續(xù)的兩個字字節(jié)和高位字節(jié)。一個字存放到存儲器要占用連續(xù)的兩個字節(jié)單元,系統(tǒng)規(guī)定,當(dāng)把一個字節(jié)存放到存儲器時,其低字節(jié)單元,系統(tǒng)規(guī)定,當(dāng)把一個字節(jié)存放到存儲器時,其低字節(jié)存放在低地址的字節(jié)單元中,其高字節(jié)存放在高地址的字節(jié)存放在低地址的字節(jié)單元中,其高字節(jié)存放在高地址的字節(jié)單元中。這樣二個連續(xù)的字節(jié)單元就構(gòu)成了一個字單元,節(jié)單元中。這樣二個連續(xù)的字節(jié)單元就構(gòu)成了一個字單元,字單元的地址采用它的低地址表示。例如,圖中地址字單元的地址采用它的低地址表示。例如,圖中地址1000H的字單元的內(nèi)容是的字單元的內(nèi)容是3433H,而地址為,而地址為200AH單元的內(nèi)容是單元的內(nèi)容是898

27、7H。分別記為:。分別記為:(1000H)=3433H(200AH)=8978H上述存儲原則稱為上述存儲原則稱為“高高低低高高低低”原則。在以字節(jié)方式存取字原則。在以字節(jié)方式存取字時需要特別注意該原則,當(dāng)以字方式存取字時,處理器自動時需要特別注意該原則,當(dāng)以字方式存取字時,處理器自動采用該原則。采用該原則。2.2.2 存儲器的分段技術(shù)存儲器的分段技術(shù) 8086/8088CPU有有20根地址線,可直接尋址的物理地址空根地址線,可直接尋址的物理地址空間為間為1M字節(jié)字節(jié)(=220)。系統(tǒng)存儲器由以字節(jié)為單位的存儲單元組。系統(tǒng)存儲器由以字節(jié)為單位的存儲單元組成,存儲單元的物理地址由成,存儲單元的物理

28、地址由20位二進(jìn)制數(shù)表示,范圍是位二進(jìn)制數(shù)表示,范圍是00000H至至FFFFFH。而。而8086/8088內(nèi)部的內(nèi)部的ALU每次最多進(jìn)行每次最多進(jìn)行16位運算,位運算,存放存儲單元地址偏移量的指針寄存器存放存儲單元地址偏移量的指針寄存器(如如IP、SP以及以及BP、SI、DI和和BX)都是都是16位,為了尋址位,為了尋址1M的所有單元,的所有單元,8086/8088通過通過對存儲器采用分段技術(shù)的方法有效地實現(xiàn)了尋址對存儲器采用分段技術(shù)的方法有效地實現(xiàn)了尋址1M字節(jié)物理地字節(jié)物理地址空間。址空間。 所謂分段技術(shù)就是根據(jù)需要把所謂分段技術(shù)就是根據(jù)需要把1M字節(jié)地址空間劃分成若干字節(jié)地址空間劃分成

29、若干邏輯段。每個邏輯段必須滿足如下兩個條件:邏輯段。每個邏輯段必須滿足如下兩個條件:第一,邏輯段的開始地址必須是第一,邏輯段的開始地址必須是16的倍數(shù)的倍數(shù) ;第二,邏輯段的最大長度為第二,邏輯段的最大長度為64K,最多有,最多有16個邏輯段。個邏輯段。按照這兩個條件,按照這兩個條件,1M字節(jié)地址空間最多可劃有字節(jié)地址空間最多可劃有64K個邏輯段的個邏輯段的起始地址。第一個條件與段寄存器長起始地址。第一個條件與段寄存器長16位有關(guān);第二個條件與位有關(guān);第二個條件與指針寄存器長指針寄存器長16位相關(guān)。根據(jù)編程的需要,由計算機為每一個位相關(guān)。根據(jù)編程的需要,由計算機為每一個段規(guī)定一個起始地址,即該

30、段的首地址,稱為段基址。位于段段規(guī)定一個起始地址,即該段的首地址,稱為段基址。位于段起始單元的地址應(yīng)被起始單元的地址應(yīng)被16整除,它的整除,它的20位二進(jìn)制表示的地址的最位二進(jìn)制表示的地址的最低低4位一定為位一定為0,高,高16位地址放在段寄存器中。位地址放在段寄存器中。每個邏輯段的段內(nèi)地址是連續(xù)的,邏輯段與邏輯段可以相每個邏輯段的段內(nèi)地址是連續(xù)的,邏輯段與邏輯段可以相連,也可以不相連,還可以部分重疊。一個程序使用的存儲連,也可以不相連,還可以部分重疊。一個程序使用的存儲空間可以是一個邏輯段,也可以是多個邏輯段。空間可以是一個邏輯段,也可以是多個邏輯段。一般為數(shù)據(jù)段、代碼段、堆棧段和附加段。每

31、個段的起始一般為數(shù)據(jù)段、代碼段、堆棧段和附加段。每個段的起始地址地址(段的首地址、段的基本地址、段基址段的首地址、段的基本地址、段基址)放在對應(yīng)的段寄放在對應(yīng)的段寄存器存器(DS、CS、SS、ES)中。中。段寄存器段寄存器(DS、SS、ES)的內(nèi)容可以在程序中用數(shù)據(jù)傳送指的內(nèi)容可以在程序中用數(shù)據(jù)傳送指令設(shè)置初值或改變其值,令設(shè)置初值或改變其值,CS的初值不允許用傳送指令賦值,的初值不允許用傳送指令賦值,CS值的改變只能在段間調(diào)用、段間返回、段間轉(zhuǎn)移、中斷值的改變只能在段間調(diào)用、段間返回、段間轉(zhuǎn)移、中斷指令或發(fā)生中斷時由計算機系統(tǒng)改變。指令或發(fā)生中斷時由計算機系統(tǒng)改變。2.2.3 物理地址的形成

32、物理地址的形成由于段的起始地址必須是由于段的起始地址必須是16的倍數(shù),所以的倍數(shù),所以20位段起始地址位段起始地址有如下形式:有如下形式:xxxx xxxx xxxx xxxx 0000(二進(jìn)制二進(jìn)制)用用16進(jìn)制可表示成進(jìn)制可表示成XXXX0(十六進(jìn)制十六進(jìn)制)。我們把。我們把20位段起始位段起始地址的高地址的高16位位XXXX(十六進(jìn)制十六進(jìn)制)稱為段基址。顯然,段起始稱為段基址。顯然,段起始地址等于段基址乘地址等于段基址乘16(即左移即左移4位位)。要訪問的某一個存儲單。要訪問的某一個存儲單元總是屬于某個段。我們把存儲單元的地址與所在段的起元總是屬于某個段。我們把存儲單元的地址與所在段的

33、起始地址的差稱為段內(nèi)偏移地址,簡稱偏移地址始地址的差稱為段內(nèi)偏移地址,簡稱偏移地址(偏移量偏移量)。在。在一個段內(nèi),通過偏移量可指定要訪問的存儲單元。在整個一個段內(nèi),通過偏移量可指定要訪問的存儲單元。在整個1M地址空間中,存儲單元的物理地址等于段的起始地址加地址空間中,存儲單元的物理地址等于段的起始地址加上偏移量。于是,存儲單元的邏輯地址由段基址和偏移量上偏移量。于是,存儲單元的邏輯地址由段基址和偏移量兩部分組成,用如下形式表示:兩部分組成,用如下形式表示:邏輯地址邏輯地址=段基址段基址:偏移量偏移量例如:例如:2000H:0080H。根據(jù)邏輯地址可方便地得到存儲單元的物理地址根據(jù)邏輯地址可方

34、便地得到存儲單元的物理地址(實際地址實際地址),計算公式如下:計算公式如下:物理地址物理地址=段基址段基址16+偏移量偏移量通過移位和算術(shù)加法可容易地實現(xiàn)上述公式,通過移位和算術(shù)加法可容易地實現(xiàn)上述公式,例例2.1 寫出邏輯地址寫出邏輯地址2BH:23H和邏輯地址和邏輯地址2CH:13H所對應(yīng)所對應(yīng)的物理地址的物理地址 邏輯地址邏輯地址2BH:23H的物理地址為:的物理地址為: 2B0H + 23H = 2D3H 邏輯地址邏輯地址2CH:13H的物理地址為:的物理地址為: 2C0H + 13H = 2D3H指令中不使用物理地址,而是使用邏輯地址。指令中不使用物理地址,而是使用邏輯地址。2.3.

35、1 輸入輸入/輸出輸出(I/O)接口接口主機與外界交換信息稱為輸入輸出主機與外界交換信息稱為輸入輸出(I/O)。主機與外界的。主機與外界的信息交換是通過輸入信息交換是通過輸入/輸出設(shè)備進(jìn)行的。一般的輸入輸出設(shè)備進(jìn)行的。一般的輸入/輸出設(shè)輸出設(shè)備都是機械的或機電相結(jié)合的產(chǎn)物,比如常規(guī)的外設(shè)有鍵備都是機械的或機電相結(jié)合的產(chǎn)物,比如常規(guī)的外設(shè)有鍵盤、顯示器、打印機、掃描儀、磁盤機、鼠標(biāo)器等,它們盤、顯示器、打印機、掃描儀、磁盤機、鼠標(biāo)器等,它們相對于高速的中央處理器來說,速度要慢得多。此外,不相對于高速的中央處理器來說,速度要慢得多。此外,不同外設(shè)的信號形式、數(shù)據(jù)格式也各不相同。因此,外部設(shè)同外設(shè)的信號形式、數(shù)據(jù)格式也各不相同。因此,外部設(shè)備不能與備不能與CPU直接相連,需要通過相應(yīng)的電路來完成它們直接相連,需要通過相應(yīng)的電路來完成它們之間的速度匹配、信號轉(zhuǎn)換,并完成某些控制功能。通常之間的速度匹配、信號轉(zhuǎn)換,并完成某些控制功能。通常把介于主機和外設(shè)之間的一種緩沖電路稱為把介于主機和外設(shè)之間的一種緩沖電路稱為I/O接口電路,接口電路,簡稱簡稱I/O接口接口(Interface)。 2.3.2

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論