微機(jī)原理及應(yīng)用 課件 第四章 實(shí)模式存儲(chǔ)器尋址和總線_第1頁(yè)
微機(jī)原理及應(yīng)用 課件 第四章 實(shí)模式存儲(chǔ)器尋址和總線_第2頁(yè)
微機(jī)原理及應(yīng)用 課件 第四章 實(shí)模式存儲(chǔ)器尋址和總線_第3頁(yè)
微機(jī)原理及應(yīng)用 課件 第四章 實(shí)模式存儲(chǔ)器尋址和總線_第4頁(yè)
微機(jī)原理及應(yīng)用 課件 第四章 實(shí)模式存儲(chǔ)器尋址和總線_第5頁(yè)
已閱讀5頁(yè),還剩166頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

微機(jī)原理及應(yīng)用第四章實(shí)模式存儲(chǔ)器尋址和總線第一講內(nèi)存儲(chǔ)器的分段管理下面我們來學(xué)習(xí)內(nèi)存儲(chǔ)器的分段管理這是我們畫的一段內(nèi)存儲(chǔ)器,它的大小是1M●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段●

●●●

●●●

●●●

●●8位1M內(nèi)存儲(chǔ)器內(nèi)存儲(chǔ)器的分段管理為了便于管理和訪問,我們把它分成幾個(gè)邏輯段包括代碼段,數(shù)據(jù)段,堆棧段和附加段●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段00000HFFFFFH64KB當(dāng)前代碼段04000H13FFFH64KB當(dāng)前數(shù)據(jù)段28000H37FFFH64KB當(dāng)前堆棧段80000H8A000H8FFFFH64KB當(dāng)前附加段●

●●●

●●●

●●●

●●8位為什么叫邏輯段,●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段為什么叫邏輯段?是因?yàn)檫@些段是通過軟件劃定的區(qū)域,是可以修改的,●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段00000HFFFFFH64KB當(dāng)前代碼段04000H13FFFH64KB當(dāng)前數(shù)據(jù)段28000H37FFFH64KB當(dāng)前堆棧段80000H8A000H8FFFFH64KB當(dāng)前附加段●

●●●

●●●

●●●

●●8位軟件劃定區(qū)域可修改從硬件上來看,就是一塊內(nèi)存沒有段的差別,所以我們跟這些段叫邏輯段,表示它們不是物理上能看得到的段?!?/p>

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段00000HFFFFFH64KB當(dāng)前代碼段04000H13FFFH64KB當(dāng)前數(shù)據(jù)段28000H37FFFH64KB當(dāng)前堆棧段80000H8A000H8FFFFH64KB當(dāng)前附加段●

●●●

●●●

●●●

●●8位沒有段邏輯段:不是物理上看到的段每個(gè)段都有自己特定的用途為了便于訪問這些段,我們要知道每個(gè)段的起始地址,這就是段基址●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段段的起始地址:段基址00000HFFFFFH64KB當(dāng)前代碼段04000H13FFFH64KB當(dāng)前數(shù)據(jù)段28000H37FFFH64KB當(dāng)前堆棧段80000H8A000H8FFFFH64KB當(dāng)前附加段●

●●●

●●●

●●●

●●8位我們?cè)诮榻B段寄存器的時(shí)候,大家知道CS是代碼段的基地址,DS是數(shù)據(jù)段的段基址,SS是堆棧段的段基址,ES是附加段的段基址●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段00000H8A00HES8000HSS2800HDS段內(nèi)偏移量

(有效地址)0400HCS●

●●●

●●●

●●●

●●8位FFFFFH64KB當(dāng)前代碼段04000H13FFFH64KB當(dāng)前數(shù)據(jù)段28000H37FFFH64KB當(dāng)前堆棧段80000H8A000H8FFFFH64KB當(dāng)前附加段從這張圖上,我看到每個(gè)邏輯段是有大小限制的,一個(gè)邏輯段最大是64KB,當(dāng)然你定義的邏輯段可以小于這個(gè)規(guī)模,但是不能大于64kB●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段00000H8A00HES8000HSS2800HDS段內(nèi)偏移量

(有效地址)0400HCS●

●●●

●●●

●●●

●●8位FFFFFH64KB當(dāng)前代碼段04000H13FFFH64KB當(dāng)前數(shù)據(jù)段28000H37FFFH64KB當(dāng)前堆棧段80000H8A000H8FFFFH64KB當(dāng)前附加段64KB64KB64KB64KB邏輯段有大小限制:64KB邏輯段于此規(guī)模,但不能大于而且既然是邏輯段,就意味著段的劃分可以比較靈活,而不是劃出固定的區(qū)域給各個(gè)段,那樣如果這個(gè)段用不了64KB的空間,就會(huì)造成浪費(fèi)●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段段的劃分不是劃出固定區(qū)域給各個(gè)段用不了64KB空間則造成浪費(fèi)所以,你看我們這張圖上堆棧段和附加段就是重疊的●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段00000H8A00HES8000HSS2800HDS段內(nèi)偏移量

(有效地址)0400HCS●

●●●

●●●

●●●

●●8位FFFFFH64KB當(dāng)前代碼段04000H13FFFH64KB當(dāng)前數(shù)據(jù)段28000H37FFFH64KB當(dāng)前堆棧段80000H8A000H8FFFFH64KB當(dāng)前附加段為了便于后續(xù)說明我們是如何對(duì)內(nèi)存空間進(jìn)行訪問的,查表實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理xxxxxxxxxxxxxxxxxxxxx表頭定起點(diǎn)目標(biāo)位置數(shù)偏移量到達(dá)終點(diǎn)如何對(duì)內(nèi)存空間進(jìn)行訪問我們先來看看我們是如何查表的。查表實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理xxxxxxxxxxxxxxxxxxxxx表頭定起點(diǎn)目標(biāo)位置數(shù)偏移量到達(dá)終點(diǎn)如何查表?同學(xué)們知道要想查表,我們先要知道表頭在哪里,它給定了我們表的起始位置,查表實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理xxxxxxxxxxxxxxxxxxxxx表頭定起點(diǎn)目標(biāo)位置數(shù)偏移量到達(dá)終點(diǎn)查表xxxxxxxxxxxxxxxxxxxxx表頭定起點(diǎn)然后為了查找到目標(biāo),我們還要知道目標(biāo)的位置,或者我們知道目標(biāo)位置與表頭之間相差了多少個(gè)內(nèi)存單元,我們跟這個(gè)變量叫偏移量,意思就是目標(biāo)位置與起始位置之間偏移了多少個(gè)內(nèi)存單元。查表實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理xxxxxxxxxxxxxxxxxxxxx表頭定起點(diǎn)目標(biāo)位置數(shù)偏移量到達(dá)終點(diǎn)xxxxxxxxxxxxxxxxxxxxx數(shù)偏移量表頭目標(biāo)位置定起點(diǎn)到達(dá)終點(diǎn)目標(biāo)位置與起始位置之間偏移了多少內(nèi)存單元查表所以你看,表頭的偏移量為0,因?yàn)樗鼪]有偏移,然后后面的內(nèi)存單元依次偏移1、2、3、4等等。這就是查表的過程。查表實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理xxxxxxxxxxxxxxxxxxxxx表頭定起點(diǎn)目標(biāo)位置數(shù)偏移量到達(dá)終點(diǎn)xxxxxxxxxxxxxxxxxxxxx數(shù)偏移量表頭目標(biāo)位置定起點(diǎn)到達(dá)終點(diǎn)01234查表總結(jié)一下,為了查表,我們要知道目標(biāo)格子的確切位置要么知道表頭以及目標(biāo)格子與表頭之間的偏移量。查表實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理xxxxxxxxxxxxxxxxxxxxx表頭定起點(diǎn)目標(biāo)位置數(shù)偏移量到達(dá)終點(diǎn)目標(biāo)格子確切位置或表頭以及目標(biāo)格子與表頭之間的偏移量那么我們?cè)倩貋砜?M的內(nèi)存,我們把它劃分成多個(gè)段以便于管理,●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段內(nèi)存儲(chǔ)器實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理00000H8A00HES8000HSS2800HDS段內(nèi)偏移量

