一.转移的目的地址在指令中的jmp指令 2.jmp near ptr 标号 3.jmp far ptr 标号 分析 上面三个指令的区别: 1>jmp short ptr 标号指令<=jmp near ptr 标号 指令<=jmp far prt 标号 指令 4>当标号和jmp far ptr 标号指令在同一段时,也可以使用jmp far ptr 标号 指令,此时在功能上 二.转移地址在寄存器中的jmp指令 三.转移地址在内存中的jmp指令 1.jmp word ptr 内存单元地址(段内转移)
例如,下面的指令: mov ax,0123H mov ds:[0],ax jmp word ptr ds:[0] 执行后,(IP)=0123H 2.jmp dword ptr 内存单元地址(段间转移)
例如,下面的指令: 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。 3.jcxz指令:有条件转移指令,所有的有条件转移指令都是短转移,在对应的机器码中包含转移的位移,而不是目的地址。对IP的修改范围都为:-128~127. 指令格式:jcxz 标号(如果(CX)=0,转移到标号处执行.) 用C++和汇编混合表示就是:if((cx)==0)jmp short 标号 4.loop指令:为循环指令,所有的循环指令都是短转移,在对应的机器码中包含转移的位移,而不是目的地址。对IP的修改范围都为:-128~127. 用C++和汇编混合表示就是:if((cx)<>0)jmp short 标号
jmp short 标号 jmp near ptr 标号 jcxz 标号 loop 标号 等几种汇编指令,它们对IP的修改是根据转移目的地址和转移起始地址之间的位移来进行的。在它们对应的机器码中不包含转移的目的地址,而包含的是到目的地址的位移。 |
汇编Jmp指令总结
最新推荐文章于 2024-08-13 22:59:49 发布