Архитектура компьютера
Введение Теоретическая часть 1 Архитектура компьютера Лабораторный практикум 1 Создание программы на языке ассемблера 2 Применение функций DOS и BIOS 3 Линейные алгоритмы 4 Десятичная арифметика 5 Команды передачи управления 6 Циклы с условием 7 Циклы со счетчиком 8 Работа с массивами 9 Цепочечные команды Приложения 1 Таблица кодов символов ASCII 2 Функции DOS и BIOS Гостевая книга Лабораторная работа №8
Работа с массивами
Вопросы для повторения:
- Для каких данных целесообразно использовать массивы?
- Как организуется работа с массивами в языках высокого уровня?
- Какие алгоритмы существуют для сортировки массивов и поиска элементов в них?
В языке ассемблера не существует специальных средств для организации работы с массивами. Массивы описываются в виде последовательности элементов нужной размерности; работа с ними ведется с использованием методов косвенной адресации.
Пример: Задан массив. Вывести на экран сумму его элементов.
1 data segment2 mas db 12, 2, 7, 3, 2, 0, 21, 9, 0, 16;исходный массив 3 len dw $-mas;размер массива в байтах 4 data ends5 6 code segment7 start:8 assume cs:code, ds: data9 mov ax, data10 mov ds, ax11 12 lea bx, mas;берём в bx адрес первого элемента 13 mov cx, len;счетчик цикла 14 xor ax, ax15 cikl:add al, [bx];прибавляем к al байт, адрес которого хранится в bx 16 inc bx;переходим к следующему элементу 17 loop cikl18 19 aam;преобразуем сумму в BCD-код 20 add ax, 3030h;затем в ASCII-код 21 mov bx, ax;и выводим 22 mov ah, 0223 mov dl, bh24 int 21h25 mov dl, bl26 int 21h27 28 mov ax, 4c00h29 int 21h30 code ends31 end startПри обработке не байтовых массивов следует учитывать размер элементов. Так в приведенном выше примере в строке 3 вычисляется размер массива в байтах, и в строке 13 он берётся за количество элементов. Для массива слов это значение придется поделить на 2. В строке 16 для перехода к следующему элементу используется простой инкремент адреса, для массива слов эта строка может выглядеть так:
add bx, 2.Задания для выполнения:
- Подсчитать в массиве количество элементов, равных введённому N; (5 баллов);
- Заменить в массиве все четные элементы нулями; (7 баллов);
- Определить номер первого равного нулю элемента; (7 баллов);
Задания для самостоятельного выполнения:
- Вывести на экран все нечетные элементы массива; (5 баллов);
- Отсортировать массив по возрастанию, используя любой известный алгоритм сортировки; (15 баллов);
© Истомин А.С. ЗабГГПУХостинг от uCoz