String to dword

Тема в разделе "WASM.BEGINNERS", создана пользователем maestro-ant, 28 окт 2006.

  1. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    Альтернатива масмовской функции atodw на fasm.
    Поиском подходящего ничего не нашел...
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Код (Text):
    1. proc atodw, String:DWORD
    2.  
    3.   ; ----------------------------------------
    4.   ; Convert decimal string into dword value
    5.   ; return value in eax
    6.   ; ----------------------------------------
    7.  
    8.     push esi
    9.     push edi
    10.  
    11.     xor eax, eax
    12.     mov esi, [String]
    13.     xor ecx, ecx
    14.     xor edx, edx
    15.     mov al, [esi]
    16.     inc esi
    17.     cmp al, 2D
    18.     jne proceed
    19.     mov al, byte [esi]
    20.     not edx
    21.     inc esi
    22.     jmp proceed
    23.  
    24.   @@:
    25.     sub al, 30h
    26.     lea ecx, dword [ecx+4*ecx]
    27.     lea ecx, dword [eax+2*ecx]
    28.     mov al, byte [esi]
    29.     inc esi
    30.  
    31.   proceed:
    32.     or al, al
    33.     jne @B
    34.     lea eax, dword [edx+ecx]
    35.     xor eax, edx
    36.  
    37.     pop edi
    38.     pop esi
    39.  
    40.     ret
    41.  
    42. endp