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