|
|
| Посл.отвђт | Сообщен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 |