Поменять 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
Объяснение кода листинга программы
and dh, 01101101b
— обнуляем биты, что нужно менятьtest cl, 00100000b
— проверяем, что в регистре CL есть 5 битjz l1
— если в регистре CL есть 5 бит, то переходим к следующей инструкцииor dh, 00000010b
— меняем 1 бит в регистре DH на 1l1: test cl, 00000010b
— проверяем, что в регистре CL есть 1 битjz l2
— если в регистре CL есть 1 бит, то переходим к следующей инструкцииor dh, 10000000b
— меняем 1 бит в регистре DH на 1l2: and cl, 00010000b
— меняем 4 бита в регистре CL на 0or dh, cl
— копируем значение регистра CL в регистр DH- Результат — в регистре DH будут изменены 1, 4 и 7 биты, а остальные биты останутся без изменений