8086内存访问
CPU通过地址线给出要访问的内存单元的地址 通过数据线读取内存单元的指令或向目标内存单元写入数据 读写操作由duxie控制线控制
8086的硬件设计有20根地址线 所以8086能访问2^20个内存单元
程序分段
逻辑地址
8086的寄存器只有16位 但是有20根地址线 使用逻辑地址表示实际的物理地址
逻辑地址由段地址和偏移地址组成 段地址和偏移地址都是16位
计算规则: 实际物理地址 = (逻辑地址<<4) + (偏移地址)
程序段
偏移地址有16位能表示的范围{0000,FFFF}(使用十六进制表示)
偏移地址的第一个位置到最后一个位置这个范围是一个程序段
| 实际物理地址 | 逻辑地址 | 计算方式 |
|---|---|---|
| A526F | 9527:FFFF | 9527 << 4 = 95270 95270 + FFFF = A526F(实际物理地址) |
| 95270 | 9527:0000 | 9527 << 4 = 95270 95270 + 0000 = 95270(实际物理地址) |
95270~A526F这个范围是9527作为段地址的一个完整的程序段
逻辑地址的灵活性
一个实际物理地址可以由多个逻辑地址表示
8086只允许以0结尾的物理地址作为段地址
| 实际物理地址 | 逻辑地址1 | 逻辑地址2 |
|---|---|---|
| A526F | 9527:FFFF | A526:000F |
使用不同的段地址+偏移地址的组合可以表示同一个物理地址