Перевод из ASCII в шестнадцатеричную и обратно

Тема в разделе "WASM.BEGINNERS", создана пользователем winnix, 5 янв 2009.

  1. winnix

    winnix New Member

    Публикаций:
    0
    Регистрация:
    29 ноя 2008
    Сообщения:
    22
    Здравствуйте!

    Необходимо сделать перевод: есть пустой массив. Ввожу число в интерфейсе в десятичной форме и его необходимо записать в массив слов в шестнадцатеричной форме.Затем я этот массив обрабатываю и выводить на экран мне нужно тоже в десятичной форме.
    Не могу понять как все это сделать. Сделал ограничение вводимого до 5 символов. Но если ввести число больше 65535 уже будет не слово. Нужно как то все это ограничить. И проверить на корректность(это кажется понял)

    Подскажите как можно все это реализовать.
    Все нужно сделать на старом MASMe без while'ов и прочих сишных фишек.

    Заранее спасибо.
     
  2. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    http://msdn.microsoft.com/en-us/library/ms647550(VS.85).aspx
     
  3. winnix

    winnix New Member

    Публикаций:
    0
    Регистрация:
    29 ноя 2008
    Сообщения:
    22
    А это что?Не понял где там...
     
  4. Blackbeam

    Blackbeam New Member

    Публикаций:
    0
    Регистрация:
    28 дек 2008
    Сообщения:
    960
  5. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Что непонятно ? Тебе дали ссылку на функцию, которая делает то, что тебе нужно.
    Не нравится - пиши свой аналог.
     
  6. winnix

    winnix New Member

    Публикаций:
    0
    Регистрация:
    29 ноя 2008
    Сообщения:
    22
    Это на каком языке функция перевода то?
     
  7. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Неизвестно, может и на ассемблере. Надо у майкрософта спрашивать, на чем они ее написали.
    Это имеет значение ?
     
  8. winnix

    winnix New Member

    Публикаций:
    0
    Регистрация:
    29 ноя 2008
    Сообщения:
    22
    У меня MASM)Как я ее туда засуну то?
     
  9. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Ее не нужно никуда засовывать. Ее нужно вызывать, передав на вход параметры и получить на выходе результат.
     
  10. winnix

    winnix New Member

    Публикаций:
    0
    Регистрация:
    29 ноя 2008
    Сообщения:
    22
    Да нее....Мне нужен сам алгоритм...
     
  11. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Не думаю, что тебе тут бесплатно будут сочинять алгоритмы. Спроси в WASM.COMMERCE
     
  12. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    winnix, у меня есть готовая реализация. 15 WMZ. Если не хочешь платить, поиск по форуму
    Blackbeam, спасибо за идею ;)
     
  13. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    MSoft
    Не демпингуй !
     
  14. perez

    perez Member

    Публикаций:
    0
    Регистрация:
    25 апр 2005
    Сообщения:
    502
    Адрес:
    Moscow city
    winnix
    Проблема в чем? В незнании асма? Или думать разучились уже совсем?
    Это простецкая задачка для разминки мозгов для старших классов школы.
    Естественно, никто не будет писать готовое решение, просто не интересно. Не хочется думать - погугли. Перевод строки в число и обратно стандартная задача.
     
  15. Djinn

    Djinn New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    22
    А почему нельзя вызвать ф-ю то ? :) в чем проблема ? =\ хош узнать как ? спрашивай

    http://wasm.ru/forum/viewtopic.php?id=27414

    Поиск по форуму :)
     
  16. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Partner, :))) ну ладно, ладно, 20 WMZ (особенно учитывая, что доллар потихоньку начинает падать)
     
  17. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Из строки в регистр:
    Код (Text):
    1. INPUT="729"
    2.  
    3. Result = 0;
    4.  
    5. '7' -> 7 (SUB AL, '0')
    6. Result = Result*10 + 7 = 7
    7.  
    8. '2' -> 2
    9. Result = Result*10 + 2 = 72
    10.  
    11. '9' -> 9
    12. Result = Result*10 + 9 = 729
    13.  
    14. END
    Из регистра в строку:
    Код (Text):
    1. EAX = 6279
    2.  
    3. Set EDI = end of the result string buffer
    4.  
    5. EDX=0
    6. EDX:EAX DIV 10 -> EDX=9 and EAX=627
    7. ADD DL, '0'    -> DL='9'
    8. MOV [EDI], DL  -> store at the buffer end
    9. DEC EDI        -> move to the previous character in buffer
    10. if EAX is 0 then stop the loop
    11.  
    12. EDX=0
    13. EDX:EAX DIV 10 -> EDX=7 and EAX=62
    14. ADD DL, '0'    -> DL='7'
    15. MOV [EDI], DL  -> store at the buffer end
    16. DEC EDI        -> move to the previous character in buffer
    17. if EAX is 0 then stop the loop
    18.  
    19. EDX=0
    20. EDX:EAX DIV 10 -> EDX=2 and EAX=6
    21. ADD DL, '0'    -> DL='2'
    22. MOV [EDI], DL  -> store at the buffer end
    23. DEC EDI        -> move to the previous character in buffer
    24. if EAX is 0 then stop the loop
    25.  
    26. EDX=0
    27. EDX:EAX DIV 10 -> EDX=6 and EAX=0
    28. ADD DL, '0'    -> DL='6'
    29. MOV [EDI], DL  -> store at the buffer end
    30. DEC EDI        -> move to the previous character in buffer
    31. if EAX is 0 then stop the loop -> YES! EDI now points to output text.
     
  18. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    AsmGuru62, это называется недобросовестная конкуренция