Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
YaP_laby.pdf
Скачиваний:
159
Добавлен:
31.05.2015
Размер:
915.49 Кб
Скачать

ЛАБОРАТОРНАЯ РАБОТА № 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 |; 5y3 / 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 |

 

 

 

3a2 +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]:

N1

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-

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