Работа с битами и условиями (как мне кажется задача несложная) - Assembler
Формулировка задачи:
доброго времени суток. есть задача которую, как это нагло не звучит, нужно решить до утра. Как ни прискорбно я сам в Ассемблере почти не смыслю.
Ввести последовательно два символа. Если четвертый и пятый биты соответственно первого и второго введённых символов равны нулю, то сформировать байт (записать его в память), в котором первую пару битов составляют два первых бита первого символа, а следующую пару битов - первые два бита второго символа. Третью пару битов, формируемого символа, составляет вторая пара битов первого символа, а четвёртая пара битов формируется из второй пары битов второго символа. В противном случае, сформировать байт (записать его в память), который представляет собой дизъюнкцию двух введённых символов.
входные данные к примеру 2 числа
Решение задачи: «Работа с битами и условиями (как мне кажется задача несложная)»
textual
Листинг программы
test ax, 3030h jnz metka shl al, 1 shl al, 1 mov bx, ax shl bx, 1 shl bx, 1 and ax, 30Ch and bx, 30C0h or ax, bx metka: or al, ah mov pamyat, al ... pamyat db ?
Объяснение кода листинга программы
- «test ax, 3030h» — здесь происходит сравнение содержимого регистра ax с 3030h, результат этого сравнения мы не знаем, так как не можем увидеть значение регистра флагов.
- «jnz metka» — если ax не равно 3030h, то происходит переход к метке metka.
- «shl al, 1» — сдвиг влево на 1 бит значения в регистре al, при этом значение самого регистра al изменяется, а сдвинутое значение записывается в флаг разряда.
- «shl al, 1» — снова сдвиг влево на 1 бит значения в регистре al.
- «mov bx, ax» — значение регистра ax копируется в регистр bx.
- «shl bx, 1» — сдвиг влево на 1 бит значения в регистре bx.
- «shl bx, 1» — снова сдвиг влево на 1 бит значения в регистре bx.
- «and ax, 30Ch» — логическое ИЛИ (bitwise AND) содержимого регистра ax и 30Ch.
- «and bx, 30C0h» — логическое ИЛИ (bitwise AND) содержимого регистра bx и 30C0h.
- «or ax, bx» — логическое ИЛИ (bitwise OR) содержимого регистра ax и bx.
- «or al, ah» — логическое ИЛИ (bitwise OR) младшего и старшего байтов регистра ax.
- «mov pamyat, al» — значение регистра al копируется в переменную pamyat.
- ...
- pamyat db ? — здесь pamyat — это переменная, в которую ранее было сохранено значение регистра al, а db — это описание переменной (в данном случае — двоичное).
- ...
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д