Перевод 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 (часто используется для ввода символа с клавиатуры).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д