Главная страница

ЛАБОРАТОРНА РОБОТА №2. Лабораторна робота 2. Розгалуження в програмі і переадресація


Скачать 53.78 Kb.
НазваниеЛабораторна робота 2. Розгалуження в програмі і переадресація
Дата29.10.2022
Размер53.78 Kb.
Формат файлаdocx
Имя файлаЛАБОРАТОРНА РОБОТА №2.docx
ТипЛабораторна робота
#761248

Лабораторна робота №2. РОЗГАЛУЖЕННЯ В ПРОГРАМІ І ПЕРЕАДРЕСАЦІЯ


Ціль:Практична реалізація алгоритмів, шляхи у яких залежить від вихідних даних, з допомогою команд умовної передачі управління. Вирішення завдань, пов'язаних з обробкою масивів, застосуванням спеціальних видів адресації.
    1. ПРОГРАМУВАННЯ ПРОЦЕСУ, ЩО Розгалужується

приклад

Як приклад (дещо спрощеного порівняно із завданнями лабораторної роботи № 2) розглянемо програму обчислення функції, причому x вводиться з пристрою введення IR, результат виводиться на OR.



Схема алгоритму розв'язання задачі показана малюнку 3.1.



Малюнок 3.1- Схема алгоритму прикладу

У даній лабораторній роботі використовуються двослівні команди з безпосередньою адресацією, що дозволяють оперувати негативними числами та числами за модулем, що перевищують 999, як безпосереднього операнда.

Оцінивши розмір програми приблизно 20 - 25 команд, відведемо для області даних осередки ОЗУ, починаючи з адреси 030. Складена програма з коментарями представлено вигляді таблиці (таблиця 3.1).

Таблиця 3.1 – Приклад програми

Адр.

Команда

Примітка

Менімокод

Код

000

IN

01 0 000

Введення х

001

WR 30

22 0 030

Розміщення х у ОЗУ

002

SUB #16

24 1 016

Порівняння у кордоні (х-16)

003

JS 010

13 0 010

Перехід за негативним результатом

004

RD 30

21 0 030

Обчислення за формулою

005

SUB #11

24 1 011




006

WR 31

22 0 031




007

MUL 31

25 1 125




008

SUB #125

24 1 125




009

JMP 020

10 0 020

Перехід на виведення результату

010

RD 30

21 0 030

Обчислення за другою формулою

011

MUL 30

25 0 030




012

WR 31

22 0 031




013

RD 30

21 0 030




014

MUL #72

25 1 072




015

ADD 31

23 0 031




016

ADI 106400

43 0 000




017




106400




018

DIVI 100168

16 0 000




019




100168




020

OUT

02 0 000

Виведення результату

021

HTL

09 0 000

Стоп
Завдання

Розробити програму обчислення і виведення значення функції для аргументу х, що вводиться з IR значення аргументу. Функції та допустимі межі зміни аргументу наведені у таблиці 3.2, варіанти завдань у таблиці 3.3.



  1. Виходячи з допустимих меж зміни аргументу функцій (таблиця 3.2) і значення параметра а для свого варіанту завдання (таблиця 3.3) виділити на числовій осі Ох області, в яких функція обчислюється за представленою в п. 1 формулі, і неприпустимі значення аргументу. На неприпустимих значеннях аргументу програма має видавати на OR максимальне негативне число: 199999.

  1. Ввести текст програми у вікно Текст програми, при цьому можливе набір та редагування тексту безпосередньо у вікні Текст програми або завантаження тексту з файлу, підготовленого в іншому редакторі.

  2. Ассемблировать текст програми, у разі потреби виправити синтаксичні помилки.

  3. Налагодити програму. Для цього:

  • записати в IR значення аргументу х> а (в області допустимих значень);

  • записати в PC стартову адресу програми;

  • перевірити правильність виконання програми (тобто правильність результату та адреси зупинки) в автоматичному режимі. У разі помилки виконати пп.5, гта 5, д; інакше перейти до п. 5, е;

  • записати в PC стартову адресу програми;

  • спостерігаючи виконання програми у режимі Крок, знайти команду, що є причиною помилки; виправити її; виконати пп. 5, а - 5, в;

  • записати в IR значення аргументу х < а (в області допустимих значень); виконати пп. 5, б і 5,;

  • записати в IR неприпустиме значення аргументу х та виконати пп. 5 б і 5 ст.

  1. Для обраного допустимого значення аргументу х спостерігати виконання налагодженої програми як Крок і записати у вигляді таблиці вміст регістрів ЕОМ перед виконанням кожної команди.



Таблиця 3.2 – Функції

k

F(x)

k

F(x)

1



5



2



6



3



7



4



8



Таблиця 3.3 – Варіанти завдань

№ варіанта

i

j

a

№ варіанта

i

j

a

1

2

1

12

8

8

6

30

2

4

3

-20

9

2

6

25

3

8

4

15

10

5

7

50

4

6

1

12

11

2

4

18

5

5

2

50

12

8

1

12

6

7

3

15

13

7

6

25

