汇编语言:JMP指令的疑问

2024-12-28 01:32:07
推荐回答(5个)
回答1:

指令 jmp near ptr 标号
汇编时用标号处地址减去当前IP(jmp指令的下一条指令的地址)得到一个16位的偏移量(补码表示)作为jmp指令的操作数,执行时将该16位的偏移量加到当前IP中去便是转移的目标地址的偏移量。
指令 jmp short 标号
汇编时用标号处地址减去当前IP(jmp指令的下一条指令的地址)得到一个8位的偏移量(补码表示)作为jmp指令的操作数,执行时将该8位的偏移量加到当前IP中去便是转移的目标地址的偏移量。

回答2:

答案是否定的

这两种情况都是把标号地址送ip,
编译器把这个标号地址转换为一个偏移量,机器指令中不存储标号地址,而是存储偏移量,
指令执行时,再使用这个偏移量得到目标地址,你所描述的是这个过程

其实,主要的误区在于没有理解汇编指令与机器指令的关系

回答3:

指令 jmp near ptr 标号的意思是段内直接近转移指令,是在cs内跳转,新的IP=当前IP+偏移量,其中当前IP是“jmp near ptr 标号”这条指令的下一条指令的首地址,偏移量在该指令的操作数中。

回答4:

ptr的作用就是临时指定类型。

jmp near ptr
是无条件转移指令,转移到段内的标号所标识的位置(近类型)
若是jmp far ptr
那就是转移到另外一个代码段所标识的位置了(远类型)

回答5:

这条指令的意思是取标号的地址然后加上16位的位移量所得到的是跳转的地址