(有效地址)0400HCS●

●●●

●●●

●●●

●●8位FFFFFH04000H13FFFH64KB當(dāng)前代碼段28000H37FFFH64KB當(dāng)前數(shù)據(jù)段80000H8A000H8FFFFH64KB當(dāng)前堆棧段64KB當(dāng)前附加段劃分多個(gè)段便于管理,比如我把代碼都放在代碼段,數(shù)據(jù)都放在數(shù)據(jù)段,這樣我存取都很方便?!?/p>

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段內(nèi)存儲(chǔ)器實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理00000H8A00HES8000HSS2800HDS段內(nèi)偏移量

(有效地址)0400HCS●

●●●

●●●

●●●

●●8位FFFFFH04000H13FFFH64KB當(dāng)前代碼段28000H37FFFH64KB當(dāng)前數(shù)據(jù)段80000H8A000H8FFFFH64KB當(dāng)前堆棧段64KB當(dāng)前附加段存取方便比如說我現(xiàn)在要訪問代碼段,這個(gè)代碼段就可以看成一個(gè)表格,那我要找到目標(biāo)的格子,要么就是知道這個(gè)格子的20位物理地址。要么我就是知道代碼段的表頭和我要找的格子對(duì)應(yīng)的偏移量。●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段內(nèi)存儲(chǔ)器實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理00000H8A00HES8000HSS2800HDS段內(nèi)偏移量

(有效地址)0400HCS●

●●●

●●●

●●●

●●8位FFFFFH04000H13FFFH64KB當(dāng)前代碼段28000H37FFFH64KB當(dāng)前數(shù)據(jù)段80000H8A000H8FFFFH64KB當(dāng)前堆棧段64KB當(dāng)前附加段找到目標(biāo)格子:1.格子的20位物理地址;2.代碼段表頭和格子對(duì)應(yīng)的偏移量找到目標(biāo)格子:1.格子的20位物理地址;2.代碼段表頭和格子對(duì)應(yīng)的偏移量由于8080和8086的數(shù)據(jù)線是16位的,內(nèi)部寄存器是16位的,內(nèi)存單元是8位的,所以在8088和8086中存儲(chǔ)20位的物理地址不是很方便,因此,在8088和8086中,對(duì)內(nèi)存的尋址使用的是第二種方式,●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段內(nèi)存儲(chǔ)器實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理80808086數(shù)據(jù)線:16位內(nèi)部寄存器:16位內(nèi)存單元:8位存儲(chǔ)20位物理地址不方便尋址使用第二種方式對(duì)于代碼段來說,表頭就是代碼段的段基址CS,偏移量存儲(chǔ)在指令指針寄存器IP中。●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段內(nèi)存儲(chǔ)器實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理00000H8A00HES8000HSS2800HDS段內(nèi)偏移量

(有效地址)0400HCS●

●●●

●●●

●●●

●●8位FFFFFH04000H13FFFH64KB當(dāng)前代碼段28000H37FFFH64KB當(dāng)前數(shù)據(jù)段80000H8A000H8FFFFH64KB當(dāng)前堆棧段64KB當(dāng)前附加段表頭存儲(chǔ)在指令指針寄存器IP不光是在代碼段,在其他的段里面,我們?cè)诓樵兙唧w的這個(gè)單元的時(shí)候都是使用這樣的方式,●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段內(nèi)存儲(chǔ)器實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理00000H8A00HES8000HSS2800HDS段內(nèi)偏移量

(有效地址)0400HCS●

●●●

●●●

●●●

●●8位FFFFFH04000H13FFFH64KB當(dāng)前代碼段28000H37FFFH64KB當(dāng)前數(shù)據(jù)段80000H8A000H8FFFFH64KB當(dāng)前堆棧段64KB當(dāng)前附加段其他段里使用相同方式步驟是這樣的,首先,要知道待查詢的內(nèi)容是處在哪個(gè)段?是在代碼還是數(shù)據(jù)段?還是堆棧段?還是附加段?●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段內(nèi)存儲(chǔ)器實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理步驟知道待查詢的內(nèi)容是處在哪個(gè)段代碼段?數(shù)據(jù)段?堆棧段?附加段?知道在哪個(gè)段以后,我們就知道段基址是多少了其次,還要知道偏移量,說明我們找的這個(gè)單元,它相對(duì)于段基址的偏移位置這樣我們才能準(zhǔn)確的找到目標(biāo)單元●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段內(nèi)存儲(chǔ)器實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理步驟待查詢內(nèi)容處在哪個(gè)段在哪個(gè)段能知道段基址是多少偏移量相對(duì)于段基址偏移位置那么現(xiàn)在同學(xué)們來思考一下,為什么每個(gè)邏輯段最大是64KB?●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段內(nèi)存儲(chǔ)器實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理為什么每個(gè)邏輯段最大是64KB?因?yàn)槲覀兺ǔS眉拇嫫鱽泶鎯?chǔ)偏移量,比如用IP來存儲(chǔ)代碼段的偏移量,●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段內(nèi)存儲(chǔ)器實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理寄存器存儲(chǔ)偏移量IP存儲(chǔ)代碼段偏移量寄存器大?。?6位0~65535只有64K種組合而寄存器的大小是16位的,它能夠表達(dá)的數(shù)就是0~65535,只有64K種組合,所以,8088和8086種劃定邏輯段的時(shí)候就要求邏輯段最大是64KB.●

●●●

●●●

●●●

●●8位00000H04000H13FFFH28000H37FFFH80000H8FFFFH8A000HFFFFFH64KB64KB64KB當(dāng)前代碼段當(dāng)前堆棧段當(dāng)前附加段CS0400HDS2800HSS8000HES8A00H段內(nèi)偏移量

