Перевод 16-ричного кода в символ ASCII - Assembler
Формулировка задачи:
Здравствуйте!
Не могу разобраться с выводом символа аски: пользователь вводит в строку допустим: "41 20 42 61", а программа должна выводить: "A Ba" (здесь уже не нужны пробелы между символами), причем пользователь ввел "41", нажал пробел, и программа стразу в другой строке вывела "А" и так далее с каждым символом.
Пожалуйста, объясните как это можно реализовать в ассемблере
Вот кусочек моего кода (там примерный алгоритм, я думаю так должно работать):
mov ky1,13 mov ky2,13 ... ReadSymbolHex: mov ah,10h int 16h cmp cx,0 je NonDigitHex HEXsymbol: cmp al,32 je WriteSymbolHex cmp al,'0' jb NonDigitHex cmp al,'9' ja ReadSymbolHex WriteSymbolHex: mov [si],al mov ah,0Eh mov bh,0 int 10h inc si inc ky2 ; увеличиваем координату x во 2 строке, в которой и печатаем 16-ричные коды ; здесь проверяем нажал ли пользователь пробел, ; если да, значит выводим соответствующий коду символ ; в строку с координатами 8,ky1 ; увеличиваем координату ky1 на 1 gotoYX 11,ky2 loop ReadSymbolHex
Решение задачи: «Перевод 16-ричного кода в символ ASCII»
textual
Листинг программы
mov ah,1 int 21h and al,0fh mov bh,al int 21h and al,0fh mov bl,al shl bl,4 shr bx,4 xchg ax,bx int 29h
Объяснение кода листинга программы
- mov ah,1 - Переменная
ah
получает значение 1. - int 21h - Выполняется функция 21h (часто используется для вывода текста на экран).
- and al,0fh - Переменная
al
получает значение 0fh (всего 4 бита, от 0 до 0xf). - mov bh,al - Переменная
bh
получает значение переменнойal
. - int 21h - Выполняется функция 21h.
- and al,0fh - Переменная
al
получает значение 0fh. - mov bl,al - Переменная
bl
получает значение переменнойal
. - shl bl,4 - Сдвиг значения переменной
bl
на 4 бита вправо (на 4 позиции увеличивается значение). - shr bx,4 - Сдвиг значения регистра
bx
на 4 бита влево (на 4 позиции уменьшается значение). - xchg ax,bx - Обмен значений между регистрами
ax
иbx
. - int 29h - Выполняется функция 29h (часто используется для ввода символа с клавиатуры).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д