Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л.р.1-12.СПРГ-1(40, укр).doc
Скачиваний:
5
Добавлен:
27.08.2019
Размер:
2.33 Mб
Скачать

7. Критерії оцінювання.

На 3 бали:

Вміти дати відповіді на питання для самоконтролю та самоперевірки. Виконати завдання 1

На 4 бали:

Виконати завдання 2 (один приклад)

На 5 балів:

Виконати завдання 2 (два приклади)

8. Питання для самоперевірки

Особливості виконання досліджуваних базових команд процесора і8086/і286.

Поняття про байти коду операції, способах адресації, регістрах і зсувах.

Асемблювання і дизасемблювання команд на своїх прикладах.

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

Поняття про 16- і 32-розрядні обчислювальні платформи.

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

9. Література

1. Голуб Н. Г. Искусство программирования на Ассемблере. Лекции и упражнения.- СПб.: ООО”ДиаСофтЮП”, 2002. – 656 с.

2. Магда. Ю. С. M12 Ассемблер для процессоров Intel Pentium. – СПб.: Питер, 2006. – 410с.

3. Ирвин Кип. Язык ассемблера для процессоров Intel, 4-е издание.: Пер с англ. – М.: Издательский дом ”Вильямс”, 2005. – 912с.

Лабораторна робота 5.

Тема: Робота з бітами на асемблері

Цель: Вивчити склад команд МП Intel для роботи з бітами.

1. Підготовка до роботи.

Ознайомитися із набором команд мови асемблера для роботи із бітами [1, стор. 153-173], [2, стор. 311-313], [3, стор. 249-260,305-320].

2. Питання для самоконтролю.

1. У чому полягає різниця між командами AND і TEST?

2. Опишіть логіку роботи команди логічного додавання по модулі 2.

3. Які види зсувів ви знаєте?

4. Які команди можуть оперувати з одиничним бітом, що знаходиться в пам'яті або регістрі загального призначення?

5. Для чого застосовується і як працює команда bswap?

3. Короткі теоретичні зведення

Розрізняють власне логічні операції, бітові операції і зсув. Вони виробляються над бітами байта або слова, тому ще називаються побітовими (порозрядними).

3.1. Логічні команди

Логічне заперечення (NOT, ,) – змінює значення операнда на протилежне

op1

rez

приклад

0

1

(op1)=01010101b

1

0

not (op1)=10101010b

Логічне множення (кон’юнкція, AND, , ) – результат завжди 0, якщо один з операндів дорівнює 0:

op1

op2

rez

приклад

0

0

0

op1=01010101b

0

1

0

and

1

0

0

op2=11001101b

1

1

1

rez=01000101b

Логічне додавання (диз'юнкція, OR, +, ) – результат завжди 1, якщо один з операндів дорівнює 1:

op1

op2

rez

приклад

0

0

0

op1=01010101b

0

1

1

or

1

0

1

op2=11001101b

1

1

1

rez=11011101b

Логічна функція “що виключає або” (“додавання по модулю 2”, XOR, ) – результат завжди 0, якщо обоє операнда рівні:

op1

op2

rez

приклад

0

0

0

op1=01010101b

0

1

1

xor

1

0

1

op2=11001101b

1

1

0

rez=10011000b

В асемблері логічні команди реалізують чотири основні операції математичної логіки (таблиця 1):

  • логічне заперечення (NOT);

  • логічне множення (AND, TEST);

  • логічне додавання (OR);

  • додавання по модулю 2 (XOR).

Логічне заперечення — це операція одномісна (їй потрібний тільки один операнд), всі інші — двомісні.

Для асемблера, як ми знаємо, поняття тип даних (у тім смислу, як це розуміється в алгоритмічних мовах) не існує. Тому побітові операції застосовуються відповідно до правил математичної логіки до кожного біта окремо, починаючи з молодшого біта і закінчуючи старшим бітом. Для двомісних команд (відповідно до загальноприйнятого в асемблері правилами) відбувається установка (або очищення) відповідних бітів регістра прапорів (+). Можливі сполучення операндів такі ж, як і приведені в таблиці 1. Команда not уміст регістра прапорів не змінює

Таблиця 1. - Логічні команди в асемблері.

Синтаксис

Біти регістра прапорів

OF

SF

ZF

PF

CF

AND

приймач, джерело

0

+

+

+

0

TEST

приймач, джерело

0

+

+

+

0

OR

приймач, джерело

0

+

+

+

0

XOR

приймач, джерело

0

+

+

+

0

NOT

приймач

-

-

-

-

-

У якості першого операнда використовують регістр мікропроцесора, за винятком сегментного, або комірка пам'яті. Другим операндом може бути регістр мікропроцесора, за винятком сегментного, комірка пам'яті або безпосереднє значення. Не допускається одночасне використання двох комірок пам'яті як операндів.

<Джерело> у логічних командах із двома операндами звичайно іменується маска. Звідси і термін маскування розрядів. Значення маски звичайно беруть або в двійковому, або в шістнадцятирічнім виді. Воно (значення) означає, що у відповідному біті встановлена одиниця (див. табл. 2), відповідно до малюнка 1.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

8

0

Рисунок 1. – Формування маски

Таблиця 2. - Шістнадцятирічні маски

Номер біта

Значення маски (HEX)

Номер біта

Значення маски (HEX)

0

0001

8

0100

1

0002

9

0200

2

0004

10

0400

3

0008

11

0800

4

0010

12

1000

5

0020

13

2000

6

0040

14

4000

7

0080

15

8000

Увага. Логічні команди не мають нічого спільного (у смислі десяткового результату) зі звичними для людини арифметичними операціями. Інтерпретація результату — справа людини, а не комп'ютера (для нього рідними є тільки двійкові числа!).

3.1.1 Використання команд логічного множення AND і TEST

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

Різниця між командами and і test полягає в тім, що команда test використовується для організації логічного порівняння операндів (за аналогією з командою арифметичного порівняння операндів cmp) з наступним умовним переходом, тому вона вміст приймача не змінює.

3.1.2 Використання команди логічного додавання OR

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

3.1.3 Використання команди додавання по модулі 2 — X0R

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

3.1.4 Команда логічного заперечення NOT

Це досить проста команда, що не має особливостей, а просто змінює значення кожного біта на протилежне

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