Ознайомлення з призначенням маскування, логічних операцій та зсуву

Страницы работы

Содержание работы

Мета роботи: ознайомитись з призначенням маскування, логічних операцій та зсуву.

Завдання 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

Висновок: Отже ми ознайомились з призначенням маскування, логічними операціями та зсувом.

Похожие материалы

Информация о работе