Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

04-8086的寻址方式 #4

Open
HHuiHao opened this issue Apr 23, 2018 · 0 comments
Open

04-8086的寻址方式 #4

HHuiHao opened this issue Apr 23, 2018 · 0 comments

Comments

@HHuiHao
Copy link
Owner

HHuiHao commented Apr 23, 2018

04-8086的寻址方式

  • CPU访问内存单元时,要给出内存单元的地址

  • 8086有20位地址总线,可以传送20位的地址,1M的寻址能力

  • 但它又是16位结构的CPU,它内部能够一次性处理、传输、暂时存储的地址为16位。如果将地址从内部简单地发出,那么它只能送出16位的地址,表现出来的寻址能力只有64KB

  • 8086采用一种在内部用2个16位地址合成的方法来生成1个20位的物理地址

  • 地址加法器采用物理地址=段地址*16+偏移地址的方法,用段地址和偏移地址合成物理地址。列如,8086CPU要访问地址为123C8H的内存单元,此时,地址加法器的工作过程:

  • CUP可以用不同的段地址和偏移地址形成同一个物理地址

内存的分段管理

  • 8086是用“起始地址(段地址×16) + 偏移地址 = 物理地址”的方式给出物理地址

  • 为了开发方便,我们可以采取分段的方法来管理内存,比如:

1.地址10000H-100FFH的内存单元组成一个段,该段的起始地址为10000H,段地址为1000H,大小为100H
2.地址10000H-1007FH、10080H-100FFH的内存单元组成2个段,它们的起始地址为:10000H和10080H,段地址为1000H和1008H,大小都为80H

  • 偏移地址为16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant