Напишите программу, которая решает какую-либо задачу из нижеприведенного списка. В качестве варианта используйте номер рабочего места. Соответствие номеров вариантов и заданий приводится в таблице 3.
1. Напишите программу, которая использует рекурсию для вычисления факториала числа N. N!=N(N-1)(N-2)…*3*2*1. Заметьте, что N!=N*(N-1)! Программа включает подпрограмму Factor, которая вызывает сама себя до тех пор, пока желаемый факториал не будет получен. Основная программа должна ввести параметр N, задаваемый с помощью переключателей, затем передать N как параметр, размещая его в стеке. Подпрограмма может вернуть результат через регистр R4, либо через стек. Программа Factor вызывает сама себя. Перед вызовом не забудьте сохранять адрес возврата (регистр ra) в стеке и восстанавливать после возврата. Покажите результат работы программы преподавателю.
2. Напишите программу, которая осуществляет вывод на LCD содержимого области памяти, представленного в шестнадцатеричном виде. Оформите ее в виде подпрограммы, которой передаются параметры: начальный адрес области памяти, количество байтов и номер позиции на LCD дисплее.
|
|
3. Напишите программу, которая осуществляет вывод на 7-сегментные индикаторы содержимого области памяти, представленного в шестнадцатеричном виде. Оформите ее в виде подпрограммы, которой передаются параметры: начальный адрес области памяти, количество отображаемых символов.
4. Напишите программу, которая осуществляет упорядочивание чисел в списке в убывающем порядке. Каждое число представляет собой 32-разрядное число без знака. Оформите ее в виде подпрограммы, которой передаются параметры: адрес списка в ОП, число слов в списке.
5. Напишите программу, вычисляющую первые n чисел Фибоначчи. Числа 32 – разрядные. Они вычисляются по формуле An=An-1+An-2 и и записываются в оперативную память. Первые числа выглядят следующим образом: 0,1,1,2,3,5,8…. Оформите в виде подпрограммы, которой передаются параметры: адрес ОП, число n.
6. Напишите программу, вычисляющую максимальное количество повторяющихся нулевых и единичных разрядов в числе, хранящемся в ОП. Адрес числа может быть произвольным. Оформите в виде подпрограммы, передав в качестве параметров: адрес ОП и размер числа в байтах (не более 4). Вывод найденных значений осуществите на красные и зеленые светодиоды.
7. Напишите программу, вычисляющую количество положительных и отрицательных фронтов в числе, хранящемся в ОП. Например, число 0b10010110 содержит 2 положительных и 3 отрицательных фронта. Адрес числа может быть произвольным. Оформите в виде подпрограммы, передав в качестве параметров адрес ОП и размер числа в байтах (не более 4). Вывод найденных значений осуществите на красные и зеленые светодиоды.
Таблица 3 Варианты заданий к лабораторной работе № 2
Номер рабочего места | Название стенда | Номер задания |
VT-L14 | NEEK | |
VT-L13 | miniDiLab | |
VT-L12 | DiLab | |
VT-L11 | DE2-70 | |
VT-L10 | DE2-70 | |
VT-L9 | DE0 | |
VT-L8 | DE0 |