8086分段訪問內存
『壹』 用段寄存器訪問內存的細節(匯編入門)
是。。
地址等於CS*10H+IP=1234
『貳』 8086/8088系統中,存儲器為什麼要分段,一個段的最大和最小各為多少位元組
8086/8088系統中,存儲器分段的主要目的是便於存儲器的管理,使得可以用16位寄存器來定址20位的內存空間。一個段最大為64KB,最小為16B。
存儲器一般用來保存程序的中間結果,為隨後的指令快速提供操作數,從而避免把中間結果存入內存,再讀取內存的操作。
由於存儲器的個數和容量都有限,不可能把所有中間結果都存儲在存儲器中,所以,要對存儲器進行適當的調度。根據指令的要求,管理安排適當的寄存器,避免操作數過多的傳送操作。
8086/8088CPU可直接定址1MB的存儲器空間,直接定址需要20位地址碼,而所有內部寄存器都是16位的,只能直接定址6KB,因此採用分段技術來解決。將1MB的存儲空間分成若干邏輯段,每段最長64KB,最短16B。這些邏輯段在整個存儲空間中可浮動。
(2)8086分段訪問內存擴展閱讀:
8086/8088CPU內部設置了4個16位段寄存器,它們分別是代碼段寄存器CS、數據段寄存器DS、堆棧段寄存器SS、附加段寄存器ES、由它們給出相應邏輯段的首地址,稱為「段基址」。段基址與段內偏移地址組合形成20位物理地址,段內偏移地址可以存放在寄存器中,也可以存放在存儲器中。
程序較小時,代碼段、數據段、堆棧段可放在一個段內,即包含在64KB之內,而當程序或數據量較大時,超過了64KB,那麼可以定義多個代碼段或數據段、堆棧段、附加段。
『叄』 8088/8086 CPU 是如何實現內存的分段管理的這種管理機制的優劣有哪些
用段寄存器和偏移地址寄存器,搭配在一起,合成 20 位的地址號碼。
缺點,是添亂。
沒有優點。
到了 386 CPU 問世的時候,就不分段了。
或者說,全部內存,就分成一個段。
分段管理,就是個笑柄。
其它品牌的 CPU,都沒有用這么笨的方法。
『肆』 8086給各寄存器,內存分配的地址范圍是什麼
CPU的物理地址不變,而邏輯地址分配是隨機的,每次載入系統時都不一樣,可以在DOS里查看。對於有16根數據線,20根地址線的8086CPU,將邏輯地址用段基地址和偏移地址表示。段寄存器中的段基地址可以定義任何64KB存儲器的起始地址,偏移量用來在64KB存儲器中任選一單元,每一個段的長度為64KB,地址范圍為(起始地址~起始地址+FFFFH),起始地址為段基地址×10H。
『伍』 8086內存分段時對段基址有何規定,段基址與段寄存器之間是什麼關系,怎麼形成20位物理地址
8086內存分段時對段基址有何規定,段基址與段寄存器之間是什麼關系,
--什麼是《段基址》?
怎麼形成20位物理地址
--段地址左移四位,再加上偏移地址。
『陸』 8086系統中的存儲器為什麼要採用分段結構有什麼好處
8086CPU中的寄存器都是16位的,16位的地址只能訪問64KB的內存。086系統中的物理地址是由20根地址匯流排形成的,要做到對20位地址空間進行訪問,就需要兩部分地址,在8086系統中,就是由段基址和偏移地址兩部分構成。
這兩個地址都是16位的,將這兩個地址採用相加的方式組成20位地址去訪問存儲器。在8086系統的地址形成中,當段地址確定後,該段的定址范圍就已經確定,其容量不大於64KB。同時,通過修改段寄存器內容,可達到邏輯段在整個1MB存儲空間中浮動。
各個邏輯段之間可以緊密相連,可以中間有間隔,也可以相互重疊(部分重疊,甚至完全重疊)。採用段基址和偏移地址方式組成物理地址的優點是:滿足對8086系統的1MB存儲空間的訪問,同時在大部分指令中只要提供16位的偏移地址即可。
(6)8086分段訪問內存擴展閱讀
把段的起始單元的物理地址除以16的結果稱為段地址,它為16位,寫成十六進制是4位:XXXXH。顯然,段地址決定了段在lMB空間中的位置。段內各存儲單元相對段的起始單元都有一個距離,稱為段內偏移量。
在對內存進行操作時,段地址先確定下來,然後給出不同的段內偏移量,就可以實現段內的定址。段地址也是可以改變的,即段在1MB空間中的位置是可變的,因而可實現1MB的全范圍定址。
由於採用了分段結構,因此可以把每一個存儲單元看成是具有兩種類型的地址:物理地址和邏輯地址。物理地址就是實際地址,它具有20位的地址值,它惟一地標識1MB存儲空間的某一存儲單元。CPU與存儲器之間的信息交換都是使用這個物理地址。
邏輯地址是編程時所使用的地址,它由段地址和段內偏移量組成。邏輯地址和物理地址的關系為:物理地址=段地址16+段內偏移量。由邏輯地址形成物理地址是由匯流排介面部件中的電路實現的。
『柒』 8086cpu把1MB 的內存空間分成幾個邏輯段
8086cpu把1MB 的內存空間分成一個段,范圍就是64K。
段和段,可以重疊,甚至可以完全重合,即共用同一個64K。那麼,就是可以隨便分,多少段都行。如果不重疊,最多就是分成16個段,因為:16 × 64K = 1M。
8086把1MB的存儲空間分為若干個邏輯段,每段最多可含64KB長的連續存儲單元。每個段由軟體賦給一個起始地址,這個地址低四位為零。
(7)8086分段訪問內存擴展閱讀
8086類型的CPU地址匯流排寬度為20,定址能力相當於2的20次方,數據匯流排為16,一次性傳遞數據2B,讀取1k數據需要512次。8086把1MB的存儲空間分為若干個邏輯段,每段最多可含64KB長的連續存儲單元。每個段由軟體賦給一個起始地址,這個地址低四位為零。
8086CPU最大可訪問1MB的存儲空間。8086 CPU有20條地址線,可直接定址1MB的存儲空間,每一個存儲單元可以存放一個位元組(8位)二進制信息。
微機原理中提到在計算機硬體中傳遞的高低電平的2進制信號,1根是2的1次方,2根是2的2次方,以此類推20根就是2的20次方,也就是2^10*2^10--2的10次方乘以2的10次方,也就是1024*1024=1MB。這樣才可以在8086工作在任何狀態下都可以保證數據通道不會阻塞。
『捌』 8086cpu使用的存儲器為什麼要分段怎麼樣分段
8086裡面提供了一個叫做地址加法器的東西,它可以將你要訪問的地址從16位加工成20位的地址。以這個20位地址為起點CPU可以向後訪問64KB的內存,如果需要訪問更多地址,則可以用地址加法器生成一個更大的起點地址(段基址),再從此起點向後又可以訪問64KB內存。以此類推,就完成了對所有內存地址的訪問。20根地址線外面接了1M的內存。如果不採用這種分段方式CPU只能定址00000H到0FFFFH的內存地址,這才64KB,剩下的960KB浪費了,豈不是太可惜了?
『玖』 8086內存分段理解問題.謝謝
8086是16位CPU,CPU內部寄存器都是16位。那麼地址也是由CPU裡面的寄存器提供的,故只能提供16位地址,可定址64K空間。而8086覺得64K空間不夠用,引腳地址線非要弄成20條,定址1M空間。但CPU裡面地址只能是16位提供16位地址,裡面的16位地址和外面的20根地址線矛盾怎麼解決呢?只好多加了那幾個段寄存器,和一些如DI的指針寄存器。每次形成地址時,根據不同的指令,系統會自動選取一個段寄存器(16位)左移四位後再加上一個對應的指針寄存器(在BIU里的地址加法器中完成),形成實際的物理地址20位輸出,可定址1M空間。你看四個段左移四位後形成20位的實際物理地址的段基址,再加上各自的指針64K的范圍,四個段每個都是64K。
總結:8086採用這種段加偏移技術,可以解決內部寄存器16位,但可提供20位地址的問題,將外定址空間擴大到1M。我們在程序最初將CS DS SS ES給初值後,那這四個段在1M空間中的起始位置就確定了,由於每段對應的指針(如DI)是16位,故每段大小是64K。當然CS,DS還可以再重給初值對段重新定義,CS,DS可以相同幾個段重疊(如果放得下的話),也可以分開。大致是這樣,不知你明白了沒?
『拾』 簡述8086cpu的內存分配,分為幾個部分
在8086中,ROM占據著空間頂端的64KB,物理地址范圍為
0xF0000~0xFFFFF,裡面固化了開機要執行的命令
DRAM占據著低640KB,地址范圍為0x00000-0x9ffff,中間一部分還分給其他設備
8086在加電或者復位後,CS=0XFFFF,IP=0X0000,這樣訪問的內存就是0xFFFF0,這里通常是一個跳轉指令,一個典型的例子如下:
jmp 0xf000:0xe05b
這樣,CPU就從目的地址重新取指令來執行在一聲聲哀嚎聲中,數學老師帶著一摞試捲走了進來。
好像是因為冬天天冷,體育老師凍感冒了。
所以變成了兩節數學課,順便考個試。
數學老師名叫歐島,一個很富有數學氣息的名字,常年帶著一個黑框眼睛。
卷子陸續分發。
作為一個學渣,蘇牧無奈的拿出了數學參考資料,想碰碰運氣看能不能找到原題。
「叮!查看了數學題目,數學積分+1,當前積分1/100,等級:一級」
突然,從腦海中冒出來的聲音,將他嚇了一大跳,差點沒從凳子上滑落下來。
一旁的同桌顏小珂忍住沒有笑場。
歐島則是狠狠的瞪了蘇牧一眼。
「???…」
蘇牧瞪大了眼睛,有些不可置信。
「這是什麼鬼東西?這是系統??居然真的有系統這種東西?」
蘇牧繼續翻動,又出現了同樣的聲響。
「叮!您查看了數學題目,數學積分+1,當前積分2/100,等級:一級」
他只是瞟了一眼,居然就增加了積分?
蘇牧覺得自己的腦子清明了些。
這些陌生的數學題目,似乎看起來也熟悉了幾分。
他越發的激動起來。
這些都是真正出現在他眼前的變化!
蘇牧翻書的動作越來越快,積分也越來越多,直到歐島走過來站到了他的面前,才反應過來迅速收了回去。
這個時候,他的積分已經達到了81/100。
他並沒有慌張,而是繼續將試卷上的題目查看了一遍。
終於,系統迎來了新的提示音。
「叮,您的數學積分已經足夠,等級:二級,當前積分0/1000!」
這一瞬間,蘇牧彷彿像醍醐灌頂一般,曾經那些陌生的數學題,彷彿變成了多年的好友!
他居然!
看懂了!
看懂了!!
居然看懂了!!
蘇牧的內心頓時內流滿面,頗有苦盡甘來的感覺。
彷彿是要檢驗自己的成果,蘇牧的心思完全沉寂在了試卷之中,這是一個學渣對於知識的渴望。
時間一點一滴的過去,就連蘇牧自己都沒有發現。
可惜的是,雖然他的數學已經達到了二級,但還是有些題目沒辦法運算出來。
「叮…..」
這一次不是系統的提示音,而是下課的鈴聲。
蘇牧真的是頭一次感受到了時間過的如此之快。
曾經漫長的兩個小時,現在居然還讓他有些意猶未盡。
這就是學霸的感覺嗎?他默默的想到。
這張試卷,蘇牧覺得自己應該是103分。
因為不會的題目他都空著。
而那些簡單一點的題目,蘇牧有一種迷之自信。
他得出的答案,一定是正確答案!
……
「我要好好學習了。」
強忍住內心的激動,蘇牧擺正了