(有效地址)64KB當(dāng)前數(shù)據(jù)段內(nèi)存儲(chǔ)器實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理8088和8086種劃定邏輯段要求邏輯段最大是64KB好,下面我們就來看一下段寄存器,段寄存器是來定義表頭位置的計(jì)算機(jī)中的信息按其特征可分為程序代碼、數(shù)據(jù)和堆棧存儲(chǔ)器也相應(yīng)地劃分為:程序段、數(shù)據(jù)段以及用來傳遞參數(shù)、保護(hù)數(shù)據(jù)和狀態(tài)信息的堆棧段有時(shí)同一種類型的段還會(huì)有多個(gè)通過修改段寄存器內(nèi)容,便可將這些段設(shè)置在存儲(chǔ)器內(nèi)的任何位置段寄存器實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理段寄存器定義表頭位置段寄存器在8088和8086中,我們把信息按特征分成了程序代碼、數(shù)據(jù)和堆棧內(nèi)容,計(jì)算機(jī)中的信息按其特征可分為程序代碼、數(shù)據(jù)和堆棧存儲(chǔ)器也相應(yīng)地劃分為:程序段、數(shù)據(jù)段以及用來傳遞參數(shù)、保護(hù)數(shù)據(jù)和狀態(tài)信息的堆棧段有時(shí)同一種類型的段還會(huì)有多個(gè)通過修改段寄存器內(nèi)容,便可將這些段設(shè)置在存儲(chǔ)器內(nèi)的任何位置段寄存器實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理80888086程序代碼數(shù)據(jù)堆棧內(nèi)容段寄存器因此也就在存儲(chǔ)器中相應(yīng)的劃分了程序段,數(shù)據(jù)段,堆棧段計(jì)算機(jī)中的信息按其特征可分為程序代碼、數(shù)據(jù)和堆棧存儲(chǔ)器也相應(yīng)地劃分為:程序段、數(shù)據(jù)段以及用來傳遞參數(shù)、保護(hù)數(shù)據(jù)和狀態(tài)信息的堆棧段有時(shí)同一種類型的段還會(huì)有多個(gè)通過修改段寄存器內(nèi)容,便可將這些段設(shè)置在存儲(chǔ)器內(nèi)的任何位置段寄存器實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理存儲(chǔ)器程序段數(shù)據(jù)段堆棧段程序段數(shù)據(jù)段堆棧段程序段是用來存放程序的數(shù)據(jù)段是用來傳遞數(shù)據(jù)的堆棧段是用來傳遞參數(shù)或者是保護(hù)數(shù)據(jù)或狀態(tài)的信息,不被修改的計(jì)算機(jī)中的信息按其特征可分為程序代碼、數(shù)據(jù)和堆棧存儲(chǔ)器也相應(yīng)地劃分為:程序段、數(shù)據(jù)段以及用來傳遞參數(shù)、保護(hù)數(shù)據(jù)和狀態(tài)信息的堆棧段有時(shí)同一種類型的段還會(huì)有多個(gè)通過修改段寄存器內(nèi)容,便可將這些段設(shè)置在存儲(chǔ)器內(nèi)的任何位置段寄存器實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理存放程序傳遞數(shù)據(jù)傳遞參數(shù)、保護(hù)數(shù)據(jù)或狀態(tài)的信息不被修改同一種類型的段在內(nèi)存中可能會(huì)有幾個(gè),計(jì)算機(jī)中的信息按其特征可分為程序代碼、數(shù)據(jù)和堆棧存儲(chǔ)器也相應(yīng)地劃分為:程序段、數(shù)據(jù)段以及用來傳遞參數(shù)、保護(hù)數(shù)據(jù)和狀態(tài)信息的堆棧段有時(shí)同一種類型的段還會(huì)有多個(gè)通過修改段寄存器內(nèi)容,便可將這些段設(shè)置在存儲(chǔ)器內(nèi)的任何位置段寄存器實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理00000HFFFFFH64KB當(dāng)前代碼段04000H13FFFH64KB當(dāng)前數(shù)據(jù)段28000H37FFFH64KB當(dāng)前堆棧段80000H8A000H8FFFFH64KB當(dāng)前附加段●

●●●

●●●

●●●

●●8位同一類型的段會(huì)有多個(gè)比如說可能會(huì)有幾個(gè)代碼段也可能會(huì)有幾個(gè)數(shù)據(jù)段通過修改段寄存器的內(nèi)容就可以設(shè)置這個(gè)段在內(nèi)存儲(chǔ)器中的起始位置計(jì)算機(jī)中的信息按其特征可分為程序代碼、數(shù)據(jù)和堆棧存儲(chǔ)器也相應(yīng)地劃分為:程序段、數(shù)據(jù)段以及用來傳遞參數(shù)、保護(hù)數(shù)據(jù)和狀態(tài)信息的堆棧段有時(shí)同一種類型的段還會(huì)有多個(gè)通過修改段寄存器內(nèi)容,便可將這些段設(shè)置在存儲(chǔ)器內(nèi)的任何位置段寄存器實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理00000HFFFFFH64KB當(dāng)前代碼段04000H13FFFH64KB當(dāng)前數(shù)據(jù)段28000H37FFFH64KB當(dāng)前堆棧段80000H8A000H8FFFFH64KB當(dāng)前附加段●

●●●

●●●

●●●

●●8位修改段寄存器內(nèi)容可將段設(shè)置在存儲(chǔ)器內(nèi)的任何位置當(dāng)我們的指令中沒有非常明顯的給出段寄存器的時(shí)候我們就是使用了默認(rèn)的段寄存器段寄存器當(dāng)指令中沒有顯式的“指定”使用某個(gè)段寄存器時(shí),便自動(dòng)使用“默認(rèn)”段寄存器實(shí)際進(jìn)行程序設(shè)計(jì)時(shí),一般都用默認(rèn)段寄存器如:MOVAL,ES:[BX+DI]在用戶程序中通過傳遞指令MOV為DS、SS和ES賦值,但用戶程序不為CS賦值,CS之值由操作系統(tǒng)賦值實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理指令中沒有明顯給出段寄存器時(shí),則使用默認(rèn)段寄存器比如在指令中,需要取一個(gè)數(shù)據(jù),那我們一般默認(rèn),數(shù)據(jù)都是存放在數(shù)據(jù)段中的當(dāng)然你也可以通過指令集中指定的規(guī)則去修改這個(gè)段寄存器,比如在這條指令中,如果不寫ES,那么這個(gè)小方框指向的就是數(shù)據(jù)段但是,如果把ES加在了前面那他其實(shí)指向的是附加段段寄存器當(dāng)指令中沒有顯式的“指定”使用某個(gè)段寄存器時(shí),便自動(dòng)使用“默認(rèn)”段寄存器實(shí)際進(jìn)行程序設(shè)計(jì)時(shí),一般都用默認(rèn)段寄存器如:MOVAL,ES:[BX+DI]在用戶程序中通過傳遞指令MOV為DS、SS和ES賦值,但用戶程序不為CS賦值,CS之值由操作系統(tǒng)賦值實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理指令中沒有明顯給出段寄存器時(shí),則使用默認(rèn)段寄存器實(shí)際進(jìn)行程序設(shè)計(jì)時(shí),一般用默認(rèn)段寄存器MOVAL,ES:[BX+DI]數(shù)據(jù)段ES附加段如何修改段寄存器的值?在程序中,用戶可以通過數(shù)據(jù)傳輸指令MOV,給DS,SS和ES賦值但是不能給cs賦值cs的值是由操作系統(tǒng)自己賦值的段寄存器當(dāng)指令中沒有顯式的“指定”使用某個(gè)段寄存器時(shí),便自動(dòng)使用“默認(rèn)”段寄存器實(shí)際進(jìn)行程序設(shè)計(jì)時(shí),一般都用默認(rèn)段寄存器如:MOVAL,ES:[BX+DI]在用戶程序中通過傳遞指令MOV為DS、SS和ES賦值,但用戶程序不為CS賦值,CS之值由操作系統(tǒng)賦值實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理指令中沒有明顯給出段寄存器的時(shí),自動(dòng)使用默認(rèn)段寄存器實(shí)際進(jìn)行程序設(shè)計(jì)時(shí),一般用默認(rèn)段寄存器程序中通過傳遞指令MOV為DS、SS和ES賦值,但用戶不為CS賦值,CS之值由操作系統(tǒng)賦值也就是說當(dāng)指令中沒有顯示的給出寄存器的時(shí)候就按這個(gè)約定表來,表中前4種內(nèi)存操作的偏移量的來源都是唯一的后2種內(nèi)存操作的偏移量是按各種尋址方式計(jì)算而得的8088/8086對(duì)段寄存器使用的約定表內(nèi)存訪問類型默認(rèn)段寄存器可指定段寄存器段內(nèi)偏移地址來源1取指令CS無(wú)IP2堆棧操作SS無(wú)SP3源串(字符串操作,源地址)DSCS、ES、SSSI4目的串(字符串操作,目的地址)ES無(wú)DI5BP用作基址尋址SSCS、ES、SS按尋址方式計(jì)算得到的有效地址6一般數(shù)據(jù)存取DSCS、ES、SS按尋址方式計(jì)算得到的有效地址謝謝!實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理8088/8086對(duì)段寄存器使用約定表123456內(nèi)存訪問類型默認(rèn)段寄存器可指定段寄存器段內(nèi)偏移地址來源取指令CS無(wú)IP堆棧操作SS無(wú)SP源串(字符串操作,源地址)DSCS、ES、SSSI目的串(字符串操作,目的地址)ES無(wú)DIBP用作基址尋址SSCS、ES、SS按尋址方式計(jì)算得到的有效地址一般數(shù)據(jù)存取DSCS、ES、SS按尋址方式計(jì)算得到的有效地址比如取指令的時(shí)候我們默認(rèn)使用的段是代碼段這個(gè)段寄存器就是CS不可以指定成其他的段偏移量就來自于IP表中前4種內(nèi)存操作的偏移量的來源都是唯一的后2種內(nèi)存操作的偏移量是按各種尋址方式計(jì)算而得的8088/8086對(duì)段寄存器使用的約定表內(nèi)存訪問類型默認(rèn)段寄存器可指定段寄存器段內(nèi)偏移地址來源1取指令CS無(wú)IP2堆棧操作SS無(wú)SP3源串(字符串操作,源地址)DSCS、ES、SSSI4目的串(字符串操作,目的地址)ES無(wú)DI5BP用作基址尋址SSCS、ES、SS按尋址方式計(jì)算得到的有效地址6一般數(shù)據(jù)存取DSCS、ES、SS按尋址方式計(jì)算得到的有效地址謝謝!實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理8088/8086對(duì)段寄存器使用約定表123456內(nèi)存訪問類型默認(rèn)段寄存器可指定段寄存器段內(nèi)偏移地址來源取指令CS無(wú)IP堆棧操作SS無(wú)SP源串(字符串操作,源地址)DSCS、ES、SSSI目的串(字符串操作,目的地址)ES無(wú)DIBP用作基址尋址SSCS、ES、SS按尋址方式計(jì)算得到的有效地址一般數(shù)據(jù)存取DSCS、ES、SS按尋址方式計(jì)算得到的有效地址如果是進(jìn)行堆棧操作的話默認(rèn)的段寄存器是ss偏移量來自于sp我們說SP是指向棧頂?shù)?它其實(shí)就是棧頂與SS之間的偏移量表中前4種內(nèi)存操作的偏移量的來源都是唯一的后2種內(nèi)存操作的偏移量是按各種尋址方式計(jì)算而得的8088/8086對(duì)段寄存器使用的約定表內(nèi)存訪問類型默認(rèn)段寄存器可指定段寄存器段內(nèi)偏移地址來源1取指令CS無(wú)IP2堆棧操作SS無(wú)SP3源串(字符串操作,源地址)DSCS、ES、SSSI4目的串(字符串操作,目的地址)ES無(wú)DI5BP用作基址尋址SSCS、ES、SS按尋址方式計(jì)算得到的有效地址6一般數(shù)據(jù)存取DSCS、ES、SS按尋址方式計(jì)算得到的有效地址謝謝!實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理8088/8086對(duì)段寄存器使用約定表123456內(nèi)存訪問類型默認(rèn)段寄存器可指定段寄存器段內(nèi)偏移地址來源取指令CS無(wú)IP堆棧操作SS無(wú)SP源串(字符串操作,源地址)DSCS、ES、SSSI目的串(字符串操作,目的地址)ES無(wú)DIBP用作基址尋址SSCS、ES、SS按尋址方式計(jì)算得到的有效地址一般數(shù)據(jù)存取DSCS、ES、SS按尋址方式計(jì)算得到的有效地址棧頂之間的偏移量如果是源串的話,默認(rèn)來自于Ds當(dāng)然可以用指令把它指定到cs,ss或者es表中前4種內(nèi)存操作的偏移量的來源都是唯一的后2種內(nèi)存操作的偏移量是按各種尋址方式計(jì)算而得的8088/8086對(duì)段寄存器使用的約定表內(nèi)存訪問類型默認(rèn)段寄存器可指定段寄存器段內(nèi)偏移地址來源1取指令CS無(wú)IP2堆棧操作SS無(wú)SP3源串(字符串操作,源地址)DSCS、ES、SSSI4目的串(字符串操作,目的地址)ES無(wú)DI5BP用作基址尋址SSCS、ES、SS按尋址方式計(jì)算得到的有效地址6一般數(shù)據(jù)存取DSCS、ES、SS按尋址方式計(jì)算得到的有效地址謝謝!實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理8088/8086對(duì)段寄存器使用約定表123456內(nèi)存訪問類型默認(rèn)段寄存器可指定段寄存器段內(nèi)偏移地址來源取指令CS無(wú)IP堆棧操作SS無(wú)SP源串(字符串操作,源地址)DSCS、ES、SSSI目的串(字符串操作,目的地址)ES無(wú)DIBP用作基址尋址SSCS、ES、SS按尋址方式計(jì)算得到的有效地址一般數(shù)據(jù)存取DSCS、ES、SS按尋址方式計(jì)算得到的有效地址如果是目的串的話,默認(rèn)的段寄存器是es,而且不能修改偏移量就要看具體的尋址方式了表中前4種內(nèi)存操作的偏移量的來源都是唯一的后2種內(nèi)存操作的偏移量是按各種尋址方式計(jì)算而得的8088/8086對(duì)段寄存器使用的約定表內(nèi)存訪問類型默認(rèn)段寄存器可指定段寄存器段內(nèi)偏移地址來源1取指令CS無(wú)IP2堆棧操作SS無(wú)SP3源串(字符串操作,源地址)DSCS、ES、SSSI4目的串(字符串操作,目的地址)ES無(wú)DI5BP用作基址尋址SSCS、ES、SS按尋址方式計(jì)算得到的有效地址6一般數(shù)據(jù)存取DSCS、ES、SS按尋址方式計(jì)算得到的有效地址謝謝!實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理8088/8086對(duì)段寄存器使用約定表123456內(nèi)存訪問類型默認(rèn)段寄存器可指定段寄存器段內(nèi)偏移地址來源取指令CS無(wú)IP堆棧操作SS無(wú)SP源串(字符串操作,源地址)DSCS、ES、SSSI目的串(字符串操作,目的地址)ES無(wú)DIBP用作基址尋址SSCS、ES、SS按尋址方式計(jì)算得到的有效地址一般數(shù)據(jù)存取DSCS、ES、SS按尋址方式計(jì)算得到的有效地址不能修改這張表中,前4種內(nèi)存操作的偏移量的來源都是唯一的表中前4種內(nèi)存操作的偏移量的來源都是唯一的后2種內(nèi)存操作的偏移量是按各種尋址方式計(jì)算而得的8088/8086對(duì)段寄存器使用的約定表內(nèi)存訪問類型默認(rèn)段寄存器可指定段寄存器段內(nèi)偏移地址來源1取指令CS無(wú)IP2堆棧操作SS無(wú)SP3源串(字符串操作,源地址)DSCS、ES、SSSI4目的串(字符串操作,目的地址)ES無(wú)DI5BP用作基址尋址SSCS、ES、SS按尋址方式計(jì)算得到的有效地址6一般數(shù)據(jù)存取DSCS、ES、SS按尋址方式計(jì)算得到的有效地址謝謝!實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理8088/8086對(duì)段寄存器使用約定表123456內(nèi)存訪問類型默認(rèn)段寄存器可指定段寄存器段內(nèi)偏移地址來源取指令CS無(wú)IP堆棧操作SS無(wú)SP源串(字符串操作,源地址)DSCS、ES、SSSI目的串(字符串操作,目的地址)ES無(wú)DIBP用作基址尋址SSCS、ES、SS按尋址方式計(jì)算得到的有效地址一般數(shù)據(jù)存取DSCS、ES、SS按尋址方式計(jì)算得到的有效地址偏移量的來源是唯一的后面2種操作的偏移量是看具體的尋址方式表中前4種內(nèi)存操作的偏移量的來源都是唯一的后2種內(nèi)存操作的偏移量是按各種尋址方式計(jì)算而得的8088/8086對(duì)段寄存器使用的約定表內(nèi)存訪問類型默認(rèn)段寄存器可指定段寄存器段內(nèi)偏移地址來源1取指令CS無(wú)IP2堆棧操作SS無(wú)SP3源串(字符串操作,源地址)DSCS、ES、SSSI4目的串(字符串操作,目的地址)ES無(wú)DI5BP用作基址尋址SSCS、ES、SS按尋址方式計(jì)算得到的有效地址6一般數(shù)據(jù)存取DSCS、ES、SS按尋址方式計(jì)算得到的有效地址謝謝!實(shí)模式存儲(chǔ)器尋址和總線內(nèi)存儲(chǔ)器的分段管理8088/8086對(duì)段寄存器使用約定表123456內(nèi)存訪問類型默認(rèn)段寄存器可指定段寄存器段內(nèi)偏移地址來源取指令CS無(wú)IP堆棧操作SS無(wú)SP源串(字符串操作,源地址)DSCS、ES、SSSI目的串(字符串操作,目的地址)ES無(wú)DIBP用作基址尋址SSCS、ES、SS按尋址方式計(jì)算得到的有效地址一般數(shù)據(jù)存取DSCS、ES、SS按尋址方式計(jì)算得到的有效地址看具體尋址方式謝謝觀看!微機(jī)原理及應(yīng)用第四章實(shí)模式存儲(chǔ)器尋址和總線第二講物理地址的表示下面我們來學(xué)習(xí)內(nèi)存儲(chǔ)器的分段管理知道了段寄存器,這一節(jié)我們就來看一下20位的物理地址是如何表示的實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示存儲(chǔ)器組織20位物理地址但它的寄存器都是16位的,如何生成20位的物理地址?1MB的內(nèi)存空間=>1MB個(gè)地址=>2208088/8086CPU的AB數(shù)是20位段寄存器物理地址的表示如何表示20位的物理地址?我們說8088、8086,的內(nèi)存總空間是1MB實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示存儲(chǔ)器組織20位物理地址但它的寄存器都是16位的,如何生成20位的物理地址?1MB的內(nèi)存空間=>1MB個(gè)地址=>2208088/8086CPU的AB數(shù)是20位80888086內(nèi)存總空間1MB1MB的空間我們要為每一個(gè)空間分配一個(gè)地址你可以計(jì)算一下它等于二的20次方,實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示存儲(chǔ)器組織20位物理地址但它的寄存器都是16位的,如何生成20位的物理地址?1MB的內(nèi)存空間=>1MB個(gè)地址=>2208088/8086CPU的AB數(shù)是20位80888086內(nèi)存總空間1MB1MB內(nèi)存空間1MB個(gè)地址220也就是說我們要有二的20次方種組合才能為每一個(gè)內(nèi)存空間,分配一個(gè)不重復(fù)的地址,那二的20次方就相當(dāng)于是就要有20根地址線實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示存儲(chǔ)器組織20位物理地址但它的寄存器都是16位的,如何生成20位的物理地址?1MB的內(nèi)存空間=>1MB個(gè)地址=>2208088/8086CPU的AB數(shù)是20位1MB內(nèi)存空間1MB個(gè)地址2202的20次方種組合每個(gè)內(nèi)存空間分配不重復(fù)的地址20根地址線對(duì),我們實(shí)際上也確實(shí)有20個(gè)地址引腳和20根的地址線實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示存儲(chǔ)器組織20位物理地址但它的寄存器都是16位的,如何生成20位的物理地址?1MB的內(nèi)存空間=>1MB個(gè)地址=>2208088/8086CPU的AB數(shù)是20位20個(gè)地址引腳20根地址線但是,比較麻煩的是,8088和8086,它內(nèi)部的寄存器都是16位的,內(nèi)存空間是8位的,要去保存一個(gè)20位的數(shù)據(jù)不太容易,實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示存儲(chǔ)器組織20位物理地址但它的寄存器都是16位的,如何生成20位的物理地址?1MB的內(nèi)存空間=>1MB個(gè)地址=>2208088/8086CPU的AB數(shù)是20位80888086內(nèi)部寄存器:16位內(nèi)存空間:8位保存20位不容易所以,我們現(xiàn)在遇到的問題是,在8088和8086中如何計(jì)算出20位的物理地址。實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示存儲(chǔ)器組織20位物理地址但它的寄存器都是16位的,如何生成20位的物理地址?1MB的內(nèi)存空間=>1MB個(gè)地址=>2208088/8086CPU的AB數(shù)是20位在8088和8086中如何計(jì)算20位的物理地址?大家還記得嗎?在我們講8088的內(nèi)部結(jié)構(gòu)時(shí),在BIU中有一個(gè)倒馬蹄型的區(qū)域,這個(gè)區(qū)域是用來計(jì)算20位物理地址的它的輸入是兩個(gè)16位的數(shù),但它輸出是一個(gè)20位的數(shù)實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示存儲(chǔ)器組織20位物理地址但它的寄存器都是16位的,如何生成20位的物理地址?1MB的內(nèi)存空間=>1MB個(gè)地址=>2208088/8086CPU的AB數(shù)是20位計(jì)算20位物理地址這究竟是怎么計(jì)算得到的呢?這是我們這一章要解決的重點(diǎn)問題實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示存儲(chǔ)器組織20位物理地址但它的寄存器都是16位的,如何生成20位的物理地址?1MB的內(nèi)存空間=>1MB個(gè)地址=>2208088/8086CPU的AB數(shù)是20位如何計(jì)算20位的物理地址?還記得我們上一次課講的查表嗎,我們是把1M的物理空間分成了若干個(gè)64KB的段,實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示存儲(chǔ)器組織20位物理地址將20位的220=1MB的地址空間分為16個(gè)64KB段(220=24x216)段基址加上段內(nèi)偏移量構(gòu)成20位物理地址段內(nèi)偏移量(16位)以便于用16位的數(shù)作為偏移量來尋址實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示存儲(chǔ)器組織20位物理地址將20位的220=1MB的地址空間分為16個(gè)64KB段(220=24x216)段基址加上段內(nèi)偏移量構(gòu)成20位物理地址段內(nèi)偏移量(16位)段內(nèi)偏移量(16位)16位數(shù)作為偏移量尋址如果要進(jìn)行嚴(yán)格的劃分的話,那么1M就是2的20次方,等于2的4次方乘以2的16次方,實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示存儲(chǔ)器組織20位物理地址將20位的220=1MB的地址空間分為16個(gè)64KB段(220=24x216)段基址加上段內(nèi)偏移量構(gòu)成20位物理地址段內(nèi)偏移量(16位)嚴(yán)格劃分2201MB內(nèi)存空間24216()也就是說按照一個(gè)段緊挨著下一個(gè)段這種分法的話,是可以完整的分出16個(gè)64kb的段,但是其實(shí)上我們劃分的是邏輯段,段和段之間可以有重疊的,所以段的數(shù)量可能是比16個(gè)還要多實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示存儲(chǔ)器組織20位物理地址將20位的220=1MB的地址空間分為16個(gè)64KB段(220=24x216)段基址加上段內(nèi)偏移量構(gòu)成20位物理地址段內(nèi)偏移量(16位)可分出16個(gè)64kb的段劃分邏輯段,段和段之間有重疊數(shù)量比16個(gè)多那我們來看一個(gè)具體的段對(duì)這個(gè)段尋址的時(shí)候就是在段基址的基礎(chǔ)上加上偏移量偏移量是16位的,那么計(jì)算20位的物理地址的關(guān)鍵就在于段基址的選擇上。實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示存儲(chǔ)器組織20位物理地址將20位的220=1MB的地址空間分為16個(gè)64KB段(220=24x216)段基址加上段內(nèi)偏移量構(gòu)成20位物理地址段內(nèi)偏移量(16位)段內(nèi)偏移量(16位)段尋址是段基址的基礎(chǔ)上加上偏移量段基址段基址加段內(nèi)偏移量構(gòu)成20位物理地址在8088和8086中規(guī)定,邏輯段的起始單元必須是物理地址后4位為0的單元。只有這樣的單元才有可能成為一個(gè)段的起始單元。段基址16位的段基址分別由CS/DS/SS/ES段寄存器提供對(duì)其低4位添加4個(gè)二進(jìn)制的0,便構(gòu)成20位的相應(yīng)段的起始地址××××0H段基址實(shí)際上就是段起始地址的高16位89AB0H

