Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2009, 01:46   #1
Beliuk
 
Регистрация: 02.11.2009
Сообщений: 3
По умолчанию Перевод символов в hex(ASCII table)

Помогите, пожалуйста, разобраться с этой программой. Т.е. она есть, но я как бэ в ассемблере совсем не шарю, к сожалению. пока, естественно. Вот. Задача состоит в том, чтобы она(программа) переводила каждый введённый символ в 16тиричное значение из таблицы ASCII. И мне нужно знать - какой принцип действует в данном случае - она берёт каждый символ отдельно и ищет его символьное соответствие в таблице ASCII и просто выписывает значение этого символа? Если нет, то как? Если возможно -напишите комментарии, как можно более раскрыто и доступно. Спасибо вам большое заранее ! Честно говоря не представляю на чём она была написана, но сам пользуюсь emu8086.

Код:
.model small 
.stack 100h 
.data 
input_msg db 'Vvedi chto-nibud:', 13, 10, '$' 
max_len_buf db 121 
len_buf db 0 
buf db 121 dup (0) 
output_msg db 'hex:', 13, 10 
outpString db 364 dup (' ') 
hex_table db '0123456789ABCDEF' 
.code 
start: 
mov ax, @data 
mov ds, ax 
xor ax, ax ;

call input
call convertString 
call output 

mov ah,8  
int 21h
mov ax,4c00h
int 21h 

input proc 
mov ah,9 
mov dx,offset input_msg
int 21h 
mov ah,0Ah
mov dx,offset max_len_buf 
int 21h 
mov ah,2 
mov dl,10 
int 21h 
ret ;
endp 

convertString proc 
xor di,di 
xor si,si 
mov bx,offset hex_table 
xor ch,ch 
mov cl,len_buf 
convertLoop: 
call convertByte 
loop convertLoop 
mov outpString [ di ] ,'$' 
ret 
endp 

convertByte proc 
mov ah,buf [ si ] 
mov al,ah 
shr al,4 
xlat 
mov outpString [ di ] , al 
inc di 
mov al,ah 
and al,0Fh 
xlat 
mov outpString [ di ] , al 
inc di 
inc di 
inc si 
ret 
endp                                                              

output proc 
mov dx,offset output_msg 
mov ah,9 
int 21h 
ret 
endp 

end start
Beliuk вне форума Ответить с цитированием
Старый 02.11.2009, 08:25   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

программа работает так, вводит строку input proc, затем разбирает строку по символам convertString proc, для каждого символа выводит его ASCII-код convertByte proc в строку outpString db (каджый символ это два 16-х числа, так что 8 бит делятся на 4 старших-1 число и 4 младших 2-е число, символы соответствующие цифрам берутся из таблицы hex_table db), затем процедура output proc выводит полученную строку
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод в HEX посредством javascript WennY JavaScript, Ajax 5 04.07.2009 23:32
Перевод BIN -> HEX Piar Помощь студентам 2 20.05.2009 15:44
Перевод из HEX в АСМ PaperPlane Софт 12 30.04.2009 03:05
Перевод кода символа в символ таблицы ASCII nerh Общие вопросы C/C++ 3 01.02.2008 20:34