Как конвертировать dword в строку?

Тема в разделе "WASM.BEGINNERS", создана пользователем TOLSTOPUZ, 18 ноя 2008.

  1. TOLSTOPUZ

    TOLSTOPUZ New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2008
    Сообщения:
    509
    Как конвертировать dword с хекс-числом в десятичную строку?

    например:

    .data?
    buf dd ?

    .code
    mov eax , 1000
    mov buf , eax

    invoke MessageBox , 0 , addr buf , addr buf , 0

    Мессага выводит таинственные иероглифы...
    А надо бы - 1000...
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    TOLSTOPUZ
    user32!wsprintf, masm32!dwtoa
     
  3. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    push 'ul%'
    push 1000
    mov eax, esp
    add eax, 4
    push eax
    push offset buf
    call wsprintf
    add esp, 16
    invoke MessageBox , 0 , addr buf , addr buf , 0
     
  4. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Создаёшь таблицу значений от '0' до 'F'

    Затем примерно так
    Код (Text):
    1. mov ebx,str
    2. mov cx,8 ;в DWORD`е 8 тетрад
    3. conv:
    4. rol   eax,4
    5. mov edx,eax
    6. and  edx,15 ;получаем очередную тетраду
    7. mov dl,[table+edx] ;Конвертируем в hex
    8. mov [ebx],dl ;записываем в строку
    9. inc  ebx
    10. loop conv
    11. mov [ebx],cl;завершающий ноль
    Думаю смысл понятен. Код не проверял:)

    Правка:
    В десятичную - вот http://www.wasm.ru/forum/viewtopic.php?id=28092
     
  5. low_coder

    low_coder New Member

    Публикаций:
    0
    Регистрация:
    18 ноя 2008
    Сообщения:
    5
    Код (Text):
    1.     .386
    2.     .model flat,stdcall
    3.     option casemap:none
    4.    
    5.     include \masm32\include\windows.inc
    6.     include \masm32\include\user32.inc
    7.     include \masm32\include\kernel32.inc
    8.     include \masm32\include\masm32.inc
    9.    
    10.     includelib \masm32\lib\user32.lib
    11.     includelib \masm32\lib\kernel32.lib
    12.     includelib \masm32\lib\masm32.lib
    13.  
    14. .data?
    15.     str1        db  10 dup(?)
    16. .code
    17. start:
    18.     mov eax, 1000
    19.     invoke dwtoa, eax, ADDR str1
    20.     invoke MessageBox, NULL, ADDR str1, ADDR str1, MB_OK
    21.     invoke ExitProcess, NULL
    22. end start
     
  6. Leonov

    Leonov Николай

    Публикаций:
    0
    Регистрация:
    14 ноя 2008
    Сообщения:
    14
    Адрес:
    Астрахань
    Код (Text):
    1.  lea edi,buffer
    2.     mov eax,1000        ;число для конвертации
    3.     mov ebx,10
    4. Next:
    5.     xor edx,edx
    6.     div ebx
    7.     or edx,30h
    8.     mov byte ptr [edi],dl  
    9.     cmp eax,10
    10.     jl Complete
    11.     inc edi
    12.     jmp Next
    13. Complete:
    14.     or eax,30h
    15.     inc edi
    16.     mov byte ptr [edi],al
    только потом надо зделать реверс строки находящейся в buffer. пример рабочий
     
  7. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628