版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第1 1頁(yè)頁(yè)第第1頁(yè)頁(yè)本章要求本章要求教學(xué)重點(diǎn)及難點(diǎn)教學(xué)重點(diǎn)及難點(diǎn): :物理地址計(jì)算物理地址計(jì)算1.了解存儲(chǔ)器地址和內(nèi)容的概念;了解存儲(chǔ)器地址和內(nèi)容的概念;2.了解存儲(chǔ)器地址分段的方式;了解存儲(chǔ)器地址分段的方式;3.掌握邏輯地址和物理地址的概念及計(jì)算方式;掌握邏輯地址和物理地址的概念及計(jì)算方式;4.了解堆棧的概念及外部設(shè)備。了解堆棧的概念及外部設(shè)備。計(jì)劃學(xué)時(shí)計(jì)劃學(xué)時(shí): : 2學(xué)時(shí)學(xué)時(shí)第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第2 2頁(yè)頁(yè)第第2頁(yè)頁(yè) 3.1
2、 存儲(chǔ)單元的地址和內(nèi)容存儲(chǔ)單元的地址和內(nèi)容基本概念:基本概念: 計(jì)算機(jī)存儲(chǔ)信息的基本單位是位(計(jì)算機(jī)存儲(chǔ)信息的基本單位是位(BitBit),一位可存儲(chǔ)一個(gè)二進(jìn)制),一位可存儲(chǔ)一個(gè)二進(jìn)制數(shù)。每數(shù)。每8 8個(gè)位組成一個(gè)字節(jié)。個(gè)位組成一個(gè)字節(jié)。 存儲(chǔ)器存儲(chǔ)信息的基本單位是字節(jié)(存儲(chǔ)器存儲(chǔ)信息的基本單位是字節(jié)(ByteByte), ,由由8 8個(gè)二進(jìn)制位組成。個(gè)二進(jìn)制位組成。位編號(hào)如下位編號(hào)如下 : 在存儲(chǔ)器中,每一個(gè)字節(jié)單元都有一個(gè)與之對(duì)應(yīng)的、唯一的存儲(chǔ)器在存儲(chǔ)器中,每一個(gè)字節(jié)單元都有一個(gè)與之對(duì)應(yīng)的、唯一的存儲(chǔ)器地址地址 。稱(chēng)為。稱(chēng)為。對(duì)于。對(duì)于16位字長(zhǎng)的位字長(zhǎng)的PC機(jī)(機(jī)(8086/8088),
3、由兩個(gè)),由兩個(gè)字節(jié)組成一個(gè)字(字節(jié)組成一個(gè)字(Word)。其位編號(hào)如下:)。其位編號(hào)如下: 01234567 0123456789101112131415高位字節(jié)高位字節(jié)MSB低位字節(jié)低位字節(jié)LSB 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第3 3頁(yè)頁(yè)第第3頁(yè)頁(yè)地址的定義地址的定義每一個(gè)每一個(gè)字節(jié)單元字節(jié)單元都有一個(gè)與之對(duì)應(yīng)的單元地址都有一個(gè)與之對(duì)應(yīng)的單元地址 。對(duì)于對(duì)于字單元字單元,由兩個(gè)字節(jié)單元組成,其地址是采用,由兩個(gè)字節(jié)單元組成,其地址是采用來(lái)表示的。來(lái)表示的。 對(duì)于對(duì)于多字單元多字單元(雙字,(雙字,4 4字等),其地址同樣是采用字等),其地址同樣是
4、采用來(lái)表示的。來(lái)表示的。 :不同機(jī)器,其可以訪問(wèn)的物理地址范圍是不:不同機(jī)器,其可以訪問(wèn)的物理地址范圍是不同的,一般由系統(tǒng)的同的,一般由系統(tǒng)的決定決定 。例如:例如:80868086的地址總線為的地址總線為2020位,其地址訪問(wèn)范圍是:位,其地址訪問(wèn)范圍是:0H-0FFFFFH 0H-0FFFFFH 。而。而Pentium IIPentium II的地址總線為的地址總線為3636位,則位,則地址范圍是:地址范圍是:0H-0FFFFFFFFFH0H-0FFFFFFFFFH。 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第4 4頁(yè)頁(yè)第第4頁(yè)頁(yè)存儲(chǔ)單元的內(nèi)容存儲(chǔ)單元的內(nèi)容
5、 定義:存儲(chǔ)單元中存放的信息稱(chēng)為該存儲(chǔ)單元的內(nèi)容該存儲(chǔ)單元的內(nèi)容 表示:存儲(chǔ)地址加” ( ) ” 如果用X表示某存儲(chǔ)單元的地址,則X單元的內(nèi)容可以表示為 (X)(X); 假如X單元中存放著Y,而Y又是一個(gè)地址,則可用(Y)=(X)(Y)=(X)來(lái)表示Y單元的內(nèi)容。 34H12H1EH2FH字節(jié)字節(jié)0000H0001H0002H0003H0004H0005H0006H1234H1235H0004H0004H字節(jié)單元字節(jié)單元的內(nèi)容:的內(nèi)容: (0004H0004H)=34H=34H0004H0004H字單元字單元的內(nèi)容:的內(nèi)容: (0004H0004H)=1234H=1234H0004H字單元的內(nèi)
6、容為1234H,表示為: (0004H)=1234H (0004H)=1234H 0004H字節(jié)單元存放的信息為34H,表示:(0004H)=34H 字單元由兩個(gè)字節(jié)單元組成,其地址采用它的低地址來(lái)表示。字存入存儲(chǔ)器:低位字節(jié)存入低地址單元,高位字低位字節(jié)存入低地址單元,高位字節(jié)存入高地址單元。節(jié)存入高地址單元。 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第5 5頁(yè)頁(yè)第第5頁(yè)頁(yè) 假如X單元中存放著Y,而Y又是一個(gè)地址,則可用(Y)=(X)(Y)=(X)來(lái)表示Y單元的內(nèi)容。 34H12H1EH2FH字節(jié)字節(jié)0000H0001H0002H0003H0004H0005H
7、0006H1234H1235H直接表示直接表示1234H1234H字單元字單元的內(nèi)容:的內(nèi)容: S=(1234H)=2F1EH直接給出S的單元地址, (1234H)=2F1EH (1234H)=2F1EH 例如,例如,1234H字單元字單元的內(nèi)容為的內(nèi)容為S,有兩種表示方式:,有兩種表示方式:間接表示間接表示1234H1234H字單元字單元的內(nèi)容:的內(nèi)容: S=(0004H)= (1234H)= 2F1EHS S的單元地址的單元地址存放在0004H字單元中,(0004H)=1234H(0004H)=1234H從0004H字單元中取出S S的單元地址的單元地址,再把S的內(nèi)容讀出來(lái): ((0004
8、H)(0004H))=2F1EH=2F1EH 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第6 6頁(yè)頁(yè)第第6頁(yè)頁(yè) 8086/8088 CPU 有有20根地址總線根地址總線A19A18A1A0,可以訪問(wèn)存儲(chǔ)器的,可以訪問(wèn)存儲(chǔ)器的最大容量為:最大容量為:220B=1024KB=1MB,在,在8086 CPU 中所有可用來(lái)存放地址中所有可用來(lái)存放地址的寄存器都是的寄存器都是16位的。位的。3.2 存儲(chǔ)器地址的分段存儲(chǔ)器地址的分段 在在IBM PC機(jī)里采用了機(jī)里采用了存儲(chǔ)器地址分段存儲(chǔ)器地址分段的辦法。把的辦法。把1MB的存儲(chǔ)空間劃的存儲(chǔ)空間劃分成若干個(gè)段(分成若干個(gè)段(S
9、egment),每個(gè)段可由每個(gè)段可由164KB(即(即65536B)個(gè)連續(xù)的)個(gè)連續(xù)的字節(jié)單元組成。每個(gè)段是一個(gè)可獨(dú)立尋址的邏輯單位。字節(jié)單元組成。每個(gè)段是一個(gè)可獨(dú)立尋址的邏輯單位。 在在8086/8088的程序設(shè)計(jì)中,需要設(shè)立幾個(gè)段,每個(gè)段有多少個(gè)字節(jié)的程序設(shè)計(jì)中,需要設(shè)立幾個(gè)段,每個(gè)段有多少個(gè)字節(jié)以及每個(gè)段的用途完全由用戶(hù)自己確定。同時(shí)每個(gè)段中存儲(chǔ)的代碼或數(shù)據(jù),以及每個(gè)段的用途完全由用戶(hù)自己確定。同時(shí)每個(gè)段中存儲(chǔ)的代碼或數(shù)據(jù),可以存放在段內(nèi)任意單元中??梢源娣旁诙蝺?nèi)任意單元中。 那么在那么在16位字長(zhǎng)的機(jī)器里,用什么辦法來(lái)提供位字長(zhǎng)的機(jī)器里,用什么辦法來(lái)提供20位地址呢?位地址呢? 匯編語(yǔ)
10、言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第7 7頁(yè)頁(yè)第第7頁(yè)頁(yè)分段的基本規(guī)則分段的基本規(guī)則 在編制程序時(shí),要把存儲(chǔ)器劃分成段,每個(gè)段在編制程序時(shí),要把存儲(chǔ)器劃分成段,每個(gè)段,這樣段內(nèi)地址可以用,這樣段內(nèi)地址可以用1616位表示。位表示。 PC PC機(jī)對(duì)機(jī)對(duì),而,而必須從任一小段(必須從任一小段(ParagraphParagraph)的首地址開(kāi)始。)的首地址開(kāi)始。機(jī)器規(guī)定機(jī)器規(guī)定:從:從0 0地址開(kāi)始,每地址開(kāi)始,每1616個(gè)字節(jié)為一小段。個(gè)字節(jié)為一小段。00000,00001,00002,0000E,0000F;00010,00011,00012,0001E,0001
11、F;00020,00021,00022,0002E,0002F; 在十六進(jìn)制表示的地址中,在十六進(jìn)制表示的地址中,最低位為最低位為0 0(即(即2020位地址的位地址的低低4 4位為位為0 0)。)。 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第8 8頁(yè)頁(yè)第第8頁(yè)頁(yè) 雖然存儲(chǔ)器可以劃分成若干個(gè)段,但在任何時(shí)刻,一個(gè)程序只能訪雖然存儲(chǔ)器可以劃分成若干個(gè)段,但在任何時(shí)刻,一個(gè)程序只能訪問(wèn)問(wèn)4個(gè)段中的內(nèi)容,這個(gè)段中的內(nèi)容,這4個(gè)段分別是代碼段(個(gè)段分別是代碼段(Code Segment),堆棧段),堆棧段(Stack Segment),數(shù)據(jù)段(),數(shù)據(jù)段(Data Se
12、gment)和附加段()和附加段(Extra Segment)。它們的段首地址的段基值分別由對(duì)應(yīng)的)。它們的段首地址的段基值分別由對(duì)應(yīng)的4個(gè)段寄存器個(gè)段寄存器CS,SS,DS,ES指明。指明。 它們分別保存各自段首地址的高它們分別保存各自段首地址的高16位值(位值(A19A4),由),由4個(gè)段寄存器個(gè)段寄存器指向的那些段叫指向的那些段叫當(dāng)前段(當(dāng)前段(Current Segment)。)。所以當(dāng)前段至多可容納所以當(dāng)前段至多可容納64KB的程序代碼,的程序代碼,64KB的堆棧和的堆棧和128KB的數(shù)據(jù)(分別由的數(shù)據(jù)(分別由DS、ES指向的指向的當(dāng)前段)在規(guī)模不是很大的應(yīng)用程序中,這些容量是足夠使
13、用。當(dāng)前段)在規(guī)模不是很大的應(yīng)用程序中,這些容量是足夠使用。 如果應(yīng)用規(guī)模較大,可以在程序中通過(guò)修改相應(yīng)段寄存器的內(nèi)容,如果應(yīng)用規(guī)模較大,可以在程序中通過(guò)修改相應(yīng)段寄存器的內(nèi)容,從而訪問(wèn)其他段,如可用從而訪問(wèn)其他段,如可用LDS,LES指令等方式來(lái)改變當(dāng)前段。指令等方式來(lái)改變當(dāng)前段。 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第9 9頁(yè)頁(yè)第第9頁(yè)頁(yè) CPU訪問(wèn)主存必須傳送出物理地址,而用戶(hù)編程則使用邏輯地址,訪問(wèn)主存必須傳送出物理地址,而用戶(hù)編程則使用邏輯地址,于是在于是在8086/8088系列微型機(jī)中,每個(gè)存儲(chǔ)單元都有兩種形式的地址:系列微型機(jī)中,每個(gè)存儲(chǔ)單元都
14、有兩種形式的地址:物物理地址(理地址(Phsysical Address)和邏輯地址()和邏輯地址(Logical Address)以及以及CPU內(nèi)如何把程序員使用的邏輯地址形成物理地址(真實(shí)地址)的問(wèn)題。內(nèi)如何把程序員使用的邏輯地址形成物理地址(真實(shí)地址)的問(wèn)題。 每一個(gè)存儲(chǔ)單元的物理地址是唯一的,就是這個(gè)單元的地址編碼。每一個(gè)存儲(chǔ)單元的物理地址是唯一的,就是這個(gè)單元的地址編碼。CPU與存儲(chǔ)器之間的任何信息交換,都必須使用與存儲(chǔ)器之間的任何信息交換,都必須使用20位的物理地址先行,位的物理地址先行,經(jīng)地址譯碼器后形成開(kāi)門(mén)信號(hào),把被訪問(wèn)的存儲(chǔ)單元的經(jīng)地址譯碼器后形成開(kāi)門(mén)信號(hào),把被訪問(wèn)的存儲(chǔ)單元
15、的“門(mén)門(mén)”打開(kāi),方能打開(kāi),方能進(jìn)行數(shù)據(jù)交換。進(jìn)行數(shù)據(jù)交換。 在程序設(shè)計(jì)中,在程序設(shè)計(jì)中,程序員使用的是邏輯地址,而不使用物理地址程序員使用的是邏輯地址,而不使用物理地址,這不,這不僅有利于程序的開(kāi)發(fā),且對(duì)存儲(chǔ)器的動(dòng)態(tài)管理也是有利的。一個(gè)邏輯地址僅有利于程序的開(kāi)發(fā),且對(duì)存儲(chǔ)器的動(dòng)態(tài)管理也是有利的。一個(gè)邏輯地址是由是由段基值和偏移量段基值和偏移量(OFFSET)兩部分組成,而且都是無(wú)符號(hào)的)兩部分組成,而且都是無(wú)符號(hào)的16位二位二進(jìn)制數(shù)。進(jìn)制數(shù)。3.3 邏輯地址與物理地址邏輯地址與物理地址 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第1010頁(yè)頁(yè)第第10頁(yè)頁(yè) 段基值是
16、一個(gè)段首地址的高段基值是一個(gè)段首地址的高16位,它存放在某一個(gè)位,它存放在某一個(gè)16位段寄存器中。位段寄存器中。段首址的低段首址的低4 位為位為0,即,即A3A2A1A0=0000。 偏移量表示了某存儲(chǔ)單元與它所對(duì)應(yīng)的段的段首地址之間的字節(jié)距離。偏移量表示了某存儲(chǔ)單元與它所對(duì)應(yīng)的段的段首地址之間的字節(jié)距離。如當(dāng)偏移量為如當(dāng)偏移量為0時(shí),就在這個(gè)段的起始單元,當(dāng)偏移量為時(shí),就在這個(gè)段的起始單元,當(dāng)偏移量為0FFFFH時(shí),就時(shí),就是這個(gè)段(最大)最末一個(gè)字節(jié)單元。是這個(gè)段(最大)最末一個(gè)字節(jié)單元。 每當(dāng)每當(dāng)CPU訪問(wèn)存儲(chǔ)器時(shí),總線接口部件訪問(wèn)存儲(chǔ)器時(shí),總線接口部件BIU便把邏輯地址轉(zhuǎn)換成物理便把邏
17、輯地址轉(zhuǎn)換成物理地址。地址。 轉(zhuǎn)換方法轉(zhuǎn)換方法是:首先把邏輯地址中的段寄存器保存的段基值左移是:首先把邏輯地址中的段寄存器保存的段基值左移4位位(把把段寄存器的內(nèi)容乘以段寄存器的內(nèi)容乘以16),其本質(zhì)是恢復(fù),其本質(zhì)是恢復(fù)A3A2A1A0的四位二進(jìn)制的的四位二進(jìn)制的0或一位或一位16進(jìn)制的進(jìn)制的0,使之形成一個(gè)完整的段首地址。這也就是為什么段首址要從,使之形成一個(gè)完整的段首地址。這也就是為什么段首址要從小段的首地址開(kāi)始的原因。形成了小段的首地址開(kāi)始的原因。形成了20位的段起始地址(段基址)之后,再位的段起始地址(段基址)之后,再加上加上16位的無(wú)符號(hào)偏移量,即產(chǎn)生了位的無(wú)符號(hào)偏移量,即產(chǎn)生了CP
18、U訪問(wèn)主存單元的訪問(wèn)主存單元的20位物理地址,位物理地址,從地址總線輸出。從地址總線輸出。 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第1111頁(yè)頁(yè)第第11頁(yè)頁(yè)物理地址的計(jì)算物理地址的計(jì)算計(jì)算公式:計(jì)算公式: 物理地址物理地址= =段地址段地址10H+10H+偏移地址偏移地址 每個(gè)存儲(chǔ)單元只有唯一的物理地址,但它卻可以由不同每個(gè)存儲(chǔ)單元只有唯一的物理地址,但它卻可以由不同的段地址和不同的偏移地址組成。的段地址和不同的偏移地址組成。 1616位段地址位段地址1501616位偏移地址位偏移地址150+2020位物理地址位物理地址190 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)
19、 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第1212頁(yè)頁(yè)第第12頁(yè)頁(yè)【例】【例】 : 計(jì)算下列存儲(chǔ)單元的物理地址:計(jì)算下列存儲(chǔ)單元的物理地址: (1 1) 20002000:30003000; (2 2) 21002100:20002000; (3 3) 22802280:08000800; (4 4) 22502250:05000500;【解】【解】:(1) 物理地址物理地址=2000H10H+3000H=23000H;(2) 物理地址物理地址=2100H10H+2000H=23000H;(3) 物理地址物理地址=2280H10H+0800H=23000H;(4) 物理地址物理地址=2250H
20、10H+0500H=22A00H; 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第1313頁(yè)頁(yè)第第13頁(yè)頁(yè) 每個(gè)段寄存器可以按規(guī)定給出一個(gè)段的起始地址的段基值,每個(gè)段都每個(gè)段寄存器可以按規(guī)定給出一個(gè)段的起始地址的段基值,每個(gè)段都有各自的用途。如前所述,有各自的用途。如前所述,代碼段存放的是要運(yùn)行的程序及數(shù)據(jù)代碼段存放的是要運(yùn)行的程序及數(shù)據(jù)。數(shù)據(jù)段。數(shù)據(jù)段存放運(yùn)行程序所用的數(shù)據(jù),如果在程序中使用了串操作處理指令,則其源存放運(yùn)行程序所用的數(shù)據(jù),如果在程序中使用了串操作處理指令,則其源操作數(shù)默認(rèn)存放在數(shù)據(jù)段中(源串可允許段超越)。操作數(shù)默認(rèn)存放在數(shù)據(jù)段中(源串可允許段超越
21、)。堆棧段定義了堆棧的堆棧段定義了堆棧的所在區(qū)域所在區(qū)域,堆棧是一個(gè)數(shù)據(jù)結(jié)構(gòu),它開(kāi)辟了一個(gè)比較特殊的存儲(chǔ)區(qū),并以,堆棧是一個(gè)數(shù)據(jù)結(jié)構(gòu),它開(kāi)辟了一個(gè)比較特殊的存儲(chǔ)區(qū),并以“后進(jìn)先出后進(jìn)先出”的原則訪問(wèn)這一區(qū)域。附加段是附加的數(shù)據(jù)段,它是一個(gè)輔的原則訪問(wèn)這一區(qū)域。附加段是附加的數(shù)據(jù)段,它是一個(gè)輔助的數(shù)據(jù)區(qū),對(duì)于串處理指令,它是目的串操作數(shù)存放的區(qū)域,它不允許助的數(shù)據(jù)區(qū),對(duì)于串處理指令,它是目的串操作數(shù)存放的區(qū)域,它不允許進(jìn)行段跨越。當(dāng)用戶(hù)在編制程序時(shí),應(yīng)該按照上述規(guī)定把程序的各部分放進(jìn)行段跨越。當(dāng)用戶(hù)在編制程序時(shí),應(yīng)該按照上述規(guī)定把程序的各部分放在規(guī)定的區(qū)段之中。在規(guī)定的區(qū)段之中。 除非專(zhuān)門(mén)指定,
22、如用戶(hù)自行設(shè)定之外,在一般情況下,各段在存儲(chǔ)器除非專(zhuān)門(mén)指定,如用戶(hù)自行設(shè)定之外,在一般情況下,各段在存儲(chǔ)器中的分配是由操作系統(tǒng)負(fù)責(zé)的。中的分配是由操作系統(tǒng)負(fù)責(zé)的。每個(gè)段可以獨(dú)立地占用每個(gè)段可以獨(dú)立地占用64KB存儲(chǔ)區(qū)。各存儲(chǔ)區(qū)。各段也允許部分重疊或完全重疊段也允許部分重疊或完全重疊,下面的例子可以說(shuō)明這種情況。,下面的例子可以說(shuō)明這種情況。 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第1414頁(yè)頁(yè)第第14頁(yè)頁(yè) 【例】【例】如果代碼段中的程序占有如果代碼段中的程序占有16KB(4000H)存儲(chǔ)區(qū),數(shù)據(jù)段占)存儲(chǔ)區(qū),數(shù)據(jù)段占有有2KB(800H)存儲(chǔ)區(qū),堆棧段占有)存
23、儲(chǔ)區(qū),堆棧段占有1KB存儲(chǔ)區(qū)。代碼段的區(qū)域本可以存儲(chǔ)區(qū)。代碼段的區(qū)域本可以為為01000H10FFFH(64KB),由于程序區(qū)只需要),由于程序區(qū)只需要16KB,所以程序區(qū)結(jié),所以程序區(qū)結(jié)束后的第一個(gè)小段的首地址就作為數(shù)據(jù)段的起始地址(束后的第一個(gè)小段的首地址就作為數(shù)據(jù)段的起始地址(05000H)。而數(shù))。而數(shù)據(jù)段僅需據(jù)段僅需2KB,則數(shù)據(jù)段結(jié)束后的第一個(gè)小段的首地址又成為堆棧段的起,則數(shù)據(jù)段結(jié)束后的第一個(gè)小段的首地址又成為堆棧段的起始地址(始地址(05800H)。)。 這樣,代碼段和數(shù)據(jù)段及堆棧段重疊在一起了。這樣,代碼段和數(shù)據(jù)段及堆棧段重疊在一起了。 注意注意:每個(gè)存儲(chǔ)單元的內(nèi)容是絕對(duì)不允
24、許發(fā)生沖突的,也就是說(shuō),某:每個(gè)存儲(chǔ)單元的內(nèi)容是絕對(duì)不允許發(fā)生沖突的,也就是說(shuō),某個(gè)存儲(chǔ)單元既存儲(chǔ)了指令代碼,又將存儲(chǔ)操作的數(shù)據(jù),這是絕對(duì)禁止的。個(gè)存儲(chǔ)單元既存儲(chǔ)了指令代碼,又將存儲(chǔ)操作的數(shù)據(jù),這是絕對(duì)禁止的。這里所提到的重疊只是指每個(gè)區(qū)段的大小可允許根據(jù)編程的實(shí)際情況分配,這里所提到的重疊只是指每個(gè)區(qū)段的大小可允許根據(jù)編程的實(shí)際情況分配,并非一定要占用并非一定要占用64KB的最大段空間。的最大段空間。 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第1515頁(yè)頁(yè)第第15頁(yè)頁(yè)物理地址物理地址01000H10FFFH代碼段代碼段代碼段實(shí)際使代碼段實(shí)際使用用16KB04F
25、FFH數(shù)據(jù)段數(shù)據(jù)段05000H057FFH數(shù)據(jù)段實(shí)際使數(shù)據(jù)段實(shí)際使用用2KB堆棧段堆棧段05800H 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第1616頁(yè)頁(yè)第第16頁(yè)頁(yè)【例】【例】:已知:已知(CS)=1000H(CS)=1000H,(DS)=4000H(DS)=4000H,其中代碼段大小為,其中代碼段大小為1KB1KB,數(shù)據(jù)段,數(shù)據(jù)段大小為大小為64KB64KB,試畫(huà)出對(duì)應(yīng)儲(chǔ)存器分段的示意圖,要求標(biāo)出首尾地址。,試畫(huà)出對(duì)應(yīng)儲(chǔ)存器分段的示意圖,要求標(biāo)出首尾地址?!痉治觥俊痉治觥浚?對(duì)于代碼段,由題意,大小對(duì)于代碼段,由題意,大小為為1KB1KB,即對(duì)應(yīng)的偏移地址
26、為,即對(duì)應(yīng)的偏移地址為:0H-3FFH0H-3FFH,且,且CSCS為為1000H1000H,則對(duì)應(yīng)的物理地址為:則對(duì)應(yīng)的物理地址為: 10000H-103FFH10000H-103FFH 對(duì)于數(shù)據(jù)段,由題意,大對(duì)于數(shù)據(jù)段,由題意,大小為小為64KB64KB,即對(duì)應(yīng)的偏移地址,即對(duì)應(yīng)的偏移地址為:為:0H-FFFFH0H-FFFFH,且,且DSDS為為4000H4000H,則對(duì)應(yīng)的物理地址為,則對(duì)應(yīng)的物理地址為: 40000H-4FFFFH40000H-4FFFFH1000HCS4000HDSSSES代碼段代碼段數(shù)據(jù)段數(shù)據(jù)段10000H103FFH40000H4FFFFH4000:000040
27、00:FFFF 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第1717頁(yè)頁(yè)第第17頁(yè)頁(yè) 堆棧是一個(gè)特定的存儲(chǔ)區(qū),在這個(gè)存儲(chǔ)區(qū)中信息的進(jìn)出嚴(yán)格按照一定堆棧是一個(gè)特定的存儲(chǔ)區(qū),在這個(gè)存儲(chǔ)區(qū)中信息的進(jìn)出嚴(yán)格按照一定的規(guī)則進(jìn)行。堆棧主要用于暫存數(shù)據(jù)以及在的規(guī)則進(jìn)行。堆棧主要用于暫存數(shù)據(jù)以及在“過(guò)程過(guò)程”調(diào)用或處理中斷時(shí)暫調(diào)用或處理中斷時(shí)暫存斷點(diǎn)信息。不僅在現(xiàn)代程序設(shè)計(jì)中經(jīng)常使用堆棧,在其他一些領(lǐng)域(如存斷點(diǎn)信息。不僅在現(xiàn)代程序設(shè)計(jì)中經(jīng)常使用堆棧,在其他一些領(lǐng)域(如編譯技術(shù))中亦廣泛地應(yīng)用堆棧的概念。編譯技術(shù))中亦廣泛地應(yīng)用堆棧的概念。 堆棧的結(jié)構(gòu)堆棧的結(jié)構(gòu) 現(xiàn)在常采用軟件堆
28、棧,由編程人員用軟件在存儲(chǔ)器中劃出一塊存儲(chǔ)區(qū)現(xiàn)在常采用軟件堆棧,由編程人員用軟件在存儲(chǔ)器中劃出一塊存儲(chǔ)區(qū)作為堆棧。該存儲(chǔ)區(qū)的一端是固定的,另一端是浮動(dòng)的,所有信息的存取作為堆棧。該存儲(chǔ)區(qū)的一端是固定的,另一端是浮動(dòng)的,所有信息的存取都在浮動(dòng)的一端進(jìn)行,這是進(jìn)棧與出棧操作的特點(diǎn)。浮動(dòng)端的地址生長(zhǎng)方都在浮動(dòng)的一端進(jìn)行,這是進(jìn)棧與出棧操作的特點(diǎn)。浮動(dòng)端的地址生長(zhǎng)方向一般有兩種方法:一為向高地址方向生長(zhǎng)稱(chēng)為向上生長(zhǎng),另一種為向低向一般有兩種方法:一為向高地址方向生長(zhǎng)稱(chēng)為向上生長(zhǎng),另一種為向低地址方向生長(zhǎng),即為向下生長(zhǎng)。地址方向生長(zhǎng),即為向下生長(zhǎng)。8086/8088系列微機(jī)屬于系列微機(jī)屬于向下生長(zhǎng)向下生
29、長(zhǎng)的堆棧。的堆棧。3.4 堆棧堆棧 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第1818頁(yè)頁(yè)第第18頁(yè)頁(yè) 這個(gè)存儲(chǔ)區(qū)最大地址的字存儲(chǔ)單元為堆棧底部,稱(chēng)為這個(gè)存儲(chǔ)區(qū)最大地址的字存儲(chǔ)單元為堆棧底部,稱(chēng)為棧底棧底(Bottom)。)。在堆棧中存放的數(shù)據(jù)或斷點(diǎn)信息從這里開(kāi)始,逐漸向地址小在堆棧中存放的數(shù)據(jù)或斷點(diǎn)信息從這里開(kāi)始,逐漸向地址小的方向的方向“堆積堆積”。在任何時(shí)刻,存放最后一個(gè)信息的字存儲(chǔ)單元為堆棧頂部,。在任何時(shí)刻,存放最后一個(gè)信息的字存儲(chǔ)單元為堆棧頂部,稱(chēng)為棧頂(稱(chēng)為棧頂(Top)。棧頂是隨著進(jìn)出棧信息的多少而變的。而棧底是由軟件)。棧頂是隨著進(jìn)出棧信息的多
30、少而變的。而棧底是由軟件設(shè)定后固定不變的。設(shè)定后固定不變的。 堆棧指針堆棧指針SP始終指向堆棧頂部的地址始終指向堆棧頂部的地址。 8086/8088堆棧的組織堆棧的組織 在在8086/8088系列微機(jī)中,堆棧是由堆棧段寄存器(系列微機(jī)中,堆棧是由堆棧段寄存器(SS)指定的一段存)指定的一段存儲(chǔ)區(qū),通常,堆棧段中所包含的存儲(chǔ)單元字節(jié)數(shù)即為堆棧深度或稱(chēng)為堆棧長(zhǎng)儲(chǔ)區(qū),通常,堆棧段中所包含的存儲(chǔ)單元字節(jié)數(shù)即為堆棧深度或稱(chēng)為堆棧長(zhǎng)度。度。SP中始終包含段基址與棧頂之間的距離(字節(jié)數(shù))。中始終包含段基址與棧頂之間的距離(字節(jié)數(shù))。當(dāng)當(dāng)SP初始化時(shí),初始化時(shí),它的值就是這個(gè)它的值就是這個(gè),由于由于SP是是1
31、6位的寄存器,而堆棧深度最大是位的寄存器,而堆棧深度最大是64KB,則至多可存放,則至多可存放32K個(gè)字?jǐn)?shù)據(jù)。個(gè)字?jǐn)?shù)據(jù)。 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第1919頁(yè)頁(yè)第第19頁(yè)頁(yè) 設(shè)設(shè)SP=2000H,把,把1234H進(jìn)棧的示意圖如下。進(jìn)棧的示意圖如下。 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì) 第第3章章 存儲(chǔ)器的分段存儲(chǔ)器的分段第第2020頁(yè)頁(yè)第第20頁(yè)頁(yè)【例】【例】:已知:已知CPUCPU各段寄存器的內(nèi)容為:各段寄存器的內(nèi)容為: (CS)=3000H(CS)=3000H,(DS)=1060H(DS)=1060H, (ES)=1140H(ES)=1140H, (SS)=2200H(SS)=2200H,SP=0200HSP=0200H其其中代碼段大小為中代碼段大小為16KB16KB,數(shù)據(jù)段、附加段大小為,數(shù)據(jù)段、附加段大小為64KB64KB,試畫(huà)出對(duì)應(yīng)儲(chǔ)存器,試畫(huà)出對(duì)應(yīng)儲(chǔ)存器分段的示意圖,要求標(biāo)出首尾地址。分段的示意圖,要求標(biāo)出首尾地址。【分析】【分析】: 對(duì)于對(duì)于代碼段代碼段,大小為,大小為16KB16KB,即對(duì)應(yīng)的偏移地址為:,即對(duì)應(yīng)的偏移地址為:0H-3FFFH0H-3FFFH,且,且CSCS為為3000H3000H,則對(duì)應(yīng)的物
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 云服務(wù)安全認(rèn)證-洞察分析
- 網(wǎng)絡(luò)安全背景下的在線教育監(jiān)管政策分析-洞察分析
- 用戶(hù)體驗(yàn)反饋策略-洞察分析
- 《建設(shè)工程造價(jià)基》課件
- 加強(qiáng)餐飲行業(yè)食品安全生產(chǎn)規(guī)范的措施研究
- 辦公環(huán)境的色彩運(yùn)用對(duì)員工工作效率的影響研究
- 企業(yè)如何在經(jīng)濟(jì)新常態(tài)下實(shí)施綠色經(jīng)營(yíng)戰(zhàn)略
- 2025雇傭合同范本
- 2025京津冀勞動(dòng)合同參考文本(標(biāo)準(zhǔn)版)
- 2025共享設(shè)備租賃合同范文
- 社會(huì)組織管理概論全套ppt課件(完整版)
- 新生兒復(fù)蘇技能操作課件
- DB37∕T 5085-2016 組合鋁合金模板工程技術(shù)規(guī)程
- 生和碼頭港口設(shè)施維護(hù)管理制度(3篇)
- 《植物生理學(xué)》課件第三章+植物的光合作用
- 重慶市勞動(dòng)人事?tīng)?zhēng)議調(diào)解仲裁
- 高等學(xué)校建筑學(xué)專(zhuān)業(yè)本科(五年制)教育評(píng)估標(biāo)準(zhǔn)
- 鋁合金理論重量表
- 四年級(jí)上冊(cè)英語(yǔ)期末復(fù)習(xí)課件綜合復(fù)習(xí)及檢測(cè)講義 牛津上海版一起
- 2020年污水處理廠設(shè)備操作維護(hù)必備
- LSS-250B 純水冷卻器說(shuō)明書(shū)
評(píng)論
0/150
提交評(píng)論