Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 无法在MASM中执行近条件跳转_Assembly_X86_Masm - Fatal编程技术网

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

Assembly 无法在MASM中执行近条件跳转,assembly,x86,masm,Assembly,X86,Masm,请阿德比奇, 我整天把头撞在墙上: 这个代码有什么问题?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 LeaveN

请阿德比奇, 我整天把头撞在墙上: 这个代码有什么问题?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:指令不允许近间接寻址。我试着先注册然后通过注册,然后我做了这个代理跳转,然后我试着js-cs:ebx-sythax。每次我几乎都会收到smae错误。

我不认为支持基于寄存器的条件跳转

相反,你可以试试看

  jns skip
  jmp ebx
skip:

我认为不支持基于寄存器的条件跳转

相反,你可以试试看

  jns skip
  jmp ebx
skip:
替换

lea ebx, LeaveNowProxy
js ebx

替换

lea ebx, LeaveNowProxy
js ebx


同样的效果
LookupLoop:and ecx,edx movzx ecx,word ptr[edi+ecx*2]cmp ecx,ebp jns dontleavenowproxyend jmp LoopEntry dontleavenowproxyend:jmp LeaveNow LoopEntry:movzx eax,word ptr[esi+ecx-1]cmp eax,ebx jnz short LookupLoop mov eax,[窗口]movzx-eax,单词ptr[eax+ecx]cmp-eax[scanstart]jnz-short-LookupLoop;;;存储chainlen的当前值。mov[chainlenwmask],edx
嘿,巴德,我几乎按照你建议的方式重新制作了跳线——这些错误已经消失了。10x.同样的效果
LookupLoop:and ecx,edx movzx ecx,word ptr[edi+ecx*2]cmp ecx,ebp jns dontleaveNowProxyend jmp LoopEntry dontleaveNowProxyend:jmp LeaveNow LoopEntry:movzx eax,word ptr[esi+ecx-1]cmp eax,ebx jnz short LookupLoop mov eax,[窗口]movzx-eax,单词ptr[eax+ecx]cmp-eax[scanstart]jnz-short-LookupLoop;;;存储chainlen的当前值。mov[chainlenwmask],edx
嘿,巴德,我几乎按照你建议的方式重新制作了跳线——这些错误已经消失了。10倍。