перевод в ASCII

Тема в разделе "WASM.BEGINNERS", создана пользователем x_mih, 22 ноя 2007.

  1. x_mih

    x_mih New Member

    Публикаций:
    0
    Регистрация:
    22 ноя 2007
    Сообщения:
    3
    Помогите пожалуйста перевести число в ASCII для последующего вывода MessageBox'ом.
    Число находится в FPU ST(0) в виде 21713717, его и надо перевести в символы ASCII. Еще оно дублируется в стеке в HEX (014B5335).

    пытаюсь использовать следующий код

    Код (Text):
    1. ;*******************************************************
    2. ;* ПЕРЕВОД ЧИСЛА ИЗ ШЕСТНАДЦАТЕРИЧНОГО КОДА В ДВОИЧНЫЙ *
    3. ;* DS:SI - число в коде ASCII.                         *
    4. ;* Результат возвращается в EAX.                       *
    5. ;*******************************************************
    6. PROC HexToBin32 near
    7.         push    EBX
    8.         push    CX
    9.         push    SI
    10.         cld
    11.         xor     EBX,EBX ;обнуляем накопитель
    12.         xor     CX,CX   ;обнуляем счетчик цифр
    13. @@h0:   lodsb
    14.         ; Проверка на ноль (признак конца строки)
    15.         and     AL,AL
    16.         jz      @@h4
    17.         ; Проверка на диапазон '0'-'9'
    18.         cmp     AL,'0'  
    19.         jb      @@Error
    20.         cmp     AL,'9'  
    21.         ja      @@h1
    22.         sub     AL,'0'
    23.         jmp short @@h3
    24. @@h1:   ; Проверка на диапазон 'A'-'F'
    25.         cmp     AL,'A'  
    26.         jb      @@Error
    27.         cmp     AL,'F'  
    28.         ja      @@h2
    29.         sub     AL,'A'-10
    30.         jmp short @@h3
    31. @@h2:   ; Проверка на диапазон 'a'-'f'
    32.         cmp     AL,'a'  
    33.         jb      @@Error
    34.         cmp     AL,'f'  
    35.         ja      @@Error
    36.         sub     AL,'a'-10
    37. @@h3:   ; Дописать к результату
    38.         ; очередные 4 разряда справа
    39.         shl     EBX,4
    40.         or      BL,AL
    41.         inc     CX
    42.         cmp     CX,8
    43.         jbe     @@h0
    44.         ; Если в числе больше 8 цифр - ошибка
    45.         jmp short @@Error
    46. @@h4:   ; Успешное завершение - результат в EAX
    47.         mov     EAX,EBX
    48.         jmp short @@End
    49. @@Error:; Ошибка - обнулить результат
    50.         xor     EAX,EAX
    51. @@End:  pop     SI
    52.         pop     CX
    53.         pop     EBX
    54.         ret
    возникают вопросы
    cmp AL,'A'
    сравнение происходит не с A , а с 41 (так и должно быть?)
    ну и после этого сравнения происходит jb на ошибку
     
  2. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    по сайту рулит поиск.
     
  3. x_mih

    x_mih New Member

    Публикаций:
    0
    Регистрация:
    22 ноя 2007
    Сообщения:
    3
    поиск то рулит, нашел несколько вариантов, но не хватает знаний для реализации.

    скажите, с помощью примера который я привел вообще возможно решить эту задачу, или я не в том направлении смотрю?
     
  4. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    x_mih
    Держи, двоешник! В аттаче сорц и ехе
     
  5. x_mih

    x_mih New Member

    Публикаций:
    0
    Регистрация:
    22 ноя 2007
    Сообщения:
    3
    Спасибо большое, буду разбираться и учить мат. часть. :)