(2)、逻辑地址与物理地址 15 03210 段基址 0000 段基址 200OH 20000H 偏移地址 逻辑地址 段内偏移地址 5F62H 2 5F60H 25F61H 基址加法器 25F62H 25F63H 19 物理地址 物理地址的形成 逻辑地址与物理地址
段基址 0 0 0 0 15 0 3 2 1 0 偏移地址 基址加法器 物理地址 15 0 19 0 物理地址的形成 . ..... 20000H 25F60H 25F61H 25F62H 25F63H 2000H 段基址 逻 辑 地 址 段内偏移地址 5F62H 逻辑地址与物理地址 (2)、逻辑地址与物理地址
通过取指令、堆栈操作获取逻辑地址 「操作类型正常使用(隐含)可替换 偏移物理地址计算 段基址 段地址 地址 取指令 CS 堆栈操作 无无 IP (CS)×16d+(P) SP (SS)×16d+(SP) BP间址 SS CSDS,ES有效地址EA|(SS)×16d+EA 存取变量 DS CSES,SS有效地址EA|(Ds)x16d+EA 源字符串 DS CS, ES, SS SI(sx16d+s 目标字符串 ES 无 DI (ES)×16d+(DD)
操作类型 正常使用(隐含) 段基址 可替换 段地址 偏移 地址 物理地址计算 取指令 CS 无 IP (CS)16d+(IP) 堆栈操作 SS 无 SP (SS) 16d+(SP) BP间址 SS CS,DS,ES 有效地址EA (SS) 16d+EA 存取变量 DS CS,ES,SS 有效地址EA (DS )16d+EA 源字符串 DS CS,ES,SS SI (DS) 16d+(SI) 目标字符串 ES 无 DI (ES) 16d+(DI) 通过取指令、堆栈操作获取逻辑地址
取指令: 自动选择代码段寄存器CS, 再加上由决定的16位偏移量, 计算得到要取的指令20位物理地址。 堆栈栈顶操作: 自动选择堆栈段寄存器SS, 再加上由SP决定的16位偏移量, 计算得到堆栈栈顶操作需要的20位物理地址
取指令: 自动选择代码段寄存器CS, 再加上由IP决定的16位偏移量, 计算得到要取的指令20位物理地址。 堆栈栈顶操作: 自动选择堆栈段寄存器SS, 再加上由SP决定的16位偏移量, 计算得到堆栈栈顶操作需要的20位物理地址
涉及到操作数(与执行指令有关的地址、数字、寄有器 等统称为操作数): 自动选择数据段寄存器DS或附加段寄存器ES 再加上16位偏移量,计算得到操作数的20位物理地址 其中: 16位偏移量:包含在:指令中的直接地址 某个16位地址寄存器的值 指令中的位移量+16位地址寄存器中值等。 16位偏移量关键取决于指令的寻址方式
涉及到操作数(与执行指令有关的地址、数字、寄存器 等统称为操作数): 自动选择数据段寄存器DS或附加段寄存器ES, 再加上16位偏移量,计算得到操作数的20位物理地址。 其中: 16位偏移量: 包含在:指令中的直接地址 某个16位地址寄存器的值 指令中的位移量+16位地址寄存器中值等。 16位偏移量关键取决于指令的寻址方式
归纳股奇存器和其他奇存器组合指向存储单元示意图如下: CS IP 代码段 DS SI,DI或BX 数据段 SS SP或BP 堆栈段 段寄存器和其他寄存器组合指向存储单元示意图
代码段 数据段 堆栈段 C S I P D S SI,DI或BX S S SP或BP 段寄存器和其他寄存器组合指向存储单元示意图 归纳段寄存器和其他寄存器组合指向存储单元示意图如下: