При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив)

Задания к лабораторным работам по курсу

«Микропроцессорные средства систем автоматизации»

Составитель: Иоффе В.Г.

Самара 2011

ВНИМАНИЕ! Все задания оформить как подпрограммы.

Характеристики подпрограмм хранить в свободной зоне резидентной памяти данных

При работе с массивами непременно инспектировать длину массива на нуль(«пустой» массив)

1.Массив из N 16-разрядных чисел ,находящихся во наружном ОЗУ, рассортировать по знаковому При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) уровню. Положительные числа поместить в одну область памяти, а отрицательные - в другую. 1-ые элементы массива должны содержать его размер.

2. Произвести сопоставление 2-ух 16-разрядных кодов, находящихся во наружном ОЗУ, и сформировать признаки результата ( 0-числа равны, 1- 1-ое число больше, 2- 2-ое число больше). В качестве регистра признака можно избрать хоть какой При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) из РОНов.

3. Выполнить операцию вычитания 16-разрядных чисел, находящихся во наружном ОЗУ, и сформировать признаки результата (0- итог равен 0, 1- итог отрицательный, 2- итог положительный, 3- арифметическое переполнение). В качестве регистра признаков можно использовать хоть какой РОН.

4.Конвертировать двухбайтовые двоичные данные, находящиеся во наружном ОЗУ, в двоично-десятичный код .Один из методов состоит При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) в поочередном вычитании двоичных эквивалентов десятичных чисел 10000, 1000, 100, 10 и подсчета числа соответственных разрядов. Константы оформить в виде таблицы, , лежащей в резидентной памяти программ РПП. Итог поместить в резидентную память данных РПД.

5.Конвертировать четырехразрядный двоично-десятичный код, находящийся во наружном ОЗУ, в двоичный. Один из методов преобразования состоит в поочередном сложении При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) двоичных эквивалентов десятичных чисел 10000, 1000, 100, 10 в согласовании со значением двоично-десятичных разрядов. Константы оформить в виде таблицы, лежащей в резидентной памяти программ РПП. Итог поместить в РПД.

6.Вычислить средне-арифметическое N 16-разрядных кодов, находящихся в поочередных ячейках наружного ОЗУ. N задается из ряда 2,4,8,16,... В процессе суммирования держать под контролем перенос из старшего При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) разряда при вычислении окончательного результата. Итог поместить в РПД.

7.В массиве, состоящим из N 16-разрядных кодов, найти малый элемент и зафиксировать его адресок. Массив находится во наружном ОЗУ .Малый элемент и его адресок сохранить в РПД.

8. Из 16-разрядного массива, находящегося во наружном ОЗУ, избрать элементы, отвечающие условию При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) Ni< Nдоп, и сформировать новый массив. Сначала массива указать его длину. Nдоп хранится в фиксированной ячейке памяти команд.

9. Выполнить операцию арифметического правого сдвига N-байтового числа на К разрядов. Начальные данные хранятся в наружном ОЗУ, итог записывается во наружное ОЗУ. Длина числа и количество сдвигов менее 255.

10. Выполнить операцию сложения При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) 2-ух массивов, находящихся во наружном ОЗУ. Элемент массива представляет собой четырехразрядный двоично-десятичный код. Адреса массивов - произвольные, длина- менее 255. При сложении держать под контролем переполнение и в случае его появления итог не фиксировать. Подсчитать число частей и поместить его в начало результирующего массива.

11. Выполнить операцию вычитания 2-ух массивов, находящихся во При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) наружном ОЗУ. Элемент массива представляет собой четырехразрядный двоично-десятичный код. Адреса массивов- произвольные, длина- менее 255. Подсчитать число частей и поместить его в начало результирующего массива. Вычитание производится методом сложения уменьшаемого с дополнительным кодом вычитаемого. Дополнительный код появляется 99h - (вычитаемое)+1.В процессе вычитания держать под контролем, чтоб (вычитаемое)≤(уменьшаемого При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив)). В неприятном случае в соответственной строке записать код 0FFFFh.

12.Вычислить поэлементно средне-арифметическое 2-ух массивов 16-разрядных кодов, расположенных во наружном ОЗУ. Длина массива- менее 255. Нужно учитывать, что в итоге сложения может быть переполнение.

13.В массиве, хранящемся во наружном ОЗУ и состоящим из N 16-разрядных кодов, найти наибольший элемент и зафиксировать его При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) адресок . Эти данные поместить в РПД

14. Выполнить операцию арифметического левого сдвига N-байтового числа на К разрядов. Начальные данные и итог должны хранится во наружном ОЗУ. Длина числа и количество сдвигов менее 255. При сдвиге держать под контролем значение знакового и старшего разрядов. Если они не равны, сформировать признак арифметического переполнения и При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) сдвиг закончить.

15. Выполнить операцию логического правого сдвига N-байтового числа на К разрядов. Начальные данные хранятся в ОЗУ, итог записывается в ОЗУ. Длина числа и количество сдвигов задается б.

16. Выполнить операцию логического левого сдвига N-байтового числа на К разрядов. Начальные данные хранятся в ОЗУ, итог записывается При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) в ОЗУ. Длина числа и количество сдвигов задается б.

17. Выполнить операцию суммирования 16-разрядных чисел, находящихся в ОЗУ, и сформировать признаки результата (0- итог равен 0, 1- итог отрицательный, 2- итог положительный, 3- арифметическое переполнение). В качестве регистра признаков можно использовать хоть какой РОН.

18. Выполнить функцию нормализации числа с плавающей запятой, находящегося в ОЗУ. Число состоит из При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) 3-х б: 1-ый байт- черта, второй- ст.б мантиссы, третий- мл.б мантиссы. Мантисса представлена в дополнительном коде.

Нормализация состоит в сдвиге мантиссы на лево до возникновения первого означающего бита с одновременной корректировкой свойства. Для положительного числа значение бита-1, для отрицательного- 0. В целях увеличения точности после При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) чего может производиться дополнительный сдвиг с корректировкой свойства (формирование "укрытого" разряда).

19. Выполнить функцию выравнивания порядка чисел с плавающей запятой, находящихся в ОЗУ. Числа состоят из 3-х б: 1-ый байт- черта, второй- ст.б мантиссы, третий- мл.б мантиссы. Мантисса представлена в дополнительном коде.

Выравнивание порядка состоит в сопоставлении черт и сдвиге на При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) право числа с наименьшим порядком на число разрядов, равное разности порядков.

20.Переслать массив из одной области наружной памяти в другую. Размер массива- наименее 256. В процессе пересылки держать под контролем "пустой" массив и возможность "перекрытия" начального массива и конечного. Если области не перекрываются, то производится просто пересылка. Если области При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) совпадают, то операция закончена. При перекрытии массивов нужно держать под контролем их исходные адреса. Если адресок начального массива меньше, то пересылку следует начинать с этого адреса. Если адресок начального массива больше, то пересылку следует начинать с конца массива.

22.Выполнить операцию умножения целых беззнаковых чисел 16*16.

а) Использовать программную реализацию метода При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив): сдвиг множителя, если выдвигаемый разряд равен 1, то суммирование множимого с суммой частичного произведения и сдвиг суммы. Если разряд равен 0, то сдвиг частичного произведения.

б) Использовать метод на базе команды MUL.

23.Выполнить преобразование целого 16- разрядного числа с фиксированной запятой в трехбайтовый формат с плавающей запятой:

черта Ст. б При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) мантиссы Мл. б мантиссы

Числа хранятся в ОЗУ.

24.Выполнить операцию сопоставления 2-ух 16-разрядных массивов находящихся в ОЗУ. Подсчитать число частей равных, больше, меньше частей первого массива. Сформировать итог операции в РПД в виде последовательности этих чисел.

25. Написать подпрограмму определения максимума/минимума 16-разрядного массива, размещенного в ОЗУ. Характеристики подпрограммы: тип поиска, длина При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) массива, исходный адресок массива, адресок максимума/минимума.

26.Выполнить преобразование двоичного кода в семисегментный: конвертировать двоичный код в двоично-десятичный методом поочередного вычитания 100, 10 (либо деления), а потом конвертировать двоично-десятичный код в семисегментный при помощи таблицы. Начальные данные и итог преобразования находятся во наружном ОЗУ.

27.Установить данный разряд 2-байтового При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) слова в 1 либо 0. Начальными данными являются адресок слова и команда, расположенные во наружном ОЗУ. Формат команды: 0 разряд - значение бита, 1-4 разряды - номер бита.

28.Проверить значение данного разряда 2-байтового слова . Начальными данными являются адресок слова и команда, расположенные в ОЗУ. Формат команды: 0 разряд - значение проверяемого бита, 1-4 разряды - номер проверяемого бита При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив). По результатам

проверки установить бит в битовой зоне РПД , если разряды равны, либо скинуть, если разряды не равны.

29.Выполнить медианную отбраковку 16-разрядного массива, лежащего в ВОЗУ, длина массива –N. Метод: ранжирование массива по возрастанию либо убыванию, определение серединного элемента, вычисление в районе середины средне-арифметического К значений( К= степени двойки).

30.Выполнить подпрограмму « скользящее При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) среднее»:определяется средне-арифметическое первых 2-ух значений, потом средне-арифметическое приобретенного значения и последующего текущего и т.д.. Массив хранится во ВЗУ, разрядность данных 16 бит.

31. Выполнить умножение 16*16, используя команду умножения 8051

(AhAl)*(BhBl)= Al*Bl + ( Ah*Bl + Bh*Al) shl8 + (Ah*Bh) shl16

Операнды хранятся во ВЗУ.

32.Выполнить сложение При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) чисел с плавающей запятой на базе заданий 18, 19.

33. В 16-разрядном массиве, находящемся во ВЗУ, отыскать адреса данного слова и подсчитать их количество. Начальные данные( значение слова, исходный адресок массива и длина массива) хранятся в фиксированных ячейках резидентной памяти. Если слово не найдено, сформировать признак результата.

34. Воплотить поиск последовательности кодов При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) в 16-разрядном массиве. Заданы два массива А и В, при этом длина массива А больше длины массива В. Нужно найти положение копии массива В в массиве А , если она имеется. Начальные данные: исходные адреса массивов и их длины.

Выход – исходный адресок копии либо признак, что копия не найдена. Нужно проверить При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) правильность начальных данных. Массивы хранятся во наружном ОЗУ

35.Из начального массива получить два новых, поместив в 1-ый из их значения частей, превосходящих средне-арифметическое значение массива, а во 2-ой - номера этих частей. Массив – 16-разрядный, находится во ВЗУ. Характеристики подпрограммы: исходный адресок начального массива и его длина, адреса первого и второго массива При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) и их длины. Длины массивов кратны степени 2.

36.Из начального массива получить два новых, поместив в 1-ый из их нечётные значения частей массива, ; а во 2-ой - их номера.

37.Из начального массива сформировать массив отклонений от средне-арифметического значения и массив номеров частей начального, превосходящих средне-арифметическое значение. Начальный массив – 16-разрядный При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив), находится во ВЗУ.

Длина начального массива кратны степени 2.

38.Из начального массива получить два новых, ;поместив в 1-ый из их номера частей превосходящих А, а во второй- их значения Начальный массив – 16-разрядный, находится во ВЗУ.

39.Из 2-ух начальных массивов X и Y cформировать массив Z, поместив в него все элементы При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) начальных, превосходящие общее средне-арифметическое . Полное количество частей массивов Х и Y кратно степени 2. Начальный массив – 16-разрядный, находится во ВЗУ.

40.Выявить все номера частей массива X, превосходящих (max+min)/2. Итог: массив номеров и массив частей (значений), для которых производится данное условие. Начальный массив – 16-разрядный, находится во ВЗУ При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив).

41.Получить из начального массива два новых, поместив в их элементы и номера,

для которых производится условие x(i)>=x(max)-x(min). Начальный массив – 16-разрядный, находится во ВЗУ.

42. Из массива ASCII кодов избрать коды, надлежащие десятичным цифрам, конвертировать их в упакованный байтовый формат и сформировывать из их новый При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) массив, упорядоченный по возрастанию. Последний элемент массива должен содержать его длину. Если число цифр будет нечетное, последний элемент дополнить нулями в младшей тетраде. Если числа отсутствуют, сформировать признак результата. Начальный массив находится во ВЗУ.

44.Из массива кодов выделить сообщение, начинающееся с знака %, а заканчивающееся эмблемой «return»(000Dh). Структура сообщения : адресок (1 б), данные При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) (4б), контрольная сумма (1 б). Начальный массив ASCII кодов размещен во наружном ОЗУ. Длина массива менее 255. Параметрами подпрограммы являются: исходный адресок массива, его длина, адресок, лежащей в фиксированной ячейке РПД. Если сообщение с данным адресом найдено, подсчитать контрольную сумму и сопоставить с контрольной суммой сообщения. Если сообщение При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) не найдено, сформировать признак результата ERRА в фиксированной области РПД. При неравенстве контрольных сумм- сформировать признак ERRS. Контрольная сумма определяется методом суммирования полей адреса и данных без учета переполнения разрядной сетки.

43. В 16-разрядном массиве, расположенном во наружном ОЗУ, избрать 8 наибольших частей и найти их средне-арифметическое.

44.Конвертировать 16-разрядный массив, находящийся во При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) наружном ОЗУ, в массив ASCII-кодов. Характеристики подпрограммы (исходный адресок и длина) находятся в РПД

45. Конвертировать массив ASCII-кодов, находящийся во наружном ОЗУ, в упакованные 16-ричные данные. Характеристики подпрограммы (исходный адресок и длина) находятся в РПД

46. В 16-разрядный массив, расположенный во наружном ОЗУ, начиная с фиксированного адреса, воткнуть содержимое области При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) памяти , не принадлежащее этому массиву. При всем этом содержимое начального массива должно быть сохранено. Начальные данные: адреса массивов и их длина, адресок , с которого массив должен быть вставлен.

47. Выполнить операцию умножения 2-ух байтовых массивов, один из которых размещен в памяти программ, а другой – во наружном ОЗУ. Итог записать во наружное При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) ОЗУ. Подсчитать число частей результирующего массива, у каких значение ≥255.

48.Из 16-разрядного массива, размещенного во наружном ОЗУ, избрать элементы, отвечающие условию Nmin ≤Ni≤Nmax и сформировать новый массив, подсчитав количество частей. Константы хранятся в резидентной памяти программ.

49. Выполнить преобразование 16-разрядного двоичного числа в двоично-десятичное, используя схему Горнера При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив):

, где

-значение соответственного разряда двоичного числа.

Суммирование и умножения должны производиться по правилам двоично-десятичной математики: при суммировании использовать команду корректировки DAA, а умножение на 2–суммирование числа с самим собой.

50..Выполнить преобразование n-байтового двоично-десятичного числа в семисегментный код. Коды хранятся в упакованном формате во наружном ОЗУ. Массив семисегментных кодов записать в При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив) РПД.

Преобразование двоично-десятичного кода в семисегментный выполнить при помощи таблицы, лежащей в памяти команд. Семисегментный код формируется для отображения инфы на 7-сементных индикаторах (см. набросок)

Кодируется б

h g f e d c b a

7 6 5 4 3 2 1 0

К примеру, 0 – 3Fh, 9 – 6Fh

Начальные данные: исходные адреса таблиц и длина начальной таблицы, для 8051 n При работе с массивами обязательно проверять длину массива на нуль(«пустой» массив)= 0- 16.

Добавить кусочно-линейную интерполяцию, схему Горнера, вычисление оборотной функции.


pri-zubochelyustnih-anomaliyah.html
priargunskij-rajonnij-sud-doklad-o-narkosituacii-v-zabajkalskom-krae-v-2011-godu.html
pribavki-dlya-platya-i-bluzi-po-myulleru.html