Снова про строки

Тема в разделе "WASM.BEGINNERS", создана пользователем ActioN, 3 сен 2005.

  1. ActioN

    ActioN New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    160
    Адрес:
    Ukraine
    В строке, объявленной как db содержится число. Как можно его переконвертировать в тип dd?
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    atoi, atol.



    Ищем, господа, ищем.
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    И не забываем давать темам нормальные названия.
     
  4. ActioN

    ActioN New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    160
    Адрес:
    Ukraine
    IceStudent, ок возьму во внимание(про название). Но обычно я даю темам нормальные названия, а тут так получилось...
     
  5. ActioN

    ActioN New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    160
    Адрес:
    Ukraine
    Спасибо за команды, нашел хорошее описание, но странно что ни в одном include-файле этой команды нету, и ни в одном example идущих к masm32. Можно пример использования?
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    masn32\m32lib
     
  7. ActioN

    ActioN New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    160
    Адрес:
    Ukraine
    Atol.asm есть, а Atoi.asm нету:dntknw:.

    Можете приаттачить пожалуйста.
     
  8. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Ох.. atoi — это функция в msvcrt, её можно звать из msvcrtX.dll. Там ещё много всяких полезностей.



    Ты гуглить пробовал? MSDN штука хорошая.
     
  9. ActioN

    ActioN New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    160
    Адрес:
    Ukraine
    Конечно смотрил в MSDN - там хорошее описание, только что мне с этой, например, msvcrt40.dll делать? Извлекать каким-то образом оттудова? Или я что-то нетак делаю, или даже гугл не нашел примеров использования:

    Результаты 1 - 10 из примерно 124 для atoi masm32 example

    Неужели так редко с этим сталкиваются в повседневной жизни. Я нашел альтернативный вариант, но он тянет разве что на оценку 3 по скорости выполнения. Вобщем берется окно Edit'a, вставляется туда текст, а потом через GetDlgItemInt^)). Можете объяснить мне как новичку, что нужно сделать с этой msvcrtX.dll для получения результата?

    Atol несовсем подходит, т.к. там при конвертации чисел от 0 до 500 и от 9000 и больше возникают пробемы...
     
  10. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
  11. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    ActioN

    msvcrt.dll - это динамическая библиотека и можно вызывать функции из неё как и из других библиотек (kernel32, user32).



    Фасм?
    Код (Text):
    1.  
    2. format PE GUI
    3. entry start
    4.  
    5. section '.code' readable writeable executable
    6. var  db 0
    7. sz12 db '12',0
    8.  
    9. start:
    10.   push  sz12
    11.   call  [atoi]
    12.   add   esp,4   ; <-- функция atoi имеет соглашение cdecl.
    13.   ; можно проще: cinvoke  atoi,sz12
    14.   mov   [var],al
    15.   ret
    16. ...
    17. data import
    18.   library msvcrt,'msvcrt.dll'
    19.  
    20.   import msvcrt,\
    21.            atoi,'atoi'
    22. end data
    23.  




    масм:
    Код (Text):
    1.  
    2. includelib msvcrt.lib ; подключаем библиотеку msvcrt.dll
    3.  
    4. atoi  PROTO C :DWORD  ; описываем прототип функции (int __ cdecl atoi(char* string);
    5.  
    6. start:
    7.   invoke atoi,sz12    ; invoke по прототипу сама разберётся, какое соглашение
    8.    mov  val,al
    9.   ret
    10.  
     
  12. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    IceStudent

    А почему msvcrt ?

    atoi\atol и "ещё много всяких полезностей" присутствуют и в ntdll и реализованы они там попроще, чем в msvcrt - по крайней мере в XP SP2
     
  13. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    leo

    Потому что ntdll нет в 9х.
     
  14. ActioN

    ActioN New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    160
    Адрес:
    Ukraine
    cresta, IceStudent, спасибо, буду пробовать.
     
  15. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    ActioN

    > "Atol.asm есть, а Atoi.asm нету:dntknw:"

    Похоже для 32-бит ее просто нет в природе, точнее сказать atoi = atol. В тех же msvcrt и ntdll atoi просто вызывает atol

    А вот почему у тебя atol из m32lib глючит непонятно, вроде стандартная реализация...



    IceStudent

    А ты видел реализацию atol в msvcrt ? Вроде вещь-то элементарная, а там такие дебри наворочены - про скорость можно сразу забыть, хотя для edit'а она может и никчему...

    PS: В 98SE ntdll есть, но куцая ~20кб и конечно без atol :dntknw: