Добавил:
інстаграм _roman.kob, курсові роботи з тєрєхова в.в. для КІ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
звіт лаб3.docx
Скачиваний:
12
Добавлен:
31.05.2020
Размер:
64.86 Кб
Скачать

Виконання:

Якщо а > b, то с := a – b, інакше c := a + b;

Змінна а знаходиться в 11-й комірці, змінна b – в 12-й, а змінна с збережеться в 13-й.

№ комірки пам’яті

Двійковий код інструкції

Мнемонічний запис інструкції

Коментар

0000 0000 0000 0000

0000 0000 0000 1011

LOAD 11

Завантажити до А змінну а

0000 0000 0000 0001

0011 0000 0000 1100

SUB 12

Відняти від змінної а змінну b

0000 0000 0000 0010

1100 0000 0000 0111

JNC 7

Якщо С = 1 (a < b), то перейти до c := a + b

0000 0000 0000 0011

0000 0000 0000 1011

LOAD 11

Завантажити до А змінну а

0000 0000 0000 0100

0010 0000 0000 1100

ADD 12

Додати до змінної а змінну b

0000 0000 0000 0101

0001 0000 0000 1101

STORE 13

Зберегти результат (змінну с)

0000 0000 0000 0110

0111 1100 0000 0000

HALT

Зупинити програму

0000 0000 0000 0111

0000 0000 0000 1011

LOAD 11

Завантажити до А змінну а

0000 0000 0000 1000

0011 0000 0000 1100

SUB 12

Відняти від змінної а змінну b

0000 0000 0000 1001

0001 0000 0000 1101

STORE 13

Зберегти результат (змінну с)

0000 0000 0000 1010

0111 1100 0000 0000

HALT

Зупинити програму

Блок-схема програми:

Для того щоб перевірити умову а > b, я виконую віднімання чисел ( а – b ) і перевіряю значення прапорця С за допомогою інструкції JNC. Якщо а > b, то при відніманні ми отримаємо додатне значення, прапорець С не активується і програма виконає віднімання чисел і збереження результату. Якщо а < b, то при відніманні відбудеться переповнення розрядної сітки і прапорець С активується. Тоді виконається додавання чисел і збереження результату.

Дослідження в по кроковому режимі:

Для дослідження дам значення змінним а та b і занесу їх значення до комірок 11 та 12. Нехай а = 610, b = 810. Так як a < b, в результаті ми маємо отримати суму цих чисел, тобто 1410.

610 = 1102;

810 = 10002;

1410 = 11102;

Крок

РА

РД

А

РІ

ЛАІ

РО

1-й

0000 0000 1011

0000 0000 0000 0110

0000 0000 0000 0110

0000 0000 0000 1011

0000 0000 0001

000

2-й

0000 0000 1100

0000 0000 0000 1000

1111 1111 1111 1110

0011 0000 0000 1100

0000 0000 0010

011

3-й

0000 0000 0010

1100 0000 0000 0111

1111 1111 1111 1110

1100 0000 0000 0111

0000 0000 0011

011

4-й

0000 0000 1011

0000 0000 0000 0110

0000 0000 0000 0110

0000 0000 0000 1011

0000 0000 0100

011

5-й

0000 0000 1100

0000 0000 0000 1000

0000 0000 0000 1110

0010 0000 0000 1100

0000 0000 0101

000

6-й

0000 0000 1101

0000 0000 0000 1110

0000 0000 0000 1110

0001 0000 0000 1101

0000 0000 0110

000

7-й

0000 0000 0110

0111 1100 0000 0000

0000 0000 0000 1110

0111 1100 0000 0000

0000 0000 0110

000

Отже, як можемо побачити, в результаті роботи програми значення акумулятора відповідає сумі двох цих чисел а і b. Тобто, в даному випадку програма спрацювала правильно.

Тепер перевіримо, що буде якщо ми поміняємо значення змінних місцями. Тобто а = 810, b = 610. Так як число а більше числа b, в результаті ми маємо отримати їх різницю, тобто, число 210

210 = 102;

Крок

РА

РД

А

РІ

ЛАІ

РО

1-й

0000 0000 1011

0000 0000 0000 1000

0000 0000 0000 1000

0000 0000 0000 1011

0000 0000 0001

000

2-й

0000 0000 1100

0000 0000 0000 0110

0000 0000 0000 0010

0011 0000 0000 1100

0000 0000 0010

000

3-й

0000 0000 0010

1100 0000 0000 0111

0000 0000 0000 0010

1100 0000 0000 0111

0000 0000 0111

000

4-й

0000 0000 1011

0000 0000 0000 1000

0000 0000 0000 1000

0000 0000 0000 1011

0000 0000 1000

000

5-й

0000 0000 1100

0000 0000 0000 0110

0000 0000 0000 0010

0011 0000 0000 1100

0000 0000 1001

000

6-й

0000 0000 1101

0000 0000 0000 0010

0000 0000 0000 0010

0001 0000 0000 1101

0000 0000 1010

000

7-й

0000 0000 1010

0111 1100 0000 0000

0000 0000 0000 0010

0111 1100 0000 0000

0000 0000 1010

000

І в цьому випадку програма спрацювала правильно. Через те, що a > b, при їх відніманні прапорець С не активувався, бо результатом є додатне число яке не переповнює розрядну сітку. Через це, інструкцією JNC 7 відбувся умовний перехід до інструкції, що знаходиться в 7-й комірці пам’яті. В першому випадку прапорець С активувався, а інструкція JNC робить умовний перехід лише тоді, коли С = 0. Тому програма продовжувала виконуватися без переходу.

Розробити алгоритм і написати програму в інструкціях симулятора DeComp, що для довільного числа "А" з комірки пам’яті за адресою "N" підраховує кількість"1" - для непарних номерів із списку групи, і підраховує кількість "0" - для парних номерів із списку групи. Програма виконується в автоматичному режимі.

Соседние файлы в предмете Архитектура ЭВМ