Привет всем! Подкиньте пожалуйста процедурку для перевода HEX строки в переменную DWord. К примеру так: hex2dw proc szHexstr На вход - ссылка на строковый буфер(фиксированного размера=8 байт) hex-строчки, на выходе в EAX десятичное ее значение. В общем-то я и сам это сделал, но сечас смеяться будете долго Для этого мне понадобилось: Процедурка умножения (Множимое, множитель) Код (Text): Mult Proc DW_Mult:DWord, DW_Size:DWord Local var1:DWORD Fild DW_Mult Fild DW_Size Fmul Fistp var1 Mov eax, var1 Ret Mult EndP Процедурка возведения в степень (Число, Показатель степени) Код (Text): Step Proc DW_Step:DWord, DW_Size:DWord Local DW_Temp:DWord Pusha Cmp DW_Size, 0 Je Step_Zero Cmp DW_Size, 1 Je Step_None Mov EAX, DW_Step Mov ECX, 1 Mov DW_Temp, EAX Step_Loop: Invoke Mult, DW_Temp, DW_Step Mov DW_Temp, EAX Inc ECX Cmp ECX, DW_Size Jne Step_Loop Popa Mov EAX, DW_Temp Ret Step_None: Mov EAX, DW_Step Ret Step_Zero: Mov EAX, 1 Ret Step EndP Процедурка...хм...Ну это тоже нужная такая процедурка, она из ASC символа значение A,B,C,D,E,F приравниет к реальным ну и цифры ессно ) Код (Text): Hexb Proc BT_Hexb:Byte Xor EAX, EAX Mov AL, BT_Hexb .If AL > 57 Sub AL, 55 .Else Sub AL, 48 .EndIf Ret 4 Hexb EndP И, наконец, о чудо! Процедура мега-мозг, которая всем этим заправляет и конвертирует из HEX в DWORD! Код (Text): Hexd Proc DW_Text:DWord Local DW_Hexd:DWord Local DW_Temp:DWord Local DW_Retn:DWord Pusha Mov EDX, DW_Text Xor ECX, ECX Hexd_Loop: Mov AL, [EDX + ECX] Cmp ECX, 8 Je Hexd_Exit Invoke Hexb, AL Mov DW_Hexd, EAX Mov EBX, 7 Sub EBX, ECX Invoke Step, 16, EBX Mov DW_Temp, EAX Invoke Mult, DW_Hexd, DW_Temp Add DW_Retn, EAX Inc ECX Jmp Hexd_Loop Hexd_Exit: Popa Mov EAX, DW_Retn Ret Hexd EndP Да, это все работает. Медленно правда Очень хотелось бы увидеть как правильно и компактно преобразовать HEX значение в число DWord. Спасибо за внимание