Перевод 16-ричного кода в символ ASCII - Assembler

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Не могу разобраться с выводом символа аски: пользователь вводит в строку допустим: "41 20 42 61", а программа должна выводить: "A Ba" (здесь уже не нужны пробелы между символами), причем пользователь ввел "41", нажал пробел, и программа стразу в другой строке вывела "А" и так далее с каждым символом. Пожалуйста, объясните как это можно реализовать в ассемблере Вот кусочек моего кода (там примерный алгоритм, я думаю так должно работать):
Листинг программы
  1. mov ky1,13
  2. mov ky2,13
  3. ...
  4. ReadSymbolHex:
  5. mov ah,10h
  6. int 16h
  7. cmp cx,0
  8. je NonDigitHex
  9. HEXsymbol:
  10. cmp al,32
  11. je WriteSymbolHex
  12. cmp al,'0'
  13. jb NonDigitHex
  14. cmp al,'9'
  15. ja ReadSymbolHex
  16. WriteSymbolHex:
  17. mov [si],al
  18. mov ah,0Eh
  19. mov bh,0
  20. int 10h
  21. inc si
  22. inc ky2 ; увеличиваем координату x во 2 строке, в которой и печатаем 16-ричные коды
  23. ; здесь проверяем нажал ли пользователь пробел,
  24. ; если да, значит выводим соответствующий коду символ
  25. ; в строку с координатами 8,ky1
  26. ; увеличиваем координату ky1 на 1
  27. gotoYX 11,ky2
  28. loop ReadSymbolHex

Решение задачи: «Перевод 16-ричного кода в символ ASCII»

textual
Листинг программы
  1.      mov   ah,1
  2.      int   21h
  3.      and   al,0fh
  4.      mov   bh,al
  5.      int   21h
  6.      and   al,0fh
  7.      mov   bl,al
  8.      shl   bl,4
  9.      shr   bx,4
  10.      xchg  ax,bx
  11.      int   29h

Объяснение кода листинга программы

  1. mov ah,1 - Переменная ah получает значение 1.
  2. int 21h - Выполняется функция 21h (часто используется для вывода текста на экран).
  3. and al,0fh - Переменная al получает значение 0fh (всего 4 бита, от 0 до 0xf).
  4. mov bh,al - Переменная bh получает значение переменной al.
  5. int 21h - Выполняется функция 21h.
  6. and al,0fh - Переменная al получает значение 0fh.
  7. mov bl,al - Переменная bl получает значение переменной al.
  8. shl bl,4 - Сдвиг значения переменной bl на 4 бита вправо (на 4 позиции увеличивается значение).
  9. shr bx,4 - Сдвиг значения регистра bx на 4 бита влево (на 4 позиции уменьшается значение).
  10. xchg ax,bx - Обмен значений между регистрами ax и bx.
  11. int 29h - Выполняется функция 29h (часто используется для ввода символа с клавиатуры).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы