Склад команд арифметичних і логічних операцій, страница 4

ANL A,R2 ;(A)=C4H, (R2)=C5H

2.

Асемблер: ANL A,<data address>

Код: 0 1 0 1 0 1 0 1 data address

Час: 1 цикл

Алгоритм: (A) : =(A) AND (data address)

Приклад: ;(A)=A3H, (PSW)=86H

ANL A,PSW ;(A)=82H, (PSW)=86H

3.

Асемблер: ANL A, @Ri ; де i=0,1

Код: 0 1 0 1 0 1 1 i , де i=0,1

Час: 1 цикл

Алгоритм: (A) : =(A) AND (Ri)

Приклад: ;(A)=BCH, (ОЗУ [35])=47H, (R0)=35H,

ANL A,@R0 ;(A)=04H, (ОЗУ [35])=47H

4.

Асемблер: ANL A, #data

Код: 0 1 0 1 0 1 0 0 #data8

Час: 1 цикл

Алгоритм: (A) : = (A)AND #data

Приклад: ;(A)=36H

ANL A,#0DDH ;(A)=14H

5.

Асемблер: ANL <data address>, A

Код: 0 1 0 1 0 0 1 0 data address

Час: 1 цикл

Алгоритм: (data address) : = (data address) AND (A)

Приклад: ;(A)=55H, (P2)=AAH

ANL P2,A ;(P2)=00H, (A)=55H

6.

Асемблер: ANL <data addresst>, #data

Код: 0 1 0 1 0 0 1 1 data address #data8

Час: 2 циклу

Алгоритм: (data address) : = (data address) AND #data

Приклад: ;(P1)=FFH

ANL P1,#73H ;(P1)=73H

Команда ORL <байт-призначения>, <байт-джерела>

Команда "логічне "АБО" для змінних байтів" виконує операцію логічного

"АБО" над бітами вказаних змінних, записуючи результат в байт

призначення. Ця команда не впливає на прапорці. Є шість комбінацій

режимів адресації:

• якщо байтом призначення є акумулятор :

2. регістровий

3. прямий

4. косвено-регістровий

5. безпосередній

• якщо байтом призначення є пряма адреса :

6. до акумулятору

7. до константи

1.

Асемблер: ORL A, Rn ; де n=0-7

Код: 0 1 0 0 1 rrr , де rrr=000-111

Час: 1 цикл

Алгоритм: (A) : = (A) OR (Rn),

де OR - операція логічного "АБО"

Приклад: ;(A)=15H, (R5)=6CH

ORL A,R5 ;(A)=7DH, (R5)=6CH

2.

Асемблер: ORL A, <data address>

Код: 0 1 0 0 0 1 0 1 data address

Час: 1 цикл

Алгоритм: (A) : =(A) OR (data address)

Приклад: ;(A)=84H, (PSW)=C2H

ORL A,PSW ;(A)=C6H, (PSW)=C2H

3.

Асемблер: ORL A, @Ri ; де i=0,1

Код: 0 1 0 0 0 1 1 i

Час: 1 цикл

Алгоритм: (A) : =(A) OR ((Ri))

Приклад: ;(A)=52H, (R0)=6DH, (ОЗУ [6D])=49H

ORL A,@R0 ;(A)=58H, (ОЗУ [6D])=49H

4.

Асемблер: ORL A, #data

Код: 0 1 0 0 0 1 0 0 #data8

Час: 1 цикл

Алгоритм: (A) : = (A) OR #data

Приклад: ;(A)=FOH

ORL A,#0AH ;(A)=FAH

5.

Асемблер: ORL <data address>, A

Код: 0 1 0 0 0 0 1 0 data address

Время: 1 цикл

Алгоритм: (data address) : = (data address) OR (A)

Пример: ;(A)=34H, (IP)=23H

ORL IP,A ;(IP)=37H, (A)=34H

6.

Асемблер: ORL (direct), #<data>

Код: 0 1 0 0 0 0 1

1

direct address #data8

Час: 2 циклу

Алгоритм: (data address) : = (data address) OR #<data>

Пример: ;(P1)=00H

ORL P1,#0C4H ;(P1)=11000100B (C4H)

Команда ORL C, <біт джерела>

Команда "логічне "АБО" для змінних бітів" встановлює прапор переносу

С, якщо булева величина дорівнює логічній "1", в іншому випадку

встановлюється прапор С в "0". Знак ("/") перед операндом на мові асемблера

вказує на то, що в якості операнда використовується логічне отрицание

значення биту, що адресується, але сам біт джерела не змінюється. Ця

команда не впливає на прапори.

1.

Асемблер: ORL C,<bit>

Код: 0 1 1 1 0 0 1 0 bit address

Час: 2 циклу

Алгоритм: (C) : =(C) OR (bit)

Приклад: ;(C)=0, (P1)=53H (01010011B)

ORL C,P1.4 ;(C)=1, (P1)=53H (01010011B)

2.

Асемблер: ORL C,/ <bit>

Код: 1 0 1 0 0 0 0 0 bit address

Час: 2 циклa

Алгоритм: (C) : = (C) OR /(bit)

Приклад: ;(C)=0, (ОЗУ[25])39H (0011100B)

ORL C,/2A ;(C)=1, (ОЗУ[25])39H (0011100B)

2. Домашня підготовка

2.1. Вивчити матеріали лекцій і методичних вказівок відповідно до

теми лабораторної роботи.

2.2. Скласти мнемонічний текст програм, відповідно наведеної нижче

схеми.

Перша програма.

2.2.1. Внести то тексту програми файл mod51, як наведено ниже.

;-----------------------------------

$nolist

$include(mod51) ; приклад наведено для випадку розміщення файлу

; mod51 в поточній директорії. В іншому випадку

; треба вказати повний шлях до файлу

$list

ORG 0

; Текст програми

END

;-----------------------------------

2.2.2. Занести в регістр R0 дані 32h.

2.2.3. Занести в акумулятор данні 78h.

2.2.4. Вивести на двох правих розрядах індикатора суму R0 і A, а на

двох правих – 00h.

2.2.5. Сформувати затримку.

2.2.6. Завантажити акумулятор числом DEh.

2.2.7. Додати до вмісту акумулятора число В0h.

2.2.8. Вивести результат на HG1, з урахуванням здійсненого переносу.

Так як в цьому випадку є перенос з молодшого байта в старший, то результат

складання буде двобаштовим числом, тому для його відображення необхідно

задіяти три розряди HG1:

DEh+BO=18Eh.

2.2.9. Сформувати затримку.

2.2.10. Інвертувати вміст акумулятора і вирахувати з отриманих даних

число 1110. Результат відобразити на екрані.

2.2.11. Сформувати затримку.

2.2.12. Умножити вміст акумулятора на число 03h. Результат

відобразити на індикаторі.

Друга програма.

2.2.13. За адресою 0A006h завантажити данні 11001100b.

2.2.14. До регістра R3 завантажити данні 10001000b.

2.2.15. Сформувати затримку.

2.2.16. Між вмістом акумулятора і регістра R3 здійснити побітову

операцію «І». Результат операції відобразити на світлодіодному індикаторі за

адресою 0A006h.

2.2.17. Сформувати _________затримку