Умножаю 2 числа алгоритмом Бута: Код (Text): W = 32 ; esi - множимое ; edx - множитель ; <edi:edx> - результат ubooth: mov ecx, W-1 xor edi, edi L1: bt edx, 0 jnc L2 add edi, esi L2: shrd edx, edi, 31 shr edi, 1 loop L1 ret Не могу въехать, в чём ошибка. Подскажите, пожалуйста.
На Itanium'е хорошо - там есть команда shrp. А на X86 запутался что-то в сдвигах. P.S. MUL не предлагать
Код (Text): W = 32 ; esi - множимое ; edx - множитель ; <edi:edx> - результат ubooth: mov ecx, W ; <--- xor edi, edi L1: bt edx, 0 jnc L2 add edi, esi L2: shrd edx, edi, 1 ; <--- shr edi, 1 loop L1 ret