.close, и если
[eax+ebx]
равен 31 в шестнадцатиричной системе то выполнялось jmp .one?
мой код:
strbin_to_dec:;(eax str, ebx len)
push ecx
push edx
xor edx, edx
xor ecx, ecx
.for:
cmp ebx, 0
jmp .close
cmp [eax+ebx], 31h
jmp .one
dec ebx
jmp .for
.close:
pop edx
pop ecx
ret ; eax dec
(fasm, 32-бит, линукс)
если EBX проверить раньше пихания в стек.. то можно сократить время исполнения
ну.. мне это сейчас не важно) мне для начала нужно чтобы хотябы заработало как надо😅
где тут .one
strbin_to_dec:;(eax str, ebx len) push ecx push edx xor edx, edx xor ecx, ecx .for: test ebx, ebx jz .close cmp byte[eax+ebx], 31h je .one dec ebx jmp .for .one:; <- тут push eax mov eax, 2 call pow add edx, eax pop eax .close: xchg eax, edx pop edx pop ecx ret ; eax dec
перед .close поставь jmp .for
strbin_to_dec:;(eax str, ebx len) push ecx push edx xor edx, edx xor ecx, ecx .for: test ebx, ebx jz .close cmp byte[eax+ebx], 31h je .one dec ebx jmp .for .one:; <- тут push eax mov eax, 2 call pow add edx, eax pop eax jmp .for; если так то получился бесконечный цикл .close: xchg eax, edx pop edx pop ecx ret ; eax dec
Обсуждают сегодня