- •Оглавление
- •ВВЕДЕНИЕ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 2 ВЫЧИСЛЕНИЕ ВЫРАЖЕНИЙ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 3 ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ РАЗВЕТВЛЯЮЩЕЙСЯ СТРУКТУРЫ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 4 ЦИКЛЫ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 5 ОДНОМЕРНЫЕ МАССИВЫ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 6 ОБРАБОТКА МАТРИЦ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 7 ДИНАМИЧЕСКИЕ МАССИВЫ
- •ЛАБОРАТОРНАЯ РАБОТА № 8 ТЕКСТОВЫЕ ФАЙЛЫ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 9 СТРУКТУРЫ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 10 ДВОИЧНЫЕ ФАЙЛЫ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 11 ФУНКЦИИ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 12 РЕКУРСИВНЫЕ ФУНКЦИИ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 13 ОДНОСВЯЗНЫЕ СПИСКИ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 14 ДВУСВЯЗНЫЕ ЛИНЕЙНЫЕ СПИСКИ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 15 АЛГОРИТМЫ НА ГРАФАХ
- •Задания
- •ЛАБОРАТОРНАЯ РАБОТА № 16 БИНАРНЫЕ ДЕРЕВЬЯ
- •Задания
- •Задание
- •ЛАБОРАТОРНАЯ РАБОТА № 18 РЕШЕНИЕ ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ НА АССЕМБЛЕРЕ
- •ЛАБОРАТОРНАЯ РАБОТА № 19 ОБРАБОТКА ФАЙЛОВ
- •ЛАБОРАТОРНАЯ РАБОТА № 20 РАБОТА С ДИНАМИЧЕСКОЙ ПАМЯТЬЮ
- •ЛАБОРАТОРНАЯ РАБОТА № 21 РАБОТА С ПРЕРЫВАНИЯМИ
- •ЛАБОРАТОРНАЯ РАБОТА № 22 ПЕРЕМЕЩЕНИЕ ПРОГРАММ ПО ПАМЯТИ
- •ЛАБОРАТОРНАЯ РАБОТА № 23 МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ
- •ЛАБОРАТОРНАЯ РАБОТА № 24 КОНСОЛЬНОЕ WINDOWS-ПРИЛОЖЕНИЕ
- •ЛАБОРАТОРНАЯ РАБОТА № 25 ОКОННЫЕ WINDOWS-ПРИЛОЖЕНИЯ
- •ЛАБОРАТОРНАЯ РАБОТА № 26 ПРОГРАММИРОВАНИЕ СОПРОЦЕССОРА
- •Задания
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК
- •Основной
- •Дополнительный
ЛАБОРАТОРНАЯ РАБОТА № 18 РЕШЕНИЕ ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ НА АССЕМБЛЕРЕ
Цель – приобретение навыков низкоуровневой алгоритмизации вычислительных задач. Закрепление знаний режимов адресации, набора регистров процессора, системы команд процессора.
Для выполнения лабораторной работы необходимо изучить следующие вопросы:
1.Ввод и вывод информации на ассемблере. Вычисление выражений. Реализация многоразрядной арифметики.
2.Организация циклов в ассемблере. Обработка целочисленных массивов и матриц. Реализация вложенных циклов.
Для выполнения данной работы необходимо написать три программы в соответствии с заданиями, приведенными ниже.
Задание1 Вычислениевыражений, условныепереходы
Написать программы для вычисления следующих выражений:
1. |
y = |
|
|
3a2b3 +1 |
− |
|
a / 4 +b |
; |
|
|
|
|
|
|
|
|
|||||||
|
|
|
a −b |
|
a |
+b |
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
2. |
y = |
5a3b4 −1 |
|
− a / 2 +3b ; |
|
|
|
||||||||||||||||
| a −b | |
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
a +b |
|
|
|
|
|
|
|
|
||||||||
3. |
z = |
| x3 − y2 | |
+ |
|
x /5 − y |
|
|
; |
|
|
|
|
|
||||||||||
|
|
6x −2y |
|
x + 2y −3 |
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
4. |
y = |
|
a3b4 +5a4 / 4c |
* |
4a3b5 + 4 |
; |
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
5a2 +7b3 |
|
|
|
| 3b4 −3| |
|
|
|
|||||||||||
5. |
y = |
|
|
2a3b2 −6a4 /10c |
|
− |
4a3b5 +1 |
; |
|
|
|||||||||||||
|
|
|
6b4 −3 |
|
|
||||||||||||||||||
|
|
|
|
|
| 3a2 +9b3 | |
|
|
|
|
|
|
|
|
||||||||||
6. |
y = |
|
|
2a3b2 −6a4 /10c |
− |
| 4a3b5 +1| |
; |
||||||||||||||||
|
|
|
|
6b4 −3 |
|
|
|||||||||||||||||
|
|
|
|
|
3a2 +9b3 |
|
|
|
|
|
|
|
|
|
|||||||||
7. |
y = |
|
|
| 2a3b2 −6a4 /10c | |
− |
4a3b5 +1 |
; |
||||||||||||||||
|
|
|
|
6b4 −3 |
|
||||||||||||||||||
|
|
|
|
|
3a2 +9b3 |
|
|
|
|
|
|
|
|
|
|||||||||
8. |
f = |
|
|
3x2 y3 −6z |
|
*3x5 ; |
|
|
|
|
|
|
|
|
|
||||||||
10y3 / | 2x5 | |
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Языки программирования. Метод. указания по лаб. работам |
-89- |
ЛАБОРАТОРНАЯ РАБОТА№ 18 РЕШЕНИЕ ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ НА АССЕМБЛЕРЕ
Задание 1 Вычислениевыражений, условные переходы
9.y = 76xx23++105 − |3xx45 −−92| ;
10.f = 3x2 y3 −| 6z | *3x5 ; 10y3 / 2x5
11.f = −2x4 y2 −3z −| 6x3 |;
25y4 / 2x5
12.f = 2x5 y2 −6z3 −|10x5 |; 5y−3 / 2x5
13. |
f = |
7x2 y2 −10z3 |
−10x5 ; |
|
|
|
|||
|
|
5y3 / | 2x | |
|
|
|
|
|
|
|
14. |
y = |
3a2b3 −17a2c4 |
+ |
|
8a4b2 +10 |
|
; |
||
3a2 +7b2 |
|
|
|12b4 −3c2 |
|
| |
||||
|
|
|
|
|
|
|
|||
15. |
y = |
3a2b2 −17a2c4 |
+ |
|
8a b2 +10 |
; |
|
||
|
|
3a2 +7b2 |
|
|
|
12b4 −3c2 |
|
|
|
16. |
y = |
3a3b6 −17a2c4 |
+ |
|
8a2b2 +10 |
; |
|
||
|
|
3a2 +7b2 |
|
|
12b4 −3c2 |
|
|
|
|
17. |
y = |
2a2b6 −8a3c4 |
/ |
6a3b2 +15 ; |
|
|
|
||
|
|
15a2 +7b2 |
|
8b4 −3c2 |
|
|
|
18.f = 3x8 y4 −9z3 −2 −10x3 y2 ;
6y3 /(−8x5 )
19.f = 10x3 y4 −5z3 −5 −5x6 y ; 8y6 /(−3x5 )
20.y = 9a3b4 −6a4 / 4c − 4a3b5 +1 ; 3a2 +9b3 | 6b4 −3 |
21. |
y = a35b3 −8a6 / 4c * a3b2 +5 |
+6ab ; |
|||||||
|
|
|
|10a3 +7b8 | |
|
b2 −3 |
|
|
|
|
22. |
y = |
8a2b6 −7a2c4 / |
8a3b2 +10 |
|
|
; |
|||
| 3b4 −3c2 | |
|||||||||
|
|
|
3a−2 +7b2 |
|
|||||
23. |
y = a3 2b4 −20a / 4c * a3b2 +1 |
; |
|||||||
|
|
|
|10a2 +7b3 | |
|
b4 −3 |
|
|
|
|
24. |
y = |
5a4b6 / c −4a * |
5a3b6 +10c ; |
||||||
|
|
|
15a6 +17b |
|
| b4 −3 | |
|
|
|
|
25. |
f = |
|
30x2 y3 −2z5 −2 |
+ | 8x6 |. |
|
|
|
||
|
|
|
|
|
|||||
|
|
|
15y3 /(−2x5 ) |
|
|
|
|
|
Задание2 Простейшиециклы. Обработкамассивов
1. Написать программу расчета среднего арифметического (СА) значения положительных элементов в одномерном массиве, имеющих четные индексы.
Языки программирования. Метод. указания по лаб. работам |
-90- |
ЛАБОРАТОРНАЯ РАБОТА№ 18 РЕШЕНИЕ ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ НА АССЕМБЛЕРЕ
Задание 2 Простейшие циклы. Обработка массивов
2.Написать программу вычисления суммы отрицательных, произведения положительных и количества нулевых значений в одномерном массиве.
3.Написать программу расчета суммы положительных элементов одномерного массива, имеющих нечетные индексы.
4.Упорядочить одномерный массив в порядке неубывания.
5.Написать программу расчета СА отрицательных элементов в одномерном массиве. Заменить минимальный элемент в одномерном массиве на СА.
6.Упорядочить одномерный массив в порядке невозрастания.
7.В одномерном массиве поменять местами максимальный и минимальный элементы.
8.Написать программу расчета произведения положительных элементов в одномерном массиве. Заменить максимальный элемент в одномерном массиве на произведение.
9.Произвести попарные перестановки элементов одномерного массива: первый элемент поменять местами с последним, второй элемент – с предпоследним и т. д.
10.Отыскать последний положительный элемент в одномерном массиве и заменить его на среднее арифметическое элементов массива.
11.Дан одномерный массив [Ai]. Сформировать одномерный [Bi] массив из элементов массива [Ai] по закону
N
Bi = ∑ Ai+j, i = 1, M ; N = M – i.
j=0
12.Из одномерного массива [Ai] сформировать одномерный массив [Bi], записав в него сначала элементы массива А, имеющие четные индексы, потом элементы с нечетными индексами.
13.Отыскать последний отрицательный элемент в одномерном массиве
изаменить его на произведение элементов массива.
14.Заменить в одномерном массиве нулевые элементы на значение минимального элемента.
15.Сформировать массив [Xi], элементы которого равны частоте встречаемости элементов массива [Bi] среди элементов массива [Ai] Определить, какой элемент массива [Bi] чаще всего встречается в [Ai].
16.Сформировать массив [Xi], элементы которого равны полусумме двух соседних элементов одномерного массива [Yi].
17.Сформировать массив [Ai] из элементов одномерного массива [Bi]
по закону A i = (Bi +B N −i+1 )/4, i =1, N .
18. Сформировать массив [Ai] из элементов одномерного массива
[Bi ] j =1, N по закону A i = Bi+BN/2+i ; i =1, N2 .
Языки программирования. Метод. указания по лаб. работам |
-91- |
ЛАБОРАТОРНАЯ РАБОТА№ 18 РЕШЕНИЕ ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ НА АССЕМБЛЕРЕ
Задание 2 Простейшие циклы. Обработка массивов
19. Из одномерного массива [Bi] сформировать массив [Ai] по закону
j+1 |
|
|
A j = ( ∑ Bi )/(j +1); j = |
|
|
1, N −1. |
||
i=1 |
|
|
20. Из одномерного массива [Bi] сформировать массив [Xi] по следую- |
||
1 |
Bi >Y, |
|
щему закону: Xi = 0 |
Bi =Y, |
|
−1 |
B <Y, |
|
|
i |
где Y – некоторая константа.
21.В одномерном массиве переставить местами соседние элементы с четными и нечетными индексами.
22.В одномерном массиве вычислить сумму элементов, значения которых кратны некоторому значению X.
23.В одномерном массиве подсчитать количество элементов, значениями которых являются простые числа (простое число – это число, делящееся нацело только на единицу и само на себя).
24.Сформировать массив [Bi], содержащий последовательность чисел Фибоначчи:
Bi = Bi − 1 + Bi − 2 ; i = 3,N ; B1=X1, B 2 =X 2 ,
где Х1, Х2 – некоторые числа.
25. Вычислить сумму правых разностей элементов одномерного масси-
ва [Bi]:
N−1
S = ∑ (Bi – Bi+1 ).
i=1
Задание3 Вложенныециклы. Обработкаматриц
В квадратной матрице [Aij], i,j = 1, M заменить нулями элементы с четной суммой индексов, не превышающие некоторого числа X.
Получить матрицу [Bij], i,j = 1, M из матрицы [Aij], i,j = 1 путем перестановки столбцов – первого с последним, второго с предпоследним и т. д.
3.Получить новую матрицу [Вi,j], i,j = 1, M из матрицы [Aij], путем перестановки сегментов по диагонали.
4.Получить новую матрицу [Вi,j], i,j = 1, M из матрицы [Aij], путем пе-
рестановки сегментов по часовой стрелке.
5. В произвольной матрице [Aij] i =1, M ; j = 1, N найти минимальный и
максимальный элементы, указать номера строк и номера столбцов, на пересечении которых они находятся.
Языки программирования. Метод. указания по лаб. работам |
-92- |
ЛАБОРАТОРНАЯ РАБОТА№ 18 РЕШЕНИЕ ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ НА АССЕМБЛЕРЕ
Задание 3 Вложенные циклы. Обработка матриц
6. Из одномерного массива [Xi] i = 1,64 получить действительную квадратную матрицу 8х8, элементами которой являются числа x1,…,x64 расположенные в ней по столбцам.
7. Из одномерного массива [Xi] i = 1,64 получить действительную квадратную матрицу 8*8, элементами которой являются числа x1,…,x64 расположенные в ней по строкам.
8. В произвольной матрице [Aij] i = 1, M ; j = 1, N столбец, содержащий максимальный элемент, заменить на сумму всех элементов матрицы.
9. Получить квадратную матрицу [Aij], |
i,j = |
|
|
|
|
, элементы главной |
|
1, M |
|||||||
диагонали которой будут числа в диапазоне от 1 до N. |
|||||||
10.Получить квадратную матрицу [Aij], |
i,j = |
|
|
, элементы главной |
|||
1, M |
|||||||
диагонали которой будут числа в диапазоне от N до 1. |
|||||||
11. Получить квадратную матрицу [Aij], |
i,j = |
|
, элементы побочной |
||||
1, M |
диагонали которой будут числа, получающиеся в результате перемножения i*(i+1), где I – номер строки.
12. Получить квадратную матрицу [Aij], i,j=1, M , элементы которой
будут получены следующим образом: в каждой строке матрицы первые (N – i+1) элементов заполнены номером строки, остальные – нулями.
13. Получить матрицу [Cij] i,j = 1, M из матриц [Aij] i,j = 1, M и [Bij] i,j = 1, M путем умножения элементов каждой строки матрицы [Aij] на максимальный элемент соответствующей строки матрицы [Bij].
14. В квадратной матрице [Aij] i,j = 1, M среди элементов, расположен-
ных ниже главной диагонали, найти минимальный, а среди элементов выше главной диагонали – максимальный. Вывести координаты этих элементов.
15. В квадратной матрице [Aij] i,j = 1, M среди элементов, расположен-
ных ниже побочной диагонали, определить количество положительных элементов, а среди элементов выше побочной диагонали – количество отрицательных элементов.
16. Из квадратной матрицы [Aij] i,j = 1, M сформировать одномерный массив [Xi] I = 1,2М по следующему правилу: элементами одномерного мас-
сива [Xi] с нечетными индексами будут элементы главной диагонали [Aij], с четными – побочной диагонали [Aij].
17. Сформировать одномерный массив [Xi] i = 1, M из сумм положительных элементов строк матрицы [Aij] j,i = 1, M , попутно определяя номера строк матрицы [Aij] i,j = 1, M , в которых отсутствуют положительные элементы.
18.Сформировать одномерный массив [Bi] i = 1, M из минимальных элементов строк прямоугольной матрицы[Aij] i = 1, M , j = 1, N . Подсчитать количество элементов массива [Bi], попавших в интервал (x,y).
19.Сформировать одномерный массив [Bi] i = 1, M из максимальных
элементов столбцов прямоугольной матрицы [Aij] i = 1, M , j = 1, N . В массиве
Языки программирования. Метод. указания по лаб. работам |
-93- |
ЛАБОРАТОРНАЯ РАБОТА№ 18 РЕШЕНИЕ ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ НА АССЕМБЛЕРЕ
Задание 3 Вложенные циклы. Обработка матриц
[Bi] поменять местами первый отрицательный и последний положительный элементы.
20. В квадратной матрице [Aij] i,j = 1, M заменить элементы главной и побочной диагоналей на минимальный элемент главной диагонали.
21. В произвольной матрице [Aij] i = 1, M , j = 1, N поменять местами
строку, содержащую минимальный элемент, со строкой, содержащей максимальный элемент.
22. В квадратной матрице [Aij] i,j = 1, M найти максимальный элемент
среди элементов, стоящих на главной и побочной диагоналях, и поменять его местами с элементом, стоящим на пересечении этих диагоналей.
23. В квадратной матрице [Aij] i,j = 1, M определить номер столбца
матрицы, имеющего наибольшую сумму элементов. Поменять этот столбец со строкой имеющей наименьшую сумму элементов.
24. В квадратной матрице [Aij] i,j = 1, M найти наибольшее из значений
элементов, расположенных в первом и третьем секторах матрицы, полученных в результате пересечения главной и побочной диагоналей.
25. В квадратной матрице [Aij] i,j = 1, M найти наибольшее из значений
элементов, расположенных во втором и четвертом секторах матрицы, полученных в результате пересечения главной и побочной диагонали.
Языки программирования. Метод. указания по лаб. работам |
-94- |