8086内存分段理解
生活随笔
收集整理的這篇文章主要介紹了
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可以相同幾個段重疊(如果放得下的話),也可以分開。大致是這樣,不知你明白了沒?
總結
以上是生活随笔為你收集整理的8086内存分段理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ARM的CACHE原理(转)
- 下一篇: 运行地址和加载地址