汇编语言中短转移指令jmp short指令偏移地址计算
汇编语言中,jmp short指令是8位转移指令,可以修改ip寄存器的范围为-128~127 (8位补码的表示范围,因为偏移地址计算使用的是补码) 短转移指令的机器码格式为EB??,其中??表示8位偏移地址,接下来研究??的计算方法。 一、公式介绍 要计算jmp short的偏移地址,我们要记住公式: 偏移地址=标记处的偏移地址-CPU读完该jmp指令后的ip寄存器值 二、方法步骤 1.后跳转 我们引入MASM中的代码片段 DATAS SEGMENT DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX jmp short s mov ax,1000H mov ax,1000H mov ax,1000H s:mov bx,ax MOV AH,4CH INT 21H CODES ENDS END START s位于jmp指令的后面。 编译后进行debug,使用u指令查看汇编指令,如下图: 可以看到标记s处的偏移地址为0010H,CPU读取完jmp指令后ip指向了0007H,找到了这两个关键数据后套用公式:偏移地址=标记地址-ip地址,即0010H-0007H。 在计算机中,减法运算是转换成加法进行,即-x转化成+(x)补,需要将减号后面的数字转换成补码: