Поменять 1, 4 и 7 биты регистра DH на 5, 4 и 1 биты регистра CL соответственно - Assembler

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

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

Ребята! Понимаю, что может быть пишу ерунду! Только вышла из декретного отпуска, и по правде говоря хреноватенько что-то помню! Нужно написать программу: Поменять 1,4 и 7 биты регистра DH на 5,4 и 1 биты регистра CL соответственно. Работа на общий случай, т.е. не с конкретным числом, а с возможностью после написания программы в процессе исполнения ее записать любое выдуманное значение! Помогите если кто может)))

Решение задачи: «Поменять 1, 4 и 7 биты регистра DH на 5, 4 и 1 биты регистра CL соответственно»

textual
Листинг программы
and dh, 01101101b ; обнуляем биты, что нужно менять
test cl, 00100000b ; 5 бит
jz l1
or dh, 00000010b
l1: test cl, 00000010b ; 1 бит
jz l2
or dh, 10000000b
l2: and cl, 00010000b ; 4 бит, CL мы испортим
or dh, cl

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

  1. and dh, 01101101b — обнуляем биты, что нужно менять
  2. test cl, 00100000b — проверяем, что в регистре CL есть 5 бит
  3. jz l1 — если в регистре CL есть 5 бит, то переходим к следующей инструкции
  4. or dh, 00000010b — меняем 1 бит в регистре DH на 1
  5. l1: test cl, 00000010b — проверяем, что в регистре CL есть 1 бит
  6. jz l2 — если в регистре CL есть 1 бит, то переходим к следующей инструкции
  7. or dh, 10000000b — меняем 1 бит в регистре DH на 1
  8. l2: and cl, 00010000b — меняем 4 бита в регистре CL на 0
  9. or dh, cl — копируем значение регистра CL в регистр DH
  10. Результат — в регистре DH будут изменены 1, 4 и 7 биты, а остальные биты останутся без изменений

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

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