10001001101010110000BA19A18A17A16A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示80888086邏輯段起始單元須是物理地址后4位為0的單元起始單元邏輯段起始單元因?yàn)橛辛诉@個(gè)規(guī)定,那么起始單元的20位物理地址中,我們只需要記住前16位就行了,因?yàn)楹竺嫠奈皇?,所以后面4位不用記住。段基址16位的段基址分別由CS/DS/SS/ES段寄存器提供對(duì)其低4位添加4個(gè)二進(jìn)制的0,便構(gòu)成20位的相應(yīng)段的起始地址××××0H段基址實(shí)際上就是段起始地址的高16位89AB0H

10001001101010110000BA19A18A17A16A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示XXX···XXX0000段基地址(16位)起始單元20位物理地址不用記這樣的話,我們就可以用8088、8086的4個(gè)段寄存器來分別存放4個(gè)邏輯段的起始地址的前16位,也就是我們說的段基址。段基址16位的段基址分別由CS/DS/SS/ES段寄存器提供對(duì)其低4位添加4個(gè)二進(jìn)制的0,便構(gòu)成20位的相應(yīng)段的起始地址××××0H段基址實(shí)際上就是段起始地址的高16位89AB0H

10001001101010110000BA19A18A17A16A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示存放4個(gè)邏輯段起始地址前16位段基址例子比如,我們這里給的例子,89AB0H可以做為某個(gè)邏輯段的起始地址,由于它的后四位為0所以我們不去記住后4位,而是只記住前16位,因此,我們僅僅需要把89AB存放在段寄存器中就可以了。段基址16位的段基址分別由CS/DS/SS/ES段寄存器提供對(duì)其低4位添加4個(gè)二進(jìn)制的0,便構(gòu)成20位的相應(yīng)段的起始地址××××0H段基址實(shí)際上就是段起始地址的高16位89AB0H

10001001101010110000BA19A18A17A16A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示某個(gè)邏輯段起始地址:

1000100110101011

0000

BH89AB0A19A18A17A16A15A14A13A12A11A10A9A8

A7A6A5A4

A3A2A1A0把89AB存放在段寄存器中我們?cè)賮砜匆幌露蝺?nèi)偏移量,段內(nèi)偏移量簡(jiǎn)稱偏移量,也稱有效地址effectiveaddress,EA,它是16位無(wú)符號(hào)數(shù)利用它最多可以尋址64k個(gè)內(nèi)存空間簡(jiǎn)稱偏移量,又稱有效地址EA(EffectiveAddress)是一個(gè)16位的無(wú)符號(hào)數(shù)它是操作碼或操作數(shù)所在的存儲(chǔ)單元距相應(yīng)段起始地址的距離(以字節(jié)數(shù)為單位)存放在某寄存器或存儲(chǔ)器中因此,實(shí)際的物理地址不可能小于相應(yīng)的段起始地址段內(nèi)偏移量實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示偏移量段內(nèi)偏移量(16位)段內(nèi)偏移量有效地址effectiveaddress(EA)我們?cè)賮砜匆幌露蝺?nèi)偏移量,段內(nèi)偏移量簡(jiǎn)稱偏移量,也稱有效地址effectiveaddress,EA,它是16位無(wú)符號(hào)數(shù)利用它最多可以尋址64k個(gè)內(nèi)存空間簡(jiǎn)稱偏移量,又稱有效地址EA(EffectiveAddress)是一個(gè)16位的無(wú)符號(hào)數(shù)它是操作碼或操作數(shù)所在的存儲(chǔ)單元距相應(yīng)段起始地址的距離(以字節(jié)數(shù)為單位)存放在某寄存器或存儲(chǔ)器中因此,實(shí)際的物理地址不可能小于相應(yīng)的段起始地址段內(nèi)偏移量實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示偏移量段內(nèi)偏移量(16位)段內(nèi)偏移量有效地址effectiveaddress(EA)16位無(wú)符號(hào)數(shù)最多尋址64k個(gè)內(nèi)存空間它通常存放在寄存器中或是兩個(gè)連續(xù)的內(nèi)存單元中,簡(jiǎn)稱偏移量,又稱有效地址EA(EffectiveAddress)是一個(gè)16位的無(wú)符號(hào)數(shù)它是操作碼或操作數(shù)所在的存儲(chǔ)單元距相應(yīng)段起始地址的距離(以字節(jié)數(shù)為單位)存放在某寄存器或存儲(chǔ)器中因此,實(shí)際的物理地址不可能小于相應(yīng)的段起始地址段內(nèi)偏移量實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示←8→●●●●●●兩個(gè)連續(xù)的內(nèi)存單元一個(gè)內(nèi)存單元可以存放一個(gè)字節(jié),那么兩個(gè)連續(xù)的內(nèi)存單元就可以存放兩個(gè)字節(jié),即16位的數(shù),簡(jiǎn)稱偏移量,又稱有效地址EA(EffectiveAddress)是一個(gè)16位的無(wú)符號(hào)數(shù)它是操作碼或操作數(shù)所在的存儲(chǔ)單元距相應(yīng)段起始地址的距離(以字節(jié)數(shù)為單位)存放在某寄存器或存儲(chǔ)器中因此,實(shí)際的物理地址不可能小于相應(yīng)的段起始地址段內(nèi)偏移量實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示←8→●●●●●●存放一個(gè)字節(jié)存放兩個(gè)字節(jié)16位的數(shù)我們也稱16位字長(zhǎng)的數(shù)是一個(gè)字,word,所以,偏移量可能是來自于寄存器,也可能是來自于一個(gè)存儲(chǔ)器中的一個(gè)字我們要注意,內(nèi)存單元的物理地址是不可能小于它這個(gè)段起始地址的,因?yàn)槠屏康淖钚≈凳?也就是一個(gè)邏輯段的最小的物理地址就是這個(gè)段的起始地址簡(jiǎn)稱偏移量,又稱有效地址EA(EffectiveAddress)是一個(gè)16位的無(wú)符號(hào)數(shù)它是操作碼或操作數(shù)所在的存儲(chǔ)單元距相應(yīng)段起始地址的距離(以字節(jié)數(shù)為單位)存放在某寄存器或存儲(chǔ)器中因此,實(shí)際的物理地址不可能小于相應(yīng)的段起始地址段內(nèi)偏移量實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示段內(nèi)偏移量操作碼或操作數(shù)所在的存儲(chǔ)單元距相應(yīng)段起始地址的距離(以字節(jié)數(shù)為單位)存放在某寄存器或存儲(chǔ)器中實(shí)際物理地址不能小于相應(yīng)的段起始地址通常,我們用段基址冒號(hào),段內(nèi)偏移量的方式來表達(dá)內(nèi)存單元的地址,表達(dá)方式兩個(gè)16位的邏輯地址(段基址及偏移量)構(gòu)成一個(gè)20位的物理地址:20位物理地址=段基址×16+段內(nèi)偏移量實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示謝謝!段基址:段內(nèi)偏移量段基址:表達(dá)內(nèi)存單元地址段內(nèi)偏移量這種方式也被稱為邏輯地址表達(dá)方式表達(dá)方式兩個(gè)16位的邏輯地址(段基址及偏移量)構(gòu)成一個(gè)20位的物理地址:20位物理地址=段基址×16+段內(nèi)偏移量實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示謝謝!段基址:段內(nèi)偏移量段基址:表達(dá)內(nèi)存單元地址邏輯地址表達(dá)方式難免20位物理地址的計(jì)算方式是段基址,這個(gè)16位的數(shù)往左移動(dòng)四位后面加四個(gè)零再加上段內(nèi)偏移量請(qǐng)同學(xué)們注意,老師現(xiàn)在展示的這個(gè)公式是相對(duì)于10進(jìn)制來說的,也就是我們把一個(gè)二進(jìn)制的數(shù)向左移動(dòng)4位,就相當(dāng)于這個(gè)數(shù)的十進(jìn)制表達(dá)方式乘以了16表達(dá)方式兩個(gè)16位的邏輯地址(段基址及偏移量)構(gòu)成一個(gè)20位的物理地址:20位物理地址=段基址×16+段內(nèi)偏移量實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示謝謝!段基址:段內(nèi)偏移量20位物理地址計(jì)算方式兩個(gè)16位邏輯地址(段基址及偏移量)構(gòu)成一個(gè)20位的物理地址:20位物理地址=段基址×16+段內(nèi)偏移量所以,同學(xué)們?cè)谑褂玫臅r(shí)候要注意,段基址的表達(dá)方式,是二進(jìn)制數(shù),十進(jìn)制數(shù)還是十六進(jìn)制數(shù)表達(dá)方式兩個(gè)16位的邏輯地址(段基址及偏移量)構(gòu)成一個(gè)20位的物理地址:20位物理地址=段基址×16+段內(nèi)偏移量實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示謝謝!段基址:段內(nèi)偏移量段基址表達(dá)方式是二進(jìn)制數(shù)、十進(jìn)制數(shù)、還是十六進(jìn)制數(shù)?如果是十進(jìn)制數(shù)就是乘16如果是二進(jìn)制數(shù)就是在后面補(bǔ)4個(gè)0如果是十六進(jìn)制數(shù)就是在后面補(bǔ)1個(gè)0因?yàn)?個(gè)二進(jìn)制的0就相當(dāng)于十六進(jìn)制的1個(gè)0由于我們?cè)诒硎镜臅r(shí)候多用十六進(jìn)制,因此最后一種方式用的最多。表達(dá)方式兩個(gè)16位的邏輯地址(段基址及偏移量)構(gòu)成一個(gè)20位的物理地址:20位物理地址=段基址×16+段內(nèi)偏移量實(shí)模式存儲(chǔ)器尋址和總線物理地址的表示謝謝!段基址:段內(nèi)偏移量×16十進(jìn)制補(bǔ)0000二進(jìn)制補(bǔ)0十六進(jìn)制補(bǔ)04個(gè)二進(jìn)制常用謝謝觀看!微機(jī)原理及應(yīng)用第四章實(shí)模式存儲(chǔ)器尋址和總線第三講物理地址的計(jì)算這一節(jié)我們來學(xué)習(xí)一下物理地址的計(jì)算物理地址的計(jì)算在上一節(jié)我們已經(jīng)提到了20位物理地址的計(jì)算公式是這樣的,段基址乘上十六加上段內(nèi)偏移量,老師也強(qiáng)調(diào)了這個(gè)公式是十進(jìn)制的寫法。表達(dá)方式兩個(gè)16位的邏輯地址(段基址及偏移量)構(gòu)成一個(gè)20位的物理地址:20位物理地址段基址×16+段內(nèi)偏移量十進(jìn)制如果你的段基址和段內(nèi)偏移量都是二進(jìn)制的話,就是將段基址后面添四個(gè)零,再加上段內(nèi)偏移量。表達(dá)方式兩個(gè)16位的邏輯地址(段基址及偏移量)構(gòu)成一個(gè)20位的物理地址:20位物理地址段基址左移4位+段內(nèi)偏移量二進(jìn)制如果你的段基址和段內(nèi)偏移量都是十六進(jìn)制的話,就是將段基址的后面添一個(gè)零,然后再加上段內(nèi)偏移量表達(dá)方式兩個(gè)16位的邏輯地址(段基址及偏移量)構(gòu)成一個(gè)20位的物理地址:段基址左移1位+段內(nèi)偏移量十六進(jìn)制20位物理地址我們常用邏輯地址來表示地址用邏輯地址表示地址表達(dá)方式邏輯地址是段基址:偏移量這樣的一個(gè)寫法。那么我們計(jì)算20位物理地址的時(shí)候,其實(shí)就是用了邏輯地址的兩個(gè)量,按公式計(jì)算得到一個(gè)20位的物理地址,這個(gè)20位的物理地址在CPU中是在地址加法器這個(gè)模塊進(jìn)行運(yùn)算的,它的輸入是兩個(gè)16位的數(shù),地址加法器會(huì)對(duì)段基址執(zhí)行移位的處理,然后再跟偏移量相加,最后將得到的20位的物理地址送往地址總線,地址總線會(huì)依據(jù)我們給出的這個(gè)信息在內(nèi)存儲(chǔ)器中找到相應(yīng)的內(nèi)存單元段基址偏移量20位物理地址在CPU的地址加法器中運(yùn)算表達(dá)方式程序中所涉及的是兩個(gè)16位的邏輯地址(段基址及其偏移量)邏輯地址是段基址:偏移量這樣的一個(gè)寫法。那么我們計(jì)算20位物理地址的時(shí)候,其實(shí)就是用了邏輯地址的兩個(gè)量,按公式計(jì)算得到一個(gè)20位的物理地址,這個(gè)20位的物理地址在CPU中是在地址加法器這個(gè)模塊進(jìn)行運(yùn)算的,它的輸入是兩個(gè)16位的數(shù),地址加法器會(huì)對(duì)段基址執(zhí)行移位的處理,然后再跟偏移量相加,最后將得到的20位的物理地址送往地址總線,地址總線會(huì)依據(jù)我們給出的這個(gè)信息在內(nèi)存儲(chǔ)器中找到相應(yīng)的內(nèi)存單元段基址偏移量移位處理再和偏移量相加信息(代碼或數(shù)據(jù))實(shí)際存放在某個(gè)20位的物理地址所指的存儲(chǔ)器中它這個(gè)表中羅列了邏輯地址的來源,這里尤其是默認(rèn)的來源,大家是要記住的。比如指令代碼,它的邏輯地址默認(rèn)就是CSIP,這個(gè)是不會(huì)改變的,對(duì)于堆棧操作,它的邏輯地址默認(rèn)就是SSSP。對(duì)于數(shù)據(jù)操作,它的邏輯地址默認(rèn)就是DSEA。這里的EA表示有效地址,具體要看代碼中的尋址方式,也就是說代碼中會(huì)告訴我們這個(gè)EA到底是多少或者告訴我們?nèi)ツ睦镎疫@個(gè)EA。如果是字符串操作的話,要分源串和目的串,對(duì)于源串操作,它的邏輯地址默認(rèn)是DSSI。如果是目的串,它的邏輯地址默認(rèn)是ESDI,這些都是默認(rèn),不會(huì)在代碼中顯示的給出。下面我們通過幾個(gè)具體的實(shí)例來看一下物理地址的計(jì)算邏輯地址的來源操作類型段基址:偏移量取指令CS:IP堆棧操作SS:SP讀寫數(shù)據(jù)DS:EA

