【第九章】转移指令的原理(2)

9.6 转移地址在内存中的jmp指令

转移地址在内存中的jmp指令有两种格式:

  1. jmp word ptr 内存单元地址(段内转移)

    功能:从内存单元地址处开始存放着一个字,是转移的目的偏移地址

    内存单元地址可用寻址方式的任一格式给出

    mov ax,0123H
    mov ds:[0],ax
    jmp word ptr ds:[0]
    

    执行后,(IP)=0123H

  2. jmp dword ptr 内存单元地址(段间转移)

    功能:从内存单元地址处开始存放着两个字,高地址处的字是转移的目的段地址,低地址是转移的目的偏移地址

    (CS)=(内存单元地址+2)

    (IP)=(内存单元地址)

    mov ax,0123H
    mov ds:[0],ax
    mov word ptr ds:[2],0
    jmp dword ptr ds:[0]
    

    执行后,(CS)=0,(IP)=0123H,CS:IP指向0000:0123

9.7 jcxz指令

jcxz指令为有条件转移指令,所有的有条件转移指令都是短转移,在对应的机器码种包含转移的位移,而不是目的地址。对IP地址的范围都是-128~127

指令格式:jcxz 标号(如果(cx)=0,转移到标号处执行)

9.8 loop指令

loop指令为循环指令,所有的循环指令都是短转移,在对应的机器码种包含转移的位移,而不是目的地址。对IP地址的范围都是-128~127

指令格式:loop 标号 ((cx)=(cx)-1),如果(cx)≠0,转移到标号处执行

操作:

  1. (cx)=(cx)-1
  2. 如果(cx)≠0,(IP)=(IP)+8位位移