Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод HEX-слова в DEC ASCII и наоборот, Очень нужно... 
:(
    Опции темы
Ruterian
Дата 9.1.2004, 18:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Помогите пожалуйста написать компактный ASM код, который делает следующее:

1)

вход: слово (например 00С4)
выход: 3-х значный ASCII код, соответствующий цифре - 196 (31h, 39h, 36h) в памяти


2)
вход: в памяти 3-х значный ASCII (например 31h, 39h, 36h)
выход: HEX-значение (00C4)

и тоже самое для перевода 2-х значного HEX ASCII в байт.

Спасибо.
  Вверх
Chingachguk
Дата 9.1.2004, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Что-то типа этого ?

Цитата

;
; Enter: es:edi -> video page (text)
; ax = word to display
; Output: hex string on display, edi changed
;
HexWordStr proc near
  push  ax
  push  cx
  mov  cx,4
@@HexWordStrLoop:
  rol  ax,4
  push  ax
  and  al,0Fh
  cmp  al,10
  sbb  al,69h
  das
  mov  ah,14
  mov  word ptr es:[edi],ax
  add  edi,2
  pop  ax
  loop  @@HexWordStrLoop
  pop  cx
  pop  ax
  retn
HexWordStr endp



--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Ruterian
Дата 9.1.2004, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 9.1.2004
Где: Вязьма, Минск

Репутация: нет
Всего: нет



Chingachguk

Что-то у меня она неправильно конвертирует. Нужно хотя бы перевод 1-го байта (00-ff) в ASCII от "30,30,30" до "32,35,35". И, соответственно, обратный процесс :-)
PM MAIL WWW ICQ   Вверх
Gloomy
Дата 10.1.2004, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 7.10.2003
Где: England

Репутация: нет
Всего: 1



Ruterian
Конвертирование из строки в десятичное число и обратно. Для шестнадцатиричной системы исчисления допиши сам wink.gif

Код

str2dec proc arg:DWORD
      mov esi,arg
      xor edx,edx
@@:
      lodsb
      sub al,30h
      jb short @F
      cmp al,9
      ja short @F
lea edx,[edx+edx*4]
lea edx,[eax+edx*2]
jmp short @B
@@:
mov eax,edx
ret
str2dec endp  

dec2str proc arg: DWORD, buffer: DWORD
        mov eax,arg
        mov edi,buffer
push 10
pop ecx
push -'0'
   _l0_:
xor edx,edx
div ecx
push edx
test eax,eax
jnz _l0_
   _l1_:
pop eax
add al,'0'
stosb
jnz _l1_
ret
dec2str endp


Это сообщение отредактировал(а) Gloomy - 10.1.2004, 16:24
PM MAIL   Вверх
Chingachguk
Дата 10.1.2004, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Ruterian, вроде все работает. Если ax=0ABCDh, на выходе строка "ABCD":

Цитата

;
; Enter: es:di -> string for out (text)
; ax = word to format
; Output: hex string in es:di, di changed
;
HexWordStr proc near
  push  ax
  push  cx
  cld
  mov  cx,4
@@HexWordStrLoop:
  rol  ax,4
  push  ax
  and  al,0Fh
  cmp  al,10
  sbb  al,69h
  das
  stosb
  pop  ax
  loop  @@HexWordStrLoop
  pop  cx
  pop  ax
  retn
HexWordStr endp



--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
videns
Дата 11.5.2007, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 12.9.2006

Репутация: нет
Всего: нет



есть двойное слово, необходимо вывести его в десятичной форме. так как надо все делать в tasm, стандартый алгоритм делиния на 10 не получается, регистра eax нет ((
есть ли какой-либо алгоритм общий или готовый код? буду очень признателен.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0640 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.