x86汇编-8086内存访问和程序分段-3

128 阅读2分钟

8086内存访问

CPU通过地址线给出要访问的内存单元的地址 通过数据线读取内存单元的指令或向目标内存单元写入数据 读写操作由duxie控制线控制
8086的硬件设计有20根地址线 所以8086能访问2^20个内存单元

程序分段

逻辑地址
8086的寄存器只有16位 但是有20根地址线 使用逻辑地址表示实际的物理地址
逻辑地址由段地址和偏移地址组成 段地址和偏移地址都是16位
计算规则: 实际物理地址 = (逻辑地址<<4) + (偏移地址)
程序段
偏移地址有16位能表示的范围{0000,FFFF}(使用十六进制表示)
偏移地址的第一个位置到最后一个位置这个范围是一个程序段

实际物理地址逻辑地址计算方式
A526F9527:FFFF9527 << 4 = 95270 95270 + FFFF = A526F(实际物理地址)
952709527:00009527 << 4 = 95270 95270 + 0000 = 95270(实际物理地址)

95270~A526F这个范围是9527作为段地址的一个完整的程序段
逻辑地址的灵活性
一个实际物理地址可以由多个逻辑地址表示
8086只允许以0结尾的物理地址作为段地址

实际物理地址逻辑地址1逻辑地址2
A526F9527:FFFFA526:000F

使用不同的段地址+偏移地址的组合可以表示同一个物理地址