Записать последовательность ASCII кодов его букв в ячейку памяти минимального размера - Assembler

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

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

Ребят нужна помошь есть вот такая задача "Дано слово из трех букв (например ФКН). С помощью битовых операций запишите последовательность ASCII кодов его букв в ячейку памяти минимального размера. Слово может быть и другим, программа должна его запрашивать. Запрашивать можно на языке высокого уровня." Нужно помочь с её решением, уже весь день убил, а продвигу 0, препод ничего тоже не объясняет дал тока срок, знаю точно что писать нужно в ассемблер в C++, учюсь блин 3 день, а уже такое. Помогите кто чем может новичку.

Решение задачи: «Записать последовательность ASCII кодов его букв в ячейку памяти минимального размера»

textual
Листинг программы
cld
mov si,offset Строка
xor dx,dx
mov сx,3
@@1:
push cx
mov cl,5
lodsb  ; al=ds:[si]
@@2:
shr al,1
rcr dx,1
loop @@2
pop cx
loop @@1
shr dx,1  ; 16-й бит
; результат в dx
; я думаю, вам вряд ли рассказывали про shrd, так что пусть так

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

  1. Установка регистра si на смещение строки.
  2. Очистка регистра dx.
  3. Запись значения 3 в регистр cx.
  4. Повторяющийся блок кода, который начинается с 16-й бит ASCII-кода и заканчивается после обработки всех 8 битов.
  5. Вычитание 1 из значения в регистре cx.
  6. Ввод значения 5 в регистр cl.
  7. Чтение байта из памяти по смещению, хранящемуся в регистре si, и сохранение его в регистре al.
  8. Удаление 1-го бита из значения в регистре al (shr al,1).
  9. Сдвиг значения в регистре dx на 1 позицию вправо (rcr dx,1).
  10. Повторение шагов 8 и 9 до тех пор, пока не будет выполнено 16 повторений.
  11. Вывод значения в регистре dx, представляющего собой 16-й бит ASCII-кода.
  12. Возврат значения в регистре dx к его начальному значению (shr dx,1).
  13. Результат сохраняется в регистре dx.

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

6   голосов , оценка 4 из 5
Похожие ответы