Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Конвертировать число в ASCII


Автор: krasgames 2.6.2011, 17:32
На masm нужно получить ASCII код. Проблема в том, что я не знаю, где его смотреть. Ну и не очень до меня доходит, как получить именно ASCII. Дело в отображении, какая-то функция? Или как? В отладчике есть таблицы с ASCII отображением, но я не понял, как туда заносятся данные. Проконсультируйте кто-нибудьsmile Видел, что есть таблица кодов ASCII. Но с другой стороны, одноклассница сказала, что нужно делить число на 10, записывать остаток, получить массив, что-то прибавлять при этом, а в итоге где-то будет ASCII...

Автор: 500mhz 2.6.2011, 19:42
ну если числа от 0 до 9 то достаточно прибавить 0x30 и будет ascii

Автор: krasgames 2.6.2011, 20:10
А я пока сделал деление на 100 числа, получил в каждом элементе массива сразу 2 разряда, вывел их в стек и включил кодировку ASCII. Есть что-нибудь по интереснее? Ну или что сделать, чтобы более подходило к ТЗ? Там же какая-то "ASCII строка".

Автор: 500mhz 2.6.2011, 20:19
я не понял что ты хочеш тогда
напиши попонятней

Автор: krasgames 6.6.2011, 04:53
Да понял ты. Проблема в том, что я не знаю, что конкретно может требоваться сделать, но задание звучит примерно так, это с института: "преобразовать число в строку ASCII". Ну я пока не знаю, как сделать строку. А так да, есть число, я преобразовываю его в массив так, чтобы каждый элемент означал какой-то символ ASCII, а затем применяю кодировку ASCII в отладчике к каждому элементу.

Автор: Игорь1024 6.6.2011, 07:17
Код

;EAX - input; EBX - system (10|16 - any), EDI - result
NumToASCII:
        pushad
        xor esi,esi
 convert_loop:
        xor edx,edx
        div ebx

        call Hex_Digit
        push edx
        inc esi
        test eax,eax
        jnz convert_loop
        cld
 write_loop:
        pop eax
        stosb
        dec esi
        test esi,esi
        jnz write_loop
        mov byte [edi],0
        popad
        ret

Hex_Digit:
        cmp dl,10
        jb .less
        add dl,'A'-10
        ret
   .less:
        or dl,'0'
        ret

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)