7

6

2

11

14

1

4

5
Зміст звіту

  1. Формулювання варіанта завдання.

  1. Граф-схема алгоритму розв'язання задачі.

  2. Розміщення даних у ОЗП.

  3. Програма у вигляді таблиці.

  4. Послідовність станів регістрів ЕОМ під час виконання програми як Крок одного значення аргумента.

  5. Результати виконання програми для кількох значень аргументу, вибраних самостійно.
Контрольні питання

  1. Як працює механізм непрямої адресації?

  1. Яка комірка буде адресована в команді з непрямою адресацією через комірку 043, якщо вміст цієї комірки дорівнює 102347?

  2. Як працюють команди передачі?

  3. Що входить у поняття "налагодження програми"?

  4. Які способи налагодження програми можна реалізувати у моделі?
    1. ПРОГРАМУВАННЯ ЦИКЛУ З ПЕРЕАДРЕСАЦІЄЮ

приклад

Розробити програму обчислення суми елементів масиву чисел Су, С2,.., Сn. Вихідними даними в цьому завданні є: п - кількість підсумованих чисел і Су, С2, …, Сп - масив підсумованих чисел. Зауважимо, що має виконуватися умова п > 1, тому що алгоритм передбачає принаймні одне підсумовування. Крім того, передбачається, що сумовані числа записані в ОЗУ поспіль, тобто в осередки пам'яті з послідовними адресами. Результатом є сума S.

Складемо програму для обчислення суми з наступними конкретними параметрами: число елементів масиву-10, елементи масиву розташовані в осередках ОЗП за адресами 040, 041, 042,..., 049. Проміжні змінні, що використовуються для вирішення завдання, мають наступний зміст: Ai - адреса числа Сi,i є {l, 2,..., 10}; ОЗУ(Аi) – число за адресою Аi, S – поточна сума; k – лічильник циклу, що визначає число повторень тіла циклу.

Розподіл пам'яті такий. Програму розмістимо у осередках ОЗУ, починаючи з адреси 000, приблизна оцінка обсягу програми - 20 команд; проміжні змінні: Аi - в осередку ОЗУ з адресою 030, k - за адресою 031, S - за адресою 032. Схема алгоритму програми показано на малюнку 3.2, текст програми з коментарями наведено в таблиці 3.4.


Малюнок 3.2- Схема алгоритму для прикладу

Таблиця 3.4 - Текст програми прикладу

Адр.

Команда

Примітка

000

RD #40

Завантаження початкової адреси масиву 040

001

WR 30

в комірку 030

002

RD #10

Завантаження параметра циклу k=10 у комірку 031

003

WR 31




004

RD #0

Завантаження початкового значення суми S = ​​0

005

WR 32

в комірку 032

006

M1: RD 32

Додавання

007

ADD @30

до поточної суми

008

WR 32

чергового елементу масиву

009

RD 30

Модифікація поточного

010

ADD #1

адреси масиву

011

WR 30

(перехід до наступної адреси)

012

RD 31

Зменшення лічильника

013

SUB #1

(Параметра циклу)

014

WR 31

на 1

015

JNZ M1

Перевірка параметра циклу та перехід при k≠0

016

RD 32

Виведення

017

OUT

результату

018

HTL

Стоп
Завдання

  1. Написати програму визначення заданої характеристики послідовності чисел С1, С2,.., Сп. Варіанти завдань наведено у таблиці 3.5.

  1. Записати програму в мнемокодах, ввівши її у полі вікна Текст програми.

  2. Зберегти набрану програму у вигляді текстового файлу та провести асемблювання мнемокодів.

  3. Завантажити в ОЗУ необхідні константи та вихідні дані.

  4. Налагодити програму

Таблиця 3.5 - Завдання за варіантами

варіанта

Характеристики послідовності

1

2

1

Кількість парних чисел

2

Номер мінімальної кількості

3

Добуток усіх чисел

4

Номер першого від'ємного числа

5

Кількість чисел рівних С1

6

Кількість негативних чисел

7

Максимальне від'ємне число

8

Номер першого позитивного числа




Продовження таблиці 3.5

1

2

9

Мінімальна позитивна кількість

10

Номер максимальної кількості

11

Кількість непарних чисел

12

Кількість чисел менших С1

13

Різниця сум парних та непарних елементів масиву

14

Відношення сум парних та непарних елементів масиву
Зміст звіту

  1. Формулювання варіанта завдання.

  1. Граф-схема алгоритму розв'язання задачі.

  2. Розподіл пам'яті (розміщення в ОЗУ змінних, програми та необхідних констант).

  3. програма.

  4. Значення вихідних даних та результату виконання програми.
Контрольні питання

  1. Як організувати цикл у програмі?

  1. Що таке параметр циклу?

  2. Як поведеться програма, наведена в табл. 2.7, якщо в ній буде відсутня команда wr 31 на адресу 014?

  3. Як поведеться програма, наведена в табл. 2.7, якщо мітка m1 буде поставлена ​​на адресу 005? 007?


написать администратору сайта