Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Eom_part1.doc
Скачиваний:
0
Добавлен:
28.08.2019
Размер:
411.65 Кб
Скачать

4.3. Приклади використання команд логічних операцій

3.1

Маскування при вводі. Ввести в регістр R7 інформацію з ліній 0,1,3,4,7 порта1

IN A,P1 ; ввести байт з пору 1

ANL A,#10011011B ; маскування

MOV R7,A ; передача

3.2

Ввести в аккумулятор данні з порту 2 і виділити необхідні біти по масці, щознаходиться в R0:

IN A,P2 ; ввод з порта 2

ANLA,R0 ; маскування

3.3

Виконати логічний здвиг вліво двохбайтного слова, що розміщується в (R2) (A)

SHIFLL:RLC A ; здвиг молодшого байта

XCH A,R2 ; обмін аккумулятора та розширювача

RLC A ; здвиг старшого байта

XCH A,R2 ; обмін

3.4

Перемножити аккумулятор на число 2 в степені Х, де Х- число (не більше 8), що зберігається в R2. Перемноження на 2 заміняється арифметичним здвигом вліво аккумулятора і розширювача R1

MOV R1,#0 ; зброс R1

CLR C ; зброс признаку переносу

LOOP: RLC A ; арифметичний здвиг вліво обєднаного 16 біт-

XCH A,R1 ного результата в регістровій парі (R1) (A)

RLC A

XCH A,R1

DJNZ R2,LOOP ; цикл

3.5

Видати вміст аккумулятора в послідовному коді через нульову лінію порта 1, залишаючи без зміни решту бітів порта. Передачу вести, починаючи з молодшого біта

MOV R1,#8 ; лічильник біт

LOOP: JB0 ONE ; перехід, якщо біт А.0 рівняється 1

ANL P1,#(NOT 1) ; зброс Р1.0

JMP NEXT ;

ONE ORL P1,#1 ; установка Р1.0

JMP NEXT ; надмірна команда для вирівнювання

часу передачі 0 та 1

NEXT RR A ; здвиг аккумулятора вправо( підготовка до

DJNZ R1,LOOP ; передачі чергового біта)

3.6

Налагодити біти 0-3 порта 1 на ввод.

ORL P1,#0FH ; установка бітів Р1.0…Р1.3

3.7

Очистити біти 4-7 порта 2

ANL P2,#0FH ; зброс бітів Р2.4..Р2.7

3.8

Видати в лінію 0 порта 4 значення четвертого біта аккумулятора

SWAP A ; обмін бітів 0 і 4 аккумулятора

ANL A,#1 ; виділення біта А.0

ORLD P4,A ; установка Р4.0, якщо А.0=1

ORL A,#0EH ; установка бітів 1…3 аккумулятора

ANLD P 4,A ; зброс Р4.0, якщо А.0=0

3.9

Визначити парність числа одиниць в аккумуляторі.

CLR F0 ; зброс F0

MOV R7,#8 ; число повторів

LOOP: RRC A ; пересилка біта А.0 в перенос

JNC NEXT ; пропустити, якщо біт =0

CPL F0 ; підрахунок парітету

NEXT: DJNZ R7,LOOP ; повторити 8 раз

Після виконання програми аккумулятор зберігає своє значення, признак F0

буде встановленим, якщо число одиниць в аккумуляторі було непарним. Приз-нак F0 входить до складу ССП і в даному прикладі задається користувачем для виконання функцій признака паритету.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]