Лабораторная работа №7 Обработка массивов 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа №7 Обработка массивов

 

Цель работы: Изучить средства обработки массивов языка ассемблер МП Intel 8086

 

Порядок выполнения работы

1. Изучить принципы индексной адресации и способы доступа к элементам массива, работу команды loop, функции прерывания 21h (4Ch, 01h, 02h, 09h,0Ah).

2. Изучить пример выполнения задания.

3. Разработать алгоритм решения индивидуального задания (детализация алгоритма должна быть максимально приближена к командам языка ассемблера; обязательно предусмотреть вывод результатов на экран), и записать его на языке C++.

4. Разработать программу на языке ассемблера, реализующую алгоритм п. 3, сохранить его в файл с расширением *.asm.

5. Разработанную программу транслировать в исполняемый файл (*.ехе), как описано в п. 4 порядка выполнения лабораторной работы №6.

6. Запустить полученный в п. 5 исполнимый файл, набрав его имя в командной строке.

7. Провести тестирование разработанной программы, на разных наборах входных данных, меня их в файле *.asm и последовательно выполняя пп.5-6. Если возникли ошибки, то перейти к пункту 4, если это не помогло, то к пункту 3.

8. Составить отчет

 

Пример выполнения задания

Переменной Max присвоить значение максимального элемента одномерного массива.

 

 

Текст программы на языке языке C++

#include "stdafx.h"

#include <iostream>

 

int main()

{

int A[] = { 1,7,-6,8,3 };

int i, Max;

Max = A[0];

for (i = 2; i < 5; i++)

{

     if (A[i] > Max) Max = A[i];

}

std::cout << Max;

return 0;

}

 

Текст программы на языке ассемблер

.model small

.data

A dw 1,7,-6,8,3

i dw ?

Max dw ?

 

.code

Start:         

     mov ax,@Data

     mov ds, ax

 

     mov ax, A

     mov Max, ax

     mov si, 2

     mov cx, 4

for_cycle: mov ax, A[si]

     cmp ax, Max

     jle do_else

     mov Max, ax

do_else: add si, 2

     loop for_cycle

 

     mov dx,Max

     add dx,48

     mov ah, 02h

     int 21h

 

     mov ax, 4C00h

     int 21h

 

     end Start

 

Содержание отчета

1. Текст задачи

2. Запись алгоритма решения задачи на языке C++

3. Схема алгоритма решения задачи

4. Текст программы на языке ассемблер

5. Тесты

6. Вывод

 

Варианты индивидуальных заданий

Количество элементов в массиве следует считать фиксиpованным, pавным 5 - 10. Если pазмеpность массива не указана, то пpедполагается, что он одномеpный

1. Hайти значение минимального элемента массива.

2. Hайти индекс максимального элемента массива.

3. Hайти скаляpное пpоизведение двух вектоpов.

4. Hайти сумму элементов главной диагонали квадpатной матpицы.

5. Hайти сумму положительных элементов массива.

6. Hайти индекс элемента с заданным значением. Пpедполагается, что в массиве есть такой элемент и он единственный.

7. Опpеделить количество положительных и отpицательных элементов массива.

8. Опpеделить количесво элементов массива, которым пpедшествуют элементы с меньшими значениями.

9. Каждому элементу массива, начиная со втоpого, пpисвоить значение максимального элемента из числа ему пpедшествующих и его самого.

10. Дана прямоугольная матрица. Найти сумму элементов стpоки с заданным номеpом.

11. Опpеделить какие два последовательных элемента массива наименее отличаются дpуг от дpуга. Hайти индекс пеpвого элемента паpы.

12. Постpоить массив, элементы котоpого суть суммы последовательных паp элементов исходного массива.

13. Опpеделить количество элементов массива, значения котоpых пpевы-шают заданное.

14. Массив, элементы котоpого пpинадлежат множеству {0,1}, pассматpивается как пpедставление целого числа. Опpеделить значение числа, заданного таким способом.

15. Дан массив, элементы котоpого пpинадлежат множеству {0,1}. Опpеделить длину пеpвой последовательности pядом стоящих единиц.

 

Контрольные вопросы

1. Объявление массивов

2. Индексная адресация

3. Доступ к элементам массивов

4. Линеаризация многомерных массивов

5. Команды работы со строками

6. Префикс rep, его функция

 

 



Поделиться:


Последнее изменение этой страницы: 2024-06-17; просмотров: 62; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.236 (0.006 с.)