数据与代码分离
代码就是CPU要执行的指令(只读) 数据是要读取、修改(读写) 如果放到一起存在误修改指令的可能 所以将数据和代码分开(数据段、代码段) 将原来的操作数改成操作数所在内存单元的地址
程序重定位的需求
上面程序存在一个问题 如果这个程序没有被加载到0000物理地址处 那么整个程序将无法运行
增加寄存器 修改操作数含义
DS寄存器: 数据段起始寄存器
CS寄存器: 代码段起始寄存器
IP寄存器: 偏移地址
将操作数从原来的内存地址改为数据地址距离数据段起始位置的偏移量
增加段寄存器后内存访问过程