第2章 目标地址的范围:段间 IMP >段间转移——远转移(far) 从当前代码段跳转到另一个 代码段,可以在1MB范围 代码段 ■需要更改cS段地址和P偏移 实际编程时,汇编程序会根据目标地址的距离, 自动处理成短转移、近转移或远转移 程序员可用操作符shr、 near ptr或 ifar ptr强制」 航是逻辑地址
目标地址的范围:段间 ➢段间转移——远转移(far) ◼从当前代码段跳转到另一个 代码段,可以在1MB范围 ◼需要更改CS段地址和IP偏移 地址 ◼目标地址必须用一个32位数 表达,叫做32位远指针,它 就是逻辑地址 第 2 章 代 码 段 代 码 段 实际编程时,汇编程序会根据目标地址的距离, 自动处理成短转移、近转移或远转移 程序员可用操作符short、near ptr 或far ptr 强制 JMP
第2章 段内转移、直实际为相对寻址 JMP label ;IP←IP+位移量 位移量是紧接着JMP指令后的那条指令的偏移地址, 到目标指令的偏移地址的地址位移 当向地址增大方向转移时,位移量为正;向地址减 小方向转移时,位移量为负 Jmp again ;转移到 again处继续执行 again: dec cx ;标号 again的指令 jmp output;转向 output output: moy result,al;标号 output的指令
段内转移、直接寻址 JMP JMP label ;IP←IP+位移量 ➢ 位移量是紧接着JMP指令后的那条指令的偏移地址, 到目标指令的偏移地址的地址位移 ➢ 当向地址增大方向转移时,位移量为正;向地址减 小方向转移时,位移量为负 jmp again ;转移到again处继续执行 …… again: dec cx ;标号again的指令 …… jmp output ;转向output …… output: mov result,al ;标号output的指令 第 2 章 实际为相对寻址
第2章 段内转移、间接寻址Mp JMP r16/ m16 IP←r16/m16 >将一个16位寄存器或主存字单元内容送入IP 寄存器,作为新的指令指针,但不修改CS寄存 器的内容 Jmp ax ;IP←AX jmp word ptr [2000h] IP+[2000h ⊙E
段内转移、间接寻址 JMP r16/m16 ;IP←r16/m16 ➢ 将一个16位寄存器或主存字单元内容送入IP 寄存器,作为新的指令指针,但不修改CS寄存 器的内容 jmp ax ;IP←AX jmp word ptr [2000h] ;IP←[2000h] 第 2 章 JMP
第2章 段间转移、直接寻址Mp JMP far ptr label ;IP←1abe1的偏移地址 ;CS←1abe1的段地址 >将标号所在段的段地址作为新的cS值, 标号在该段内的偏移地址作为新的P值;这 样,程序跳转到新的代码段执行 jmp far ptr otherseg ;远转移到代码段2的 others
段间转移、直接寻址 JMP far ptr label ;IP←label的偏移地址 ;CS←label的段地址 ➢ 将标号所在段的段地址作为新的CS值, 标号在该段内的偏移地址作为新的IP值;这 样,程序跳转到新的代码段执行 jmp far ptr otherseg ;远转移到代码段2的otherseg 第 2 章 JMP
第2章 段间转移、间接寻址Mp JMP far ptr mem ;IP←[mem],CS←[mem+2] >用一个双字存储单元表示要跳转的目标地 址。这个目标地址存放在主存中连续的两个 字单元中的,低位字送IP寄存器,高位字送 CS寄存器 mov word ptr [bx], 0 mov word ptr [bx+2, 1500h JMP far ptr[bx];转移到1500h:0
段间转移、间接寻址 JMP far ptr mem ;IP←[mem],CS←[mem+2] ➢ 用一个双字存储单元表示要跳转的目标地 址。这个目标地址存放在主存中连续的两个 字单元中的,低位字送IP寄存器,高位字送 CS寄存器 mov word ptr [bx],0 mov word ptr [bx+2],1500h JMP far ptr [bx] ;转移到1500h:0 第 2 章 JMP