42651

ДОСЛІДЖЕННЯ АРИФМЕТИЧНИХ ТА ЛОГІЧНИХ ОПЕРАЦІЙ

Лабораторная работа

Информатика, кибернетика и программирование

Безпосередня адресація дозволяє занести на адресу призначення константу що безпосередньо вказана в команді наприклад: MOV 100; в акумулятор записується десяткове число 100. Допускається пряма байтова адресація до внутрішніх регістрів RM з номерами 0 127 наприклад MOV 25H ; в акумулятор записується вміст регістра з адресою 25Н. Наприклад передачу даних з регістру RM за номером 44Н в регістр 0Н або R0 можна реалізувати наступними способами: MOV 0H 44H; пряма адресація запис команди займає 3 байти в ROM MOV R0 44H; регістрова...

Украинкский

2013-10-30

201 KB

5 чел.

ЛАБОРАТОРНА РОБОТА №2

ДОСЛІДЖЕННЯ АРИФМЕТИЧНИХ ТА ЛОГІЧНИХ ОПЕРАЦІЙ

1. Мета роботи:

Ознайомитися з основними арифметичними та логічними операціями мікропроцесорів сімейства MCS-51.

2. Програма роботи:

2.1. В програмному середовищі μ-VISION/51 написати, асемблювати та відладити програму, яка наведена в таблиці 2.1;

2.2. З використанням програмного симулятора dScope-51 крок за кроком виконати програму. Прослідкувати за зміною данних у відповідних регістрах SFR.

3. Завдання до лабораторної роботи

В таблиці 2.1 наведені вихідні дані для виконання лабораторної роботи.

Таблиця 2.1.

Номер варіанту

Завдання

Номер варіанту

Завдання

1

Z = (3760 - x) *4 + T  y

11

Z = 1024 + 3X -Y- 1 T

2

Z = (4200 – y:8 –1) X

12

Z = (8650 + 2X) :84 T + y

3

Z = (7650+Y) *4 – T  X

13

Z = (7888 - Y/4 ) - (T X)

4

Z = (7856-y/4) *3 + T

14

Z = (1256 X) + T * 4+ y

5

Z = (5640 + 2y) * 4 T

15

Z = (2300 -y – x) *4 T

6

Z = (6543 + 6y x) *2 + T

16

Z = (7848 - Y/4 ) + (T X)

7

Z = (3421 x) *2 - T

17

Z = (5430 -y – x) *8 T

8

Z = (2004 у) *2 – T Х

18

Z = (2556 X) – T * 8 + y

9

Z = (4000 – 4X)    Y *5

19

Z = (8970 + 4X) :8 T-y

10

Z = (4200 X) + T * 8 - y

20

Z = 1076 - 3X +Y- 1 T

  1.  Зміст звіту:
  •  Титульний лист з відомостями про назву роботи і склад бригади;
  •  Текст програми з коментарями.
  1.  Контрольні запитання:

Назвіть основні групи команд арифметичних та логічних операцій. Які операції виконуються лише з байтовими  числами?

Які методи адресації існують в мові асемблеру? Наведіть приклади?

Назвіть основні групи команд арифметичних та логічних операцій.

Які операції виконуються лише з бітами?

  1.  Загальні відомості

Система команд мікропроцесорів сімейства  MCS-51 містить 111 базових команд, що реалізують 33 різноманітних функцій системи. Для опису команд використовуються 42 мнемонічних позначення (абревіатури).

Команди оперують з одно-, чотири-, вісьми- та 16-бітними словами.

Більшість команд мають формат у 1 - 2 байта і як правило виконуються за 1 - 2 машинних цикли.

По функціональній ознаці систему команд поділяють на 5 груп: арифметичні операції, логічні операції, команди передачі даних, операцій із бітами, команди передачі керування.

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

Мова асемблера мікропроцесорів MCS-51 допускає наступні методи адресації: безпосередню, пряму, регістрову, непряму регістрову, індексну, символічну.

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

MOV A, #100; в акумулятор записується десяткове число 100.

Пряма адресація використовується для звертання до SFR-області та внутрішніх регістрів RAM. Можлива як бітова так і байтова адресація.

Допускається пряма байтова адресація до внутрішніх регістрів RAM з номерами 0 - 127, наприклад,

MOV A, 25H ; в акумулятор записується вміст регістра з адресою 25Н.

Для бітової адресації регістрів внутрішньої RAM доступні регістри з номерами 20H - 2FH. Біти цих регістрів послідовно нумеровані та мають адреси 0 - 127. Сукупність цих біт складає бітову RAM - область мікропроцесора. В командах з бітовою прямою адресацією можливе використання як прямих адрес бітової так і байтової RAM-областей.

Наприклад, тотожними є наступні команди,

SETB 0; установлення нульового біта бітової RAM - області в “1“

SETB 20H.1; установлення нульового біта регістра 20Н байтової  RAM - області в “1“, тому що в обох випадках адресується один і той же біт внутрішньої RAM-області.

Прямі адреси регістрів SFR-області мають номера  128 - 255, які не пересікаються з адресами регістрів RAM. Старший біт байта коду прямої адреси селектує RAM чи SFR області мікропроцесора.

Для бітової адресації придатні наступні регістри SFR: P0, P1, P2, P3, TCON, SCON, IE, IP, PSW, ACC, B.

Регістрова адресація використовується для звертання до обраного банку регістрів загального призначення  R0 - R7, регістрів A, B, AB, DPTR, бітового акумулятора C. Її використання дозволяє отримати двобайтовий код команди, еквівалентний по результатам дії трибайтовому коду, що утворюється при використанні прямої адресації. Економія виникає за рахунок того, що в коді операції розміщено також адресу одного з операндів - регістра. Наприклад, передачу даних з регістру RAM за номером 44Н в регістр 0Н (або R0) можна реалізувати наступними способами:

MOV 0H, 44H; пряма адресація - запис команди займає 3 байти в ROM

MOV R0, 44H; регістрова адресація - запис команди займає 2 байти.

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

Непряма регістрова адресація використовується для звертання:

-  до регістрів внутрішньої RAM з використанням регістрів покажчиків R0, R1 обраного банку регістрів загального призначення. В мікропроцесору всього 8 регістрів такого типу і тому їх необхідно використовувати досить обачливо. Регістр покажчик вказує на номер регістру RAM, що адресується, наприклад,

MOV R0, #2; в регістр покажчик R0 записана адреса регістру до якого

                     ;буде записане число

MOV A, #10; запис числа в акумулятор

MOV @R0, A; передача числа з акумулятора на вказану адресу.

- до регістрів зовнішньої пам`яті даних. Можливе використання як байтового так і двобайтового покажчиків. Якщо використовується байтовий покажчик (регістри R0, R1), то обирається комірка зовнішньої пам`яті даних з сторінки - блоку в 256 байт. Номер сторінки попередньо вказується за допомогою порту Р2, наприклад,

MOV P2, #3; в порт Р2 записано номер сторінки звертання

MOV RO, #2; запис в покажчик адреси регістру зовнішньої пам`яті даних,

MOV A, #10; запис в акумулятор числа, що буде передаться

MOVX @R0, A; передача числа з акумулятора на вказану адресу.

Якщо використовується двобайтовий покажчик (регістр DPTR), то можлива адресація до будь якого регістру зовнішньої пам`яті даних ємності 64К. Програма звертання в цьому випадку має наступний вигляд:

MOV DPH, #0A9H; запис в регістр покажчик DPTR адреси комірки

MOV DPL, #04H; пам`яті #0A904H зовнішньої пам`яті даних

MOVX A,@DPTR; передача байта даних в акумулятор.

Індексна адресація, або непряма регістрова по сумі базового та індексного регістрів, використовується для читання даних з пам`яті програм. Дозволяє використовувати табличні дані, що записані в пам`яті програм. Адреса будь якої комірки пам`яті може бути встановлена за сумою базової адреси, що задається двобайтовими регістрами покажчиками DPTR або РС, та адреси зміщення, що задається акумулятором АСС:

MOVC A, @A+PC; передача в акумулятор з адреси @A+PC

MOVC A, @ A+DPTR; передача в акумулятор з адреси @ A+ DPTR.

Символічна адресація широко використовується під час написання програм для найменування як регістрів так і окремих біт SFR регістрів користувача. Переважна більшість крос-асемблерних програм допускає вживання зарезервованих найменувань регістрів і біт SFR. Для встановлення оригінальних імен користувачем, можливе використання директив асемблера:

TIME_1DATA34H; регістру RAM з номером 34Н присвоєне ім`я TIME_1

ON BIT 20H.1; першому біту регістру 20Н присвоєне ім`я ON.

В цьому випадку команди передачі даних мають наступний вигляд:

MOV TIME_1, A ; передача даних з акумулятора в регістр 34Н

SETB ON  ; установка першого біту регістра 20Н в  “1“.

Використання символічної адресації значно спрощує розробку програм та їх узгодження з мікроконтролерними системами на етапі конструювання.

Внаслідок виконання деяких з команд процесор може модифікувати прапорці - переносу (С), додаткового переносу (АС), переповнення (OV), парності (Р). Перелік таких команд наведено нижче в таблиці 2.2.

Для опису команд використані наступні позначення:

src - операнд джерело даних; dest - операнд призначення; bit - пряма адреса біту; rel - відносна адреса переходу; #data - восьмибітові безпосередні дані; #data16 - шістнадцятибітові безпосередні дані; byte - восьмибітовий операнд; Ri - індексні регістри, i = 1, 2; Rn - регістри загального призначення, n = 0 - 7; АСС - акумулятор; DPTR - шістнадцятибітовий регістр покажчик; PC - шістнадцятибітовий програмний рахівник;  SP - регістр покажчик стеку.

Таблиця 2.2

Команди

Прапорці

Команди

Прапорці

C

OV

AC

C

OV

AC

ADD

X

X

X

CLR C

0

ADDC

X

X

X

CPL C

X

SUBB

X

X

X

ANL C, bit

X

MUL

0

X

ANL C, /bit

X

DIV

0

X

ORL C, bit

X

DA

X

ORL C, /bit

X

RRC

X

MOV C, /bit

X

RLC

X

CJNE

X

SETB C

1

Команди передачі даних

Можлива передача одно-, чотири- та вісьмибітових даних. Всі команди цієї групи не модифікують прапори, за винятком команд завантаження регістрів PSW та ACC. Структура інформаційних зв`язків в мікропроцесорах MCS-51 має такий вигляд як на рисунку 2.1.

Рис. 2.1.

Звертання до акумулятора можливе як за неявної (А) так і прямої (АСС) адресації. Неявне звертання дозволяє використовувати вкорочені на 1 байт коди команд, але в цьому випадку неможливе звертання до окремих біт акумулятора.

В структурній схемі не зображені інформаційні зв`язки чотирибітового обміну. Існує дві операції, які проводяться з акумулятором, або акумулятором та будь яким регістром RAM:

SWAP A  - обмін тетрадами в акумуляторі;

XCHD A, @Ri - обмін молодшої тетради акумулятора та будь якого регістру RAM, що адресується методом непрямої регістрової адресації.

Такі команди часто використовують для маніпуляцій з BCD - упакованими числами.

В таблицях наведено списки команд передачі даних мікропроцесорів сімейства MCS-51, з посиланням на можливість реалізації команд для прямої (1), непрямої регістрової (2), регістрової (3) та безпосередньої (4) адресації. Також наведено число циклів (N) мікропроцесора для реалізації цих команд.

Інструкції обміну даними з RAM  та SFR областями процесора

                                                                                               Таблиця 2.3.

Команда

Операція

Види адресації

N

1

2

3

4

MOV A,<src>

A = <src>

X

X

X

X

1

MOV <dest>, A

<dest> = A

X

X

X

1

MOV <dest>,<src>

<dest> = <src>

X

X

X

X

2

MOV DPTR,#data16

DPTR = 16-bit

X

2

PUSH <src>

INC SP: MOV“@SP”,<src>

X

2

POP <dest>

MOV <dest>,“@SP”: DEC SP

X

2

XCH A,<byte>

A та <byte> обмін даними

X

X

X

1

XCHD A,@Ri

A та @Ri обмін молодшими тетрадами

X

1

Фрагмент програми з використанням команд обміну даними, які наведені у таблиці 2.3:

MOV A,#34 ; запис в акумулятор числа 34

MOV A, R2 ; запис в R2 вмісту акумулятора

MOV @R1, #2; запис в регістр РПД числа 2

XCH A, @R1; обмін інформації акумулятора з регістром РПД

PUSH РSW  ; збереження вмісту регістру прапорів у стеку

Інструкції обміну даними з зовнішньою RAM

Таблиця 2.4.

Довжина адреси

Команда

Операція

N

8 біт

MOVX A, @Ri

Читання зовнішньої RAM @Ri

2

8 біт

MOVX @Ri, A

Запис у зовнішню RAM @Ri

2

16 біт

MOVX A,@DPTR

Зчитування зовнішньої RAM

2

16 біт

MOVX @DPTR, A

Запис у зовнішню RAM @ DPTR

2

Фрагменти програм з використанням команд приведених у таблиці:

MOV,#24Н         ;запис в регістр РПД  числа 24

MOVX A, @R1 ; передача в акумулятор байта з РПД

Інструкції читання даних з пам`яті програм ROM

Таблиця 2.5.

Позначення команди

Операція

N

MOVC A,@A+DPTR

Читання за адресою @(A + DPTR)

2

MOVC A,@A+PC

Читання за адресою @(A + PC)

2

Фрагменти програм з використанням команд приведених у таблиці:

MOV DPTR, #32Н ;завантаження вказівника данних

MOVС A, @A + DPTR; пересилка в акумулятор байта з ROM

Інструкції арифметичних операцій

В арифметико-логічному пристрої виконуються дії з цілими числами без знаку. В двооперандних командах, акумулятор завжди використовується як перший операнд. В нього, після реалізації операції, записується результат дії (ADD, ADDC, SUBB ). Операції додавання та віднімання з врахуванням знаку реалізувати з використанням прапора переповнення.

Якщо в програмі використовуються елементи BCD - арифметики (над двійково - десятковими упакованими числами), вживають прапорець додаткового переносу та команду десяткової корекції результату DA. Слід зауважити, що така команда не дозволяє перетворити формат чисел з шістнадцятирічного в BCD, а лише коригує результат операції додавання що проводиться з BCD числами. Арифметичні команди наведені в таблиці 2.6.

Таблиця 2.6.

Команда

Операція

Види адресації

N

1

2

3

4

ADD A,<byte>

A = A + <byte>

X

X

X

X

1

ADDC A,<byte>

A = A + <byte> + C

X

X

X

X

1

SUBB A,<byte>

A = A – <byte> – C

X

X

X

X

1

INC A

A = A + 1

Лише акумулятор

1

INC <byte>

<byte> = <byte> + 1

X

X

X

1

INC DPTR

DPTR = DPTR + 1

Лише DPTR

2

DEC A

A = A – 1

Лише акумулятор

1

DEC <byte>

<byte> = <byte> – 1

X

X

X

1

MUL AB

B:A = B x A

Лише ACC та B

4

DIV AB

A = Int[A/B] B = Mod[A/B]

Лише ACC та B

4

DA A

Десяткова корекція

Лише акумулятор

1

Розглянемо фрагменти програм з використанням арифметичних.

1. Операція додавання

MOV A,#34Н ; запис в акумулятор числа 34

MOV R1,#2Н;   запис в регістр  числа 2

ADD A, R1; додавання 34Н + 2Н. В акумулятор запис результату - 36Н.

2. Операція віднімання

MOV A,#34Н ; запис в акумулятор числа 34

MOV R1,#2Н;   запис в регістр R1 числа 2

SUBB A, R1; віднімання 34Н – 2Н - С. В акумулятоі результат - 32Н.

3. Множення

MOV A,#34Н ; запис в акумулятор числа 34

MOV В,#2Н   ; запис в регістр  числа 2

MUL AB        ; множення  2Н*34Н. В акумулятор запис результату: 68Н.

4. Ділення

MOV A,#34 ; запис в акумулятор числа 34

MOV  В,#2  ; запис в регістр числа 2

DIV AB       ; ділення 34Н + 2Н. В акумулятор запис результату: 1А.

Інструкції логічних операцій

В перелік входить 25 команд, що реалізують логічні операції “І“, “АБО“, “НІ“, “ВИКЛЮЧАЮЧЕ АБО“ над вмістом акумулятора та іншим операндом. Результат операції в акумуляторі. Деякі з логічних операцій виконуються лише над акумулятором. Команди логічних операцій наведені в таблиці 2.7.

Таблиця 2.7.

Команда

Операція

Види адресації

N

1

2

3

4

ANL A,<byte>

A = A AND <byte>

X

X

X

X

1

ANL <byte>, A

<byte> = <byte> AND A

X

1

ANL <byte>,#data

<byte> = <byte> AND #data

X

2

ORL A,<byte>

A = A OR <byte>

X

X

X

X

1

ORL <byte>,A

<byte> = <byte> OR A

X

1

ORL <byte>,#data

<byte> = <byte> OR #data

X

2

XRL A,<byte>

A = A.XOR. <byte>

X

X

X

X

1

XRL <byte>,A

<byte> = <byte> XOR A

X

1

XRL <byte>,#data

<byte> = <byte> XOR #data

X

2

CRL A

A = 00H

Лише акумулятор

1

CPL A

A = NOT A

Лише акумулятор

1

Розглянемо фрагменти програм з використанням логічних команд.

1. Логічне „І”

MOV R1, #01010101B; запис числа в регістр

MOV A,  #10101010B ; запис числа в акумулятор

ANL A, R1 ; логічне „і” акумулятора і регістра. Результат 00000000В.

2. Логічне „виключаюче або”

MOV R1, #01010101B  ; запис числа в регістр

MOV A,   #10101010B ; запис числа в акумулятор

ХRL A, R1 ; логічне „ виключаюче або”. Результат 11111111В.

Інструкції операцій зсуву

В інструкціях зсуву вміст акумулятора циклічно зсувається вправо (RR A,) або вліво (RL A,) на 1 біт. В командах з використанням біту переносу (RRC A, RLC A), біт зсуву спочатку записується в прапорець переносу С, а його вміст завантажується в байт. Команди зсуву наведені в таблиці 2.8.

Таблиця 2.8.

Команда

Операція

Види адресації

N

1

2

3

4

RL A

Зсув ACC вліво на 1 біт

Лише акумулятор

1

RLC A

Зсув ACC вліво через біт переносу

Лише акумулятор

1

RR A

Зсув ACC вправо  на 1 біт

Лише акумулятор

1

RRC A

Зсув ACC вправо через біт переносу

Лише акумулятор

1

SWAP A

Обмін тетрадами

Лише акумулятор

1

Розглянемо фрагменти програм з використанням команд зсуву:

MOV A, #00001111B ; запис числа в акумулятор

SWAP A ; обмін тетрадами в акумуляторі. Результ 11110000В.

RL A; зсув вліво. Результат 1110001.

Команди операцій з бітами

Мікропроцесори сімейства MCS-51 мають булевий (однобітний) процесор. Можлива адресація до 128 біт вбудованої RAM та такої ж кількості біт SFR- областей. Можлива незалежна адресація до всіх лінії портів і кожна з ліній може бути подана як окремий однобітний порт.

Повний перелік операцій з бітами включає основні інструкції байтового процесора: MOV, SET, CLR, CPL, OR, AND, JB, JNB, JBC.

Проте у всіх командах використовується лише пряма адресація. Біт переносу використовується як однобітний акумулятор булевого процесора. Бітові інструкції, що мають відношення до булевого акумулятора, мають власні коди. Разом з тим до “С - акумулятора“ можливий доступ як до окремого біта PSW - регістра (PSW.7). Недоліком системи бітових команд є відсутність серед логічних операцій команди “АБО ЩО ВИКЛЮЧАЄ“ (XRL).

Серед команд передачі керування є дві операції з бітовим акумулятором, та три операції з будь якими бітами. По цим командам досягається передача керування у межах -128+127 байт адресного простору. Перелік булевих команд наведено у таблиці 3.2.

Таблиця 3.2.

Команда

Операція

N

Команда

Операція

N

ANL C, bit

C = C ANDbit

2

SETB bit

bit = 1

1

ANL C /bit

C = C AND NOT bit

2

CPL C

C = .NOT.C

1

ORL C, bit

C = C OR bit

2

CPL bit

bit = .NOT.bit

1

ORL C,/bit

C = C OR NOT bit

2

JC rel

Перехід, якщо C = 1

2

MOV C,bit

C = bit

1

JNC rel

Перехід, якщо C= 0

2

MOV bit,C

bit = C

2

JB bit,rel

Перехід, якщо bit = 1

2

CLR C

C = 0

1

JNB bit,rel

Перехід, якщо bit = 0

2

CLR bit

bit = 0

1

JBC bit,rel

Перехід, якщо bit = 1;

CLR bit

2

SETB C

C = 1

1


@DPTR

 @PC

@DPTR

 @ Ri

  ACC

    addr

  @Ri

     Rn

  #data 8

 DPTR

 #data 16

       C

      bit

Пам`ять

програм

Зовнішня

пам`ять

даних


 

А также другие работы, которые могут Вас заинтересовать

61234. Веселая прогулка в страну - Хореография 27.68 KB
  Цели: образовательная: повторить ранее изученный материал: позиции рук, ног в классическом танце. Элементы: demi-plie, grand-plie, battement tendu, releve; расширить знания детей о богатстве русской хореографии...
61235. Параллельные прямые в пространстве 21.52 KB
  Оборудование: В ходе урока используется презентация Microsoft PowerPoint Параллельные прямые в пространстве модель куба карандаши. Запишите сегодняшнее число и тему нашего урока Параллельные прямые в пространстве.
61236. Grammar in Use 28.74 KB
  Цели: расширение грамматических навыков по теме Present Tenses. образовательная: освежить и углубить знания учащихся по употреблению времён группы развивающая: закрепиnь и автоматизировать правильное использование времён группы Present
61237. Алгоритмы и блок-схемы 64.46 KB
  Алгоритмы можно задавать по-разному: Словами Блок-схемой На языке программирования Блок-схема графическое представление алгоритма. Блок-схема составляется из нескольких типов блоков.
61239. Личность А. С. Грибоедова: «Всё в нём было необыкновенно привлекательно» (А. С. Пушкин) 25.36 KB
  Всё в нём было необыкновенно привлекательно А. Так вот ребята сегодня я вам предлагаю познакомиться или даже лучше подружиться с личностью замечательного русского драматурга автора самой цитируемой комедии...
61241. МАТЕРИАЛЫ ВЫСОКОЙ ПРОВОДИМОСТИ 305 KB
  Углеродистые материалы. Наиболее широкое применение среди этих материалов имеет графит – одна из разновидностей чистого углерода. К ценным свойствам графита относятся малое удельное сопротивление, хорошая теплопроводность, а также стойкость ко многим агрессивным химическим средам.