(默認(rèn)):(由各種尋址方式獲得)字符串操作(源地址)DS(默認(rèn)):SI字符串操作(目的地址)ES:DI有效地址假設(shè)我們要訪問的內(nèi)存單元在代碼段,這個(gè)內(nèi)存單元的邏輯地址是2500H冒號(hào)95F3H。我們知道,這里的2500H是CS的值,95F3H是IP的值。下面要計(jì)算這條指令的物理地址代碼段中的指令2500CS:IP2500H:95F3HH首先把2500h向左移動(dòng)一位在后面添一個(gè)0,然后跟95f3h相加,計(jì)算結(jié)果是2e5f3h。這就是它的物理地址代碼段中的指令2500+H0095F3H2E5F3H20位物理地址CS:IP2500H:95F3H保存在數(shù)據(jù)段,段內(nèi)偏移地址由SI給出假設(shè)我們要訪問的內(nèi)存單元在數(shù)據(jù)段,這個(gè)內(nèi)存單元的邏輯地址是DS冒號(hào)SI,并且已知DS為3000h,SI為2000h,那么你要知道這個(gè)數(shù)據(jù)它保存在數(shù)據(jù)段,它的段內(nèi)偏移地址由SI給出,我們來算它的物理地址,數(shù)據(jù)段中的指令3000DS:SI3000h:2000hH首先把3000h向左移動(dòng)一位,在后邊添一個(gè)0,再加上2000h得到32000h數(shù)據(jù)段中的指令3000+H002000H32000HDS:SI3000h:2000h再來看堆棧段中例子,堆棧段默認(rèn)的邏輯地址是ss冒號(hào)sp,假設(shè)已知SS的值是4d20h,SP的值是3aBFh我們來計(jì)算它的物理地址堆棧段中的指令4D20SS:SP4D20h:3ABFhH首先,將4d20h向左移動(dòng)一位得到4d200h,再加上3abfh得到50cbfh所以他的物理地址就是50cbfh堆棧段中的指令4D20+H003ABFH

50CBFH物理地址SS:SP4D20h:3ABFh最后再來看一個(gè)附加段的例子,假設(shè)附加段的數(shù)據(jù)的邏輯地址是ES冒號(hào)AX,也就是說這個(gè)數(shù)據(jù)的偏移地址存放在AX中,已知ES等于3A0ch,Ax等于A600h,我們來計(jì)算它的物理地址就是附加段中的指令3A0CES:AX3A0Ch:A600hH3A0cH向左移動(dòng)一位,后面添一個(gè)0,加上A600h得到446c0h附加段中的指令3A0C+H00A600H446C0HES:AX3A0Ch:A600h99FFFH好,講完了物理地址的計(jì)算,現(xiàn)在你能看懂這張圖了嗎?這張圖上一共有四個(gè)段,cs、ds、ss和es,在圖的右邊標(biāo)注了每個(gè)段的起始和結(jié)束的20位物理地址,CS的內(nèi)容是0400h,那么從04000h開始的64kB這么大的內(nèi)存空間是代碼段99FFFH你可以計(jì)算一下,在04000h上加FFFFH,得到13FFFH,就是代碼段的最后一個(gè)單元的物理地址同樣的對(duì)于數(shù)據(jù)段你也可以進(jìn)行類似的計(jì)算04000H+13FFFH0FFFFH99FFFH堆棧段和附加段是重疊的堆棧段附加段重疊堆棧段從80000h開始,到8FFFFh結(jié)束99FFFH附加段是從8A000H開始,倒99fffh結(jié)束所以8A000H~8FFFH這個(gè)區(qū)間的內(nèi)存單元既屬于堆棧段又屬于附加段99FFFH99FFFH謝謝觀看!微機(jī)原理及應(yīng)用第四章實(shí)模式存儲(chǔ)器尋址和總線第四講時(shí)序和周期下面我們來學(xué)習(xí)一下時(shí)序和周期時(shí)序和周期我們先來看一下CPU的工作時(shí)序,每條指令它的復(fù)雜程度是不一樣的工作時(shí)序指令復(fù)雜程度不同根據(jù)他的復(fù)雜程度不同,指令在內(nèi)存中可能會(huì)占用一個(gè)或者是若干個(gè)字節(jié),工作時(shí)序空間上時(shí)間上復(fù)雜程度內(nèi)存中占用1~若干個(gè)字節(jié)在時(shí)間上來看,我們把執(zhí)行一條指令所需要的時(shí)間稱為指令周期,這個(gè)時(shí)間可能是一個(gè)或者是若干個(gè)總線周期,這也跟這條指令的復(fù)雜程度有關(guān),每個(gè)總線周期都是由若干個(gè)時(shí)鐘周期來組成的工

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論