Лабораторная работа 5.  Работа с одномерными массивами



Цель работы

· Закрепить знания:

  - по работе с отладчиком TD.exe;

  - команд условной передачи управления;

  - по работе с библиотекой макросов mac.lib.

· Научиться:

  - выполнять ввод и вывод массивов на языке Ассемблера;

  - применять способы косвенной адресации операндов;  

  - писать алгоритмы поиска, сортировки.

 

СОДЕРЖАНИЕ ОТЧЕТА

1. Постановка задачи2. Математическая модель 3. Таблица внешних спецификаций. 4. Таблица тестoв.5. Блок-схема программы.6. Листинг программы. 7. Протокол тестирования программы

 

 

Индивидуальные задания

 

ü В программах должен быть ввод исходных данных и вывод результатов на экран

 

 Вариант 1

Заменить первый максимальный элемент массива суммой отрицательных чисел массива X(n), n<=10.

 

Вариант 2

Найти М=min(X(i) + max( X(i), i=1..10.

 

Вариант 3

Дан массив А(10), заменить наименьший элемент массива на 0.

 

Вариант 4

Дан вектор X(x1,x2,..,x10). Найти количество и сумму нечетных отрицательных элементов вектора.

 

Вариант 5

Дан вектор Y(8). Найти сумму положительных элементов, предшествующих первому отрицательному элемента вектора.

 

Вариант 6

В векторе A(10) определить количество элементов, значения которых кратны заданной положительной величине С.

 

Вариант 7

Задан вектор X(12). Сформировать вектор Y из положительных элементов вектора Х, которые нацело делятся на 5.

 

Вариант 8

Задан вектор A10). Заменить нулевые элементы массива на сумму положительных элементов массива.

 

Вариант 9

Сформировать массив У(12) из последних цифр в десятичной записи соответствующих элементов вектора C(12). Например, c[1]=2346, то y[1]=6.    

 

Вариант 10

Сформировать массив У(12) из остатков от деления соответствующих элементов вектора C(12) на число 100. Например, если c[1]=2346, то y[1]=46

Вариант 11

 Сформировать массив У(10) из количества десятков в десятичной записи соответствующих элементов вектора C(10). Например, c[1]=2346, то y[1]=4

Вариант 12

Найти число членов вектора М(13), принадлежащих интервалу [A,B]

 

Вариант 13

Задан вектор C(13). Определить сколько членов вектора меньше заданного D.

 

Вариант 14

Задан вектор М(12). Найти первый член вектора, не принадлежащий отрезку [A,B], и его номер.

Вариант 15

Проверить, равна ли сумма положительных элементов вектора С(12) числу B.

Вариант 16

Задан вектор T(14). Заменить первый положительный элемент вектора на 1000.

Вариант 17

 Задан вектор X(16).Определить количество элементов, равных заданному числу В.

Вариант 18

Подсчитать число элементов вектора С(13), кратных натуральному числу T.

Вариант 20

Сформировать массив У(12) из количества сотен в десятичной записи соответствующих элементов вектора C(12). Например, c[1]=2346, то y[1]=3

 

Справочная информация

Основные понятия.

Массив. Размерность массива. Элемент массива. 

Массив это совокупность элементов одинакового типа. Массив состоит из фиксированного числа элементов. Размерность массива фиксируется при объявлении его и при исполнении программы не меняется. Все элементы массива располагаются в оперативной памяти. Размер области, отводимой под один элемент массива, зависит от указанного типа: для integer/Word выделяется по 2 байта, а для Byte/Shortint по 1 байту.

На ассемблере объявления массива констант и массива переменных могут иметь вид:

D DW 10,-4,1234,0,-5); массив констант

A DW 5 dup(?)  ;резервировано 5 слов по 2 байта.

Как видно из примера, на ассемблере явно указан размер элемента массива, но не указано, числа со знаком (integer/ Shortint) или без знака (Byte/Word). Программист должен сам контролировать предполагаемый диапазон значений элементов.

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

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

При работе с массивами в Ассемблере используется косвенная адресация полей памяти.

косвенная регистровая: [BX], [BP], [DT], [SI]

Регистровая базовая

[BХ] ± выражение 

[BХ] + смещение

регистровая индексная   [ DI ] и [ SI ]

Базовая индексная со смещением .

A [BX] [DI]

A + [BX] +[DI]

A + 4 [BX] [DI]

Нельзя одновременно в одном операнде использовать два (2) индексных или базовых регистра.

Еа = (DS)* 16 – (Р.И.) + смещение.

 


Дата добавления: 2019-02-12; просмотров: 246; Мы поможем в написании вашей работы!

Поделиться с друзьями:






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