Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
практичні по МПС1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
5.91 Mб
Скачать

Контрольні запитання:

  1. Які дії виконує команда логічне множення?

  2. Які діє виконує команда логічного додавання?

  3. Для чого використовують команду XOR?

  4. Які дії виконує команда логічного заперечення?

  5. Написати програму мовою Асемблер, яка обчислює логічне І для 1 та 0.

  6. Які дії виконує наступна програма:

  1. Що називають розрядною матрицею або масивом бітів?

  2. Яку команду застосовують при встановлені бітів масиву?

  3. Яку команду застосовують, щоб скинути деякі біти?

Форма звіту

  1. Тема, мета роботи.

  2. Текст завдання для виконання.

  3. Порядок виконання роботи.

  4. Хід виконання роботи.

  5. Висновок по роботі.

ПРАКТИЧНА РОБОТА №12

Тема: Конструкція «IF THEN» — вибір шляху. Умовний та безумовний перехід.

Мета: Вивчення структури команд СМР і TEST, JMP, Jx

Задачі: Створювання підпрограм із використанням команд СМР і TEST, JMP, Jx.

Обладнання для виконання роботи:

  1. Методичні вказівки що до виконання лабораторної роботи;

  2. Персональний комп’ютер;

  3. Відповідне програмне забезпечення (Windows 98, Microsoft Office 2000, XP, 2003, MS Excel, емулятор типу Emu8086 v2.57).

Теоретичні основи:

Кожна програма складається з однієї або декількох послідовностей окремих елементарних команд. Послідовність тут означає ділянку програми, де команди виконуються одна за одною, без будь-яких переходів. У ширшому контексті мови програмування високого рівня можна розглядати цілу програму як послідовність, що складається як з елементарних команд, так і з конструкцій, що управляють, — умовних і ітераційних.

Якщо програма не містить інших конструкцій, окрім послідовності елементарних команд, вона називається лінійною.

Рис. 12.1 Послідовна обробка команд

У мовах програмування високого рівня конструкція вибору відома як оператор IF-THEN. Ця конструкція дозволяє вибрати наступну дію з декількох можливих варіантів залежно від виконання певної умови. У мові асемблера механізм вибору реалізований за допомогою команд порівняння умовного і безумовного переходів.

Рис. 12.2 Вибір наступної команди

Команди СМР і TEST використовуються для порівняння двох операндів. Операндами можуть бути як регістри, так і адреси пам'яті, розмір операнда — 8, 16 або 32 біта.

СМР о1, о2

Команда СМР — це скорочення від «compare», «порівняти». Вона працює подібно SUB: операнд о2 віднімається з о1. Результат ніде не зберігається, команда просто змінює регістр ознак. Команда СМР може використовуватися як для порівняння цілих беззнакових чисел, так і для порівняння чисел із знаком.

Команда TEST працює подібно СМР, але замість віднімання вона обчислює порозрядне І операндів. Результат інструкції — змінені прапори регістра ознак. Ми можемо використовувати TEST для перевірки значень окремих бітів в масиві бітів.

Команда безумовного переходу — JMP.

Найпростіший спосіб змінити послідовність виконання команд полягає у використанні команди jmp — так званої команди безумовного переходу. Вона перезаписує покажчик команд (регістр IP або CS), що заставляє процесор «перемкнутися» на виконання команди за вказаною адресою. Формат команди такий:

JMP [тип_перехода] операнд

Команда JMP — аналог конструкції GOTO, яка використовується у високорівневих мовах програмування. Команді потрібно передати один обов'язковий операнд — адресу в пам'яті, з якої процесор повинен продовжити виконання програми. Операнд може бути вказаний явно (безпосереднє значення адреси) або бути регістром загального призначення, в який завантажена необхідна адреса.

Залежно від «відстані» переходи бувають трьох типів: короткі (short), ближні (near) і далекі (far). Тип переходу задається необов'язковим параметром інструкції jmp. Якщо тип не заданий, за умовчанням використовується тип near.

Максимальна «довжина» короткого переходу (тобто максимальна відстань між поточною і цільовою адресою) обмежена. Другий байт інструкції (операнд) містить лише одне 8-розрядне значення, тому цільова адреса може бути в межах від -128 до 127 байтів. При переході виконується знакове розширення 8-розрядного значення і його додавання до поточного значення Е(1Р).

«Довжина» ближнього переходу (near) залежить лише від режиму процесора. У реальному режимі міняється лише значення IP, тому ми можемо «подорожувати» лише в межах одного сегменту (тобто в межах 64 Кб); у захищеному режимі використовується EIP, тому цільова адреса може бути де завгодно в межах 4 Гб адресного простору.

Перехід типа far модифікує окрім IP ще і сегментний регістр CS, який використовується при обчисленні фактичної адреси пам'яті. Тому команда переходу повинна містити нове значення CS.

Умовні переходи — Jx.

Загальний формат команд умовного переходу наступний:

Jx мітка_призначення

Найбільш команди, що часто зустрічаються:

Рис. 12.3 Звідна таблиця команд умовного переходу

Аби краще запам'ятати імена команд, запам'ятаєте декілька англійських слів: equal — рівно, above — більше, below — нижче, zero — нуль, greater — більше, less — менше. Таким чином, JE — Jump if Equal (Перехід, якщо Рівно), JNE — Jump if Not Equal (Перехід, якщо Не Рівно), JA — Jump if Above (Перехід, якщо більше) і так далі.

Приклад: Покажемо беззнакове порівняння CL і AL. Якщо обоє значення рівні, то в регістр BL поміщається значення 1, якщо AL більше, ніж CL, то BL=2, а якщо AL менше CL, то BL=3.