Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС 2017
выпущен 15 марта!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Преобразование двоичного числа в десятичное

В мире 10 категорий людей - те, которые понимают двоичную систему счисления, и те, которые ее не понимают.


 /////////////////////////////////////////////////////////////////////////
 // преобразование 32-битного base2 в 32-битный base10                  //
 // максимальное число = 99 999 999, возвращает -1 при большем значении //
 /////////////////////////////////////////////////////////////////////////
 
 function Base10(Base2:Integer) : Integer; assembler;
 asm
 
 cmp        eax,100000000        // проверка максимального значения
 jb         @1                   // значение в пределах допустимого
 mov        eax,-1               // флаг ошибки
 jmp        @exit                // выход если -1
 @1:
 
 push       ebx                  // сохранение регистров
 push       esi
 xor        esi,esi              // результат = 0
 mov        ebx,10               // вычисление десятичного логарифма
 mov        ecx,8                // преобразование по формуле 10^8-1
 @2:
 
 mov        edx,0                // удаление разницы
 div        ebx                  // eax - целочисленное деление на 10, edx - остаток от деления на 10
 add        esi,edx              // результат = результат + разность[I]
 ror        esi,4                // перемещение разряда
 loop       @2                   // цикл для всех 8 разрядов
 mov        eax,esi              // результат функции
 pop        esi                  // восстанавление регистров
 pop        ebx
 @exit:
 end;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS