无法在MASM中的条件跳转附近执行

时间:2014-06-25 20:23:34

标签: assembly x86 masm

请说明, 我整天都在靠墙打我的头: 这段代码有什么问题? Whu MASM出错了吗?

LookupLoop:
        and ecx, edx
        movzx   ecx, word ptr [edi + ecx*2]
        cmp ecx, ebp
        lea ebx, LeaveNowProxy
       js ebx ;;;This is it. Here it fails.
        jmp LeaveNowProxyEnd
 LeaveNowProxy:
        jmp LeaveNow
 LeaveNowProxyEnd:
 LoopEntry:  movzx   eax, word ptr [esi + ecx - 1]
         cmp eax, ebx

它说:> .... \ masmx86 \ match686.asm(357):错误A2077:指令不允许NEAR间接寻址。我试图lea注册然后传递寄存器,然后我做了这个代理跳转,然后我尝试了js cs:ebx sythax。 Everythime我几乎得到了错误。

2 个答案:

答案 0 :(得分:3)

我不相信支持基于寄存器的条件跳转。

相反,你可以尝试

  jns skip
  jmp ebx
skip:

答案 1 :(得分:3)

替换

lea ebx, LeaveNowProxy
js ebx

js LeaveNowProxy