Мета роботи: ознайомитись з призначенням маскування, логічних операцій та зсуву.
Завдання 1
1)Написати програму, що записує послідовність бітів в акумуляторі у зворотному порядку (00100111® 11100100).
org 0c100h
mov r0,#00100111b
mov A,r0
mov r1,#3 ;the number of shifts
MARK:
RR A
DJNZ r1,MARK
end
Перевірка:
Програма помилок не виявила тому починається сесія налагоджування. Після виконання перших чотирьох команд до регістрів записуються (r0),(A)←00100111b=27h, (r1)←3 (Рис. 1а). Після виконання циклу в якому значення акумулятора циклічно зсувається 3 рази отримуємо дзеркальне відображення початкового значення 11100100b=E4h (Рис. 1б)
а б
Рис. 1
2) Записати в парні розряди результату одиниці: Y=211/8-22*4
org 0c100h
mov r1,#211/8-22*4
mov r2,#10101010b; mask
mov A,r1
ORL A,r2
end
Перевірка:
Після перших чотирьох команд до регістрів записуються (r1),(A)←-62=11000010b=C2h і (r2)←10101010b=AAh (Рис. 2а). П’ята команда виконує (А)˅(r2) чим встановлює в парних розрядах результату одиниці 11101010b=EAh (Рис. 2б).
а б
Рис. 2
3) Визначити й записати в регістри прапорці, що вказують на те, чи зведені біти 0, 2, 4 порту Р1. Створити байт результату, у якому 1 у відповідному біті свідчить про наявність високого рівня сигналу на цій лінії порту Р1. Байт зберегти в акумуляторі.
org 0c100h
X equ P1.0
Y equ P1.2
Z equ P1.4
clr Z ;just for example
mov C,X
JNC Mark1
ORL A,#00000001b
Mark1:
mov C,Y
JNC Mark2
ORL A,#00000100b
Mark2:
mov C,Z
JNC Mark3
ORL A,#00010000b
Mark3:
mov r0,A ;mov flags to r0
mov A,P1 ;mov byte from port to A
jmp $
end
Перевірка:
Командами 2-4 призначуємо імена бітам порту. По замовчуванню на всіх портах встановлені 1 тому для прикладу роботи програми очистимо 5 порт п’ятою командою.
Далі всі команди по позначки Mark3 по черзі записують інформацію з бітів порту до прапору С і перевіряють їх. По закінченню програми в регістрі r0 знаходяться прапорці, що вказують на те, чи зведені біти 0, 2, 4 порту Р1, а в акумуляторі значення з порту P1.
В порту було записане число 11101111b=EFh, отже в регістрі r0 має бути 00000101b=5h (Рис. 3).
Рис. 3
Завдання 2
Написати програму на основі команд операцій з бітами з табл.4.1.10 для обчислення виразу відповідно до свого варіанта:
7) Y=W˄Z˅X˄
Значення зчитати з перших трьох виводів порту Р0.
org 0c100h
X equ P0.0
W equ P0.1
Z equ P0.2
Y equ P0.3
mov C,W
ANL C,Z ;W*Z
mov F0,C
mov C,Z
CPL Z
ANL C,X ;X*(not)Z
ORL C,F0 ;W*Z+X*(not)Z
mov Y,C
jmp $
end
Перевірка:
Виводи порту встановлені в 1, тому підставляючи значення отримаємо 1˄1˅1˅0=1b. Тому по виконані програми прапорець С повинен бути встановлений в 1 (Рис. 4).
Рис. 4
Висновок: Отже ми ознайомились з призначенням маскування, логічними операціями та зсувом.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.