· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.A&O —› Перевод символа-Hex-цифры в число.

Посл.отвђт Сообщенiе


Дата: Июл 9, 2004 11:28:12

Привет всем воинам Дзена.
Прошу прощения за корявое название темы.

Давно у меня назревала мысль, что быстрый перевод шестнацеричной цифры в её строковое представление можно обратить.

(Речть идёт о следующих строчках кода:
; AL <- hex-цифра (0..F)
      cmp  al, 0Ah
      sbb  al, 69h
      das
; AL = символьное представление цифры ('0'..'9', 'A'..'F')
)

Мои потуги найти обратный процесс привели к следующим вариантам:
Вариант 1(самый элементарный):
; AL <- символьное представление hex-цифры.
        sub al, 41h ;3
        jns skip    ;2
        add al, 07h ;2 
skip:
        add al, 0Ah ;2
        ;and al, 0Fh ;2 - раскомментировать, для игнорирования регистра букв
; AL = цифра (0..F)

Вариант 2:
; AL <- символьное представление hex-цифры.
        cmp al, 3Ah  ;2
        adc al, 69h  ;2
        cmp al, 0AAh ;2
        jnb l0       ;2
        daa          ;1
l0:
        and al, 0Fh  ;2
; AL = цифра (0..F)

Вариант 3:
; AL <- символьное представление hex-цифры.
        mov ah, 0
        sub eax, 40h ;3
        das          ;1
        adc al, -7h  ;2
        aad          ;2
        and al, 0Fh  ;2
; AL = цифра (0..F)


Все три варианта мне не нравятся по разным причинам:
- первый и второй используют условные переходы.
- третий разрушает информацию в еах и требует обнуления регистра ah

Может, кто-нибудь знает алгоритм такого рода, чтобы без условных переходов был и использовал только регистр AL?

ЗЫ: в коде подразумевается использование защищённого режима процессора.


Дата: Июл 9, 2004 11:38:38

ЗЫЫ:
Второй и третий алгоритм не чувствительны к регистру букв.


Дата: Июл 9, 2004 12:04:41
Правка

xBlackCat
[offtop]
Давно тебя не было :)

Ты ещё в Симферополе? Сегодня приезжает сюда [censored], если интересно - дай мыло, сообщу подробности…


Дата: Июл 9, 2004 12:10:03

IceStudent
[Offtop]
<мой ник>УmailТОЧКАru - это чтобы автоспамер не понял :)
Интересно же, кто приезжает :)


Дата: Июл 9, 2004 12:29:02
Правка

xBlackCat
Проверь почту…


Дата: Июл 9, 2004 17:31:16

А как насчёт XLAT?


Дата: Июл 9, 2004 17:41:46

Хмм... вероятно я не корректно выразился. Под алгоритмами "такого рода" я подразумевал не использование таблицы перехода, а преобразование с помощью логико-математических операций.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.083