Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodicheskie_ukazania.doc
Скачиваний:
13
Добавлен:
03.03.2016
Размер:
6.75 Mб
Скачать

Лабораторная работа №3 Вариантыпример отчетак содержанию

Цель: Освоить механизмы обработки одномерных массивов на языке ассемблер, принципы вывода символьной и числовой информации на экран, организации процедур и использование механизма прерываний.

Тема: Обработка одномерных массивов

Этапы выполнения работы:

  1. Разработка алгоритма решения задачи

  2. Написание программы на языке ассемблер, реализующей алгоритм.

  3. Компиляция, линкование и отладка программы с помощью отладчика td.exe.

  4. Анализ принципов вывода на экран символьной и числовой информации

Вывод на экран можно выполнить или с помощью механизма прерываний, или прямым выводом символа в видеопамять. Но в любом случае имеется возможность выводить на экран только символы, но не числа. Поэтому чтобы вывести на экран число, его необходимо представить в виде строки (т.е. массива символов).

Один из способов вывода на экран – использование 9-ой функции 21-ого прерывания, которая выводит на экран строку. Перед ее вызовом в регистр dx необходимо поместить адрес выводимой строки. Функция будет выводить символы, начиная с адреса, заданного в регистре dx до знака ‘$’. Например, для вывода строки msg5 необходимо написать:

lea dx,msg5

mov ah,9h

int 21h

В сегменте данных msg5 может быть описана так:

msg5 db ‘вывод строки$’

Алгоритм преобразования числа формата слово (Х) в строку (S) показан на рис.8. Он основан на выделении из числа каждой отдельной десятичной цифры путем деления числа на 10. Остаток от деления и есть нужная нам цифра. Для преобразования ее в символ прибавляем к цифре код символа ‘0’. Деление происходит, пока в целой части не будет ноль. Т.к. цифры получаются от последней до первой, результирующая строка заполняется с конца.

Возможно использование в лабораторной работе других функций вывода и алгоритмов преобразования числовой информации.

Рисунок 8 – Алгоритм преобразования числа в строку

  1. Добавление в программу команд и процедур для вывода на экран информации

  2. Отладка программы.

  3. Оформление отчета

Отчет должен содержать следующие разделы:

  1. Титульный лист

  2. Задание

  3. Блок-схема

  4. Листинг программы

  5. Результаты работы программы (скриншоты экрана)

  6. Выводы

  1. Защита работы.

В результате выполнения работы должны быть усвоены следующие темы:

- Команды lea, Loop, call, ret : их форматы, алгоритмы и режимы адресации (см. разбор команд (примеры 6-10))

- обращение к элементам массива с помощью косвенной адресации, прямой адресации с индексированием и базированием.

- алгоритм обработки одномерного массива.

- понятие прерывания. Алгоритм работы команды int.

- алгоритм преобразования числа в строку для вывода на экран.

- знать входные и выходные параметры тех функций прерываний, которые использованы в лабораторной работе.

Варианты заданий к лабораторной работе №3

  1. В массиве определить значение и положение двух наименьших элементов

  2. Все положительные числа в массиве поставить в обратном порядке, не изменяя положения остальных элементов

  3. Из элементов массива Х, меньших заданного значения, сформировать новый массив

  4. Определить, имеются ли в массиве два подряд идущих нулевых элемента; если такие элементы есть, отпечатать порядковый номер первого элемента первой и последней нулевой пары.

  5. Сделать циклический сдвиг все элементов массива вправо на одну позицию.

  6. В массиве определить положение и размер первой серии отрицательных элементов, в состав которой входит не менее трех элементов.

  7. Определить, имеются ли в массиве три подряд стоящих числа, упорядоченных по убыванию. Отпечатать их значения и порядковые номера.

  8. В массиве в первой серии положительных элементов (серия – последовательность более трех подряд идущих элементов) поменять элементы в обратном порядке.

  9. Из массива удалить все нечетные элементы.

  10. Преобразовать массив, расположив сначала нечетные элементы, а затем четные.

  11. В массиве переставить первый и второй, третий и четвертый… отрицательные элементы.

  12. Все числа, находящиеся в массиве между максимальным и минимальным элементами, расположить в обратном порядке.

  13. Обменять в массиве последний элемент с максимальным отрицательным.

  14. Из массива удалить все нулевые элементы, кроме первого нулевого элемента.

  15. Обменять в массиве максимальный четный элемент и минимальный нечетный.

  16. Преобразовать массив, расположив сначала отрицательные, затем положительные, а затем нулевые элементы.

  17. Задано произвольное число и массив, упорядоченный по возрастанию. Включить это число в массив, не нарушив упорядоченности.

  18. Обменять первый и последний четные элементы массива.

  19. Удалить из массива максимальный по модулю элемент.

  20. В массиве после каждого отрицательного элемента, вставить элемент, равный модулю отрицательного элемента.

  21. В массиве удалить элементы, меньшие среднего арифметического элементов массива.

  22. Если сумма четных элементов в массиве больше, чем сумма нечетных, обменять первый и последний элементы массива.

  23. Найти в массиве элемент, наименее отличающийся от среднего арифметического.

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

  25. Удалить из массива максимальный и минимальный элементы.

  26. Найти сумму элементов, позиционно находящихся между максимальным и минимальным элементами в массиве.

  27. Определить среднее арифметическое четных элементов массива, расположенных на четных позициях.

  28. Обменять в массиве первый отрицательный элемент с последним положительным.

  29. Каждую пару элементов в массиве (1 и 2, 3 и 4, …) расположить так, чтобы первым стоял элемент, имеющий большее по модулю значение.

  30. Максимальный по модулю отрицательный элемент обменять местами с первым положительным элементом.

  31. Если сумма элементов, стоящих на четных позициях, больше суммы элементов, стоящих на нечетных позициях, то обменять первый и последний элементы массива.

  32. Определить, сколько элементов массива расположены в диапазоне [a,b] (a,b – заданы в сегменте данных) и найти их среднее арифметическое.

  33. Удалить из состава массива последний нулевой элемент.

  34. Если массив имеет 2 или более нулевых элементов, то первый и последний нулевые элементы заменить разницей максимального и минимального элементов.

  35. Удалить первый четный элемент из состава массива.

  36. Первый элемент массива обменять с максимальным четным элементом.

  37. Последний элемент массива обменять с минимальным нечетным элементом.

  38. Обнулить элемент, наиболее отличающийся от максимального по модулю элемента массива.

  39. Подсчитать количество пар соседних элементов(1,2 ; 2,3; …), для которых первый элемент пары больше второго элемента пары.

  40. Найти пару соседних элементов, сумма значений которой максимальная.

  41. За один проход массива найти два элемента, имеющих наибольшие по модулю значения.

  42. В отсортированный по возрастанию массив добавить элемент (задан в сегменте данных), не нарушив упорядоченность массива.

  43. В массиве найти два элемента, разность значений которых минимальна.

  44. Элементы, позиционно расположенные между первым отрицательным и последним положительным, поставить в обратном порядке.

  45. Если сумма положительных элементов больше суммы отрицательных элементов массива, поставить все элементы в обратном порядке.

  46. Если сумма нечетных элементов массива четна, то добавить единицу ко всем нечетным элементам.

  47. Если сумма элементов, расположенных на четных позициях, четна, то обнулить элементы, стоящие на нечетных позициях.

  48. Подсчитать количество элементов, больших минимального четного элемента массива.

  49. Последний элемент массива обменять местами с максимальным отрицательным элементом.

  50. Элементы массива – цифры двоичного числа. Определить десятичное значение этого числа.

  51. В целочисленном массиве X=(x1,x2,...,xn) каждую пару x[i] и x[j] (i,j=1,...,n, i<>j) нечетных элементов преобразовать в четные элементы по формулам: x[i]:=x[i]+1, x[j]:=x[j]-1. Пары элементов i,j выбирать в порядке их следования в массиве X.

  52. Заданы два массива X=(x1,x2,...,xn) и Y = (y1,y2,...,ym), в состав которых входят натуральные числа, причем в каждом из этих массивов нет повторяющихся элементов. Сформировать массив Z, объединив массивы X и Y; при этом в массиве Z также не должно быть повторяющихся элементов.

  53. Заданы два целочисленных массива Х=(x1,x2,...,xn) и Y=(y1, y2,...,ym). B состав массива Х дополнительно включить те элементы из массива Y, которые отсутствуют в массиве X.

  54. Подсчитать количество отрицательных элементов, окруженных со обеих сторон положительными элементами. Для первого элемента соседом считать последний элемент и наоборот.

  55. Сформировать новый массив, включив в него все неповторяющиеся элементы исходного массива.

  56. От всех положительных элементов массива вычесть 2, а к отрицательным элементам добавить 2. Определить, как изменилось количество положительных и отрицательных элементов в массиве.

  57. Удалить из состава массива первый положительный элемент.

  58. Удалить из состава массива последний четный элемент.

  59. Подсчитать, сколько раз в массиве нарушается упорядоченность элементов по возрастанию и, если она нарушается только один раз, исправить это нарушение (переставить местами неправильно расположенные элементы).

  60. Сформировать новый массив и включить в него элементы из исходного массива, чередуя четный – нечетный – четный – нечетный…, до тех пор, пока это возможно. Остальные элементы в новый массив не вносить.

  61. Каждый нулевой элемент заменить суммой его соседей (соседом первого элемента является последний и наоборот).

  62. Сформировать новый массив и внести в него все повторяющиеся элементы исходного массива по одному разу.

  63. Все нулевые элементы перенести в начало массива.

  64. Сделать циклический сдвиг на одну позицию влево всех элементов массива.

  65. Переставить каждую пару соседних элементов (1и 2, 3 и 4…) между собой. Определить, как при этом изменилось количество пар, в которых первый элемент меньше второго.

  66. Из массива удалить первый и последний положительные элементы.

  67. Удалить из массива максимальный нечетный элемент.

  68. Если в массиве максимальный отрицательный элемент является четным, то обнулить его.

  69. Минимальный нечетный элемент заменить на сумму положительных элементов массива.

  70. Найти последнюю серию (больше 3 элементов подряд) четных элементов.

  71. Если максимальный, среди элементов, стоящих на четных позициях, больше максимального, среди элементов, стоящих на нечетных позициях, то обменять их местами.

  72. Первый отрицательный обменять местами с последним четным элементом массива.

  73. Удалить второй нулевой элемент массива.

  74. Все положительные элементы, окруженные с обеих сторон отрицательными элементами, обнулить, если произведение отрицательных больше, чем значение положительного элемента массива.

  75. Если максимальный элемент массива больше, чем сумма всех остальных элементов этого массива, то обнулить его, иначе – удвоить.

  76. Заменить все отрицательные элементы на произведение их соседей (соседом первого элемента является последний и наоборот). Определить, как изменилось количество отрицательных элементов.

  77. В массиве имеется один нулевой элемент. Все элементы, которые находятся после него, переставить в обратном порядке.

  78. Найти максимальный элемент и все элементы, которые находятся до него, переставить в обратном порядке.

  79. Обменять местами последний нечетный с минимальным нечетным, если это один и тот же элемент, обнулить его.

  80. Обменять местами максимальный отрицательный с первым отрицательным, если это один и тот же элемент, обнулить его.

  81. Ко всем нечетным элементам добавить 5 и определить, как изменилось количество положительных элементов в массиве.

  82. Удалить все элементы, кратные 3.

  83. Удалить минимальный четный элемент из состава массива.

  84. В массиве содержится один нулевой элемент. Заменить его таким значением, чтобы сумма всех элементов массива была равна нулю.

  85. Обменять последний элемент массива с максимальным четным.

  86. Элементы, позиционно расположенные между максимальным и минимальным элементами массива, обнулить.

  87. В массиве найти максимальный отрицательный и минимальный положительный элементы. Обнулить тот из них, кто расположен ближе к началу массива.

  88. Если сумма четных элементов массива больше, чем сумма нечетных, нарастить на единицу первый элемент массива, иначе – уменьшить на единицу последний элемент.

  89. Удалить из массива минимальный положительный элемент.

  90. Найти в массиве элемент, который наименее отличается от первого четного элемента.

  91. Удалить из массива все элементы, меньшие первого положительного элемента.

  92. Обменять в массиве максимальный четный элемент с максимальным нечетным.

  93. Элементы массива, позиционно расположенные после первого четного элемента, расположить в обратном порядке.

  94. Подсчитать сумму элементов, расположенных позиционно между максимальным четным и последним отрицательным элементами.

  95. Определить элемент массива, который отличается от соседних элементов на минимальное значение (соседом первого элемента считать последний и наоборот).

  96. Удалить из массива максимальный и минимальный отрицательные элементы.

  97. Определить элемент, который ближе всего по значению к последнему четному элементу массива.

  98. Имеется массив, отсортированный по убыванию. Необходимо включить в него элемент, не нарушив упорядоченность (элемент задан в сегменте данных).

  99. Ко всем нечетным элементам массива добавить единицу и определить сумму преобразованного массива.

  100. Все отрицательные элементы заменить на сумму соседних элементов (соседом первого элемента считать последний и наоборот).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]