Professional Documents
Culture Documents
Lab 3
Lab 3
Звіт
до лабораторної роботи №3
з дисципліни: “Організація та функціонування комп’ютерів”
на тему: “Дослідження інструкцій переходів і зсувів. Організація циклів”
Львів
2014
Тема: Дослідження інструкцій переходів та зсувів. Організація циклів.
Мета: Засвоїти використання основних операцій зсуву і переходів у системі команд
навчального комп’ютера.
Теоретичні відомості
Організація циклів:
Для організації циклу засобами процесора DeComp в одній з комірок пам’яті
необхідно розмістити лічильник циклів. Лічильник циклів це число, яке може мати значення
N (якесь число) або 0 (const = N або const = 0). Відповідно, у циклі необхідно кожний раз
лічильник зменшувати (або збільшувати) на 1 і за допомогою інструкції умовного переходу
перевіряти, чи потрібно зробити цикл ще раз.
У результаті виконання програми я отримав число (1000 0000 0000 0111)2 в акумуляторі. В
результаті виконання програми в регістрі ознак засвітився прапорець S.
Мнемонічни Код, що
№ Коментар
й запис обробляється
Вибір адреси першої інструкції і занесення
1 ЛАІ→РА 0000 0000 0000
її до Регістра Адреси
Вибір коду інструкції ROL з Регістра
2 РА→РД 1111 1110 0000 0000
Адреси і занесення його до Регістра Даних
Декодування інструкції у Регістрі
3 РД→РІ 1111 1110 0000 0000
Інструкцій
Запис результату в Акумулятор, після
4 А→А 0110 0000 0000 0000
циклічного зсуву вліво
Перевірка результату в Регістрі Ознак і
5 А→РО 000
встановлення прапорців
6 ЛАІ+1→ЛАІ 0000 0000 0001 підготовка адреси нової інструкції
У результаті виконання програми я отримав число (0110 0000 0000 0000)2 в акумуляторі. В
регістрі ознак змін не відбулося.
початок
ввід а, b
Так
(a-b)>0
Ні
c=b
c=a
вивід с
кінець
2-й 000000001011 0000000000001010 1111 1111 1111 1011 0011 000000001011 000000000010 011
3-й 000000000010 1010 0000 0000 0110 1111 1111 1111 1011 1010 0000 0000 0110 000000000110 011
5-й 000000001100 0000000000001010 0000000000001010 0001 0000 0000 1100 0000 0000 1000 011
6-й 0000 0000 1000 0111 1100 0000 0000 0000000000001010 0111 1100 0000 0000 0000 0000 1000 011
ввід А
B=15; K=0
зсув вліво
числа А
Так
С=0 ?
Ні
K=K+1
b=B-1
Ні
B=0 ?
Так
Вивід K
кінець
А - задане число; K-кількість одиниць у числі А; B – лічильник циклу; С – ознака виходу за межі
розрядної сітки.
1.Адр.12 –K
2.Адр.13 – 1
3. Адр.14 –B
1.Записую двійковий код числа 1510 (0000 0000 0000 1111)2 в 16 комірку
2. У набірне поле записую адресу нульової комірки і натискаю кнопку «Лічильник Адреси
Інструкції».
3.Обираю автоматичний режим програми натискаю на кнопку «Пуск».
А→ 1510 →(0000 0000 0000 1111)2
ЛАІ→ (0000 0000 0000)
№ комірки Двійковий код Мнемонічний запис
Коментар
пам’яті інструкції інструкції
0 0000 0000 0001 0000 LOAD 16 Завантажити до акумулятора змінну A
1 1111 1100 0000 0000 RCL Зсуваємо число на один розряд вліво
2 0001 0000 0001 0000 STORE 16 Запис нового значення А
Умовний перехід на 8 комірку,
3 1100 0000 0000 0111 JNC 7 якщо С=0.Інакше
виконується наступний оператор
Завантаження нашого
4 0000 0000 0000 1100 LOAD 12
лічильника до акумулятора
Додаємо до нашого
5 0010 0000 0000 1101 ADD 13
Лічильника 1
Запис нового
6 0001 0000 0000 1100 STORE 12
значення лічильника
Завантаження лічильника циклу
7 0000 0000 0000 1111 LOAD 14
До акумулятора
Віднімаємо від нашого
8 0011 0000 0000 1101 SUB 13
Значення 1
Запис нового значення
9 0001 0000 0000 1111 STORE 14
Лічильника
10 1000 0000 0000 0000 JNZ 0 Перевіряємо умову виконання циклу
11 0111 1100 0000 0000 HALT Припиняємо програму
Висновок:
Після виконання даної лабораторної роботи я навчився використовувати основні
операції зсуву та переходу у системі команд навчального комп’ютера, навчився
організовувати цикли, створивши власну програму.