Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 1_6.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
69.59 Кб
Скачать

6.5. Визначення більшого із двох додатних чисел

У системах автоматичного контролю та керування виникають потреби визначення найбільшого чи найменшого із декількох значень. Знаходження максимального із декількох чисел зводиться до послідовного визначення більшого із двох чисел. Розглянемо алгоритм, блок-схема якого показана на рис. 7.4, визначення більшого із двох додатних чисел, одне із яких знаходиться в акумуляторі, а друге – в регістрі В. Необхідно знайти більше число і помістити його в регістр В, а менше в акумулятор. Програма мовою Ассемблер і в машинних кодах наведена в табл.7.5. Порівняння двох чисел за алгоритмом і  в програмі здійснюється двома  командами:  СМР - віднімання без реєстрації різниці (порівняння), але з фіксацією ознак результату віднімання в 2 і С бітах, і JС М1 - умовний перехід за значенням С-біта. Команда СМР встановлює С=1, якщо А<В, С=0, якщо А>В.

Тому, якщо А>В, необхідно вміст А і В взаємно поміняти; якщо навпаки, то ні, що і виконує наведена в табл.7.5 програма.

Таблиця 7.5

Адреса

16-й код

Мітка

Мнемокод

Пояснення

8000

В8

 

СМР В

Порівняння чисел: А - В

8001

DА 0780

 

JC МІ1

Якщо А<В, то на М1

8004

4F

 

МОV С,А

Взаємний обмін

8005

78

 

МОV А,В

вмісту регістрів

8006

41

 

МОV В,С

А і В

8007

76

М1

НLТ

Зупинка

6.6. Організація лічильників циклів

Серед різноманітних програм – лінійних, з розгалуженнями і циклічних найбільш уживаними є циклічні програми, в яких певна послідовність команд (цикл) виконується задану кількість разів. Розглянемо організацію лічильника циклів – ту частину програми, яка реалізує виконання заданої кількості разів певної групи команд, не вникаючи в суть цих команд.

Циклічні програми бувають, як відомо, одно- і багатоциклічними, з вкладеними циклами. У цьому прикладі розглядається одноциклічна програма, в якій лічильником циклів служить регістр В. Блок-схема алгоритму організації лічильника на N циклів показана на рис.7.5, а відповідна програма в табл.7.6. Першою командою програми в регістр В заноситься число N – кількість циклів. Частина програми, яку необхідно виконати N разів, починається командою ХRА А з адресою 1002 і закінчується командою JNZ М1. Після кожного виконання цієї групи команд вміст лічильника (регістру В) зменшується на одиницю командою DDR В – декремент регістру (адреса 10А2). Поки в регістрі В не нуль (Z=0) команда умовного переходу JNZ М1 (перехід за ненульовим результатом) скеровує виконання програми на мітку М1 – чергове виконання циклу, початком якого є адреса 1002. Ця адреса розміщена в другому і третьому байтах команди умовного переходу.

Таблиця 7.6.

Адреса

16-й

код

Мітка

Мнемокод

Пояснення

1000

0610

 

МVІ В,10

Встановлення лічильника

1002

АF

 

М1

 

ХRА А

Обнулення С-біта

 

10А1

57

 

МОV D,А

Пересилання з А в D

10А2

05

 

DСR В

Декремент вмісту В

10АЗ

С20210

 

JNZ М1

Якщо Z-біт=0, то на М1

10А6

76

 

НLT

Зупинка

 

Рис.7.5. Блок-схема алгоритму лічильника циклів

 

Якщо результат декрементування вмісту регістру В – нуль (всі цикли відпрацьовані), то програма переходить до виконання чергової команди і на закінчення.