Архитектура компьютера

Введение
Теоретическая часть
    1 Архитектура компьютера
     
Лабораторный практикум
  1 Создание программы на языке ассемблера
  2 Применение функций DOS и BIOS
  3 Линейные алгоритмы
  4 Десятичная арифметика
  5 Команды передачи управления
  6 Циклы с условием
  7 Циклы со счетчиком
  8 Работа с массивами
  9 Цепочечные команды
     
Приложения
  1 Таблица кодов символов ASCII
  2 Функции DOS и BIOS
     
Гостевая книга

Лабораторная работа №8

Работа с массивами

Вопросы для повторения:

  1. Для каких данных целесообразно использовать массивы?
  2. Как организуется работа с массивами в языках высокого уровня?
  3. Какие алгоритмы существуют для сортировки массивов и поиска элементов в них?

В языке ассемблера не существует специальных средств для организации работы с массивами. Массивы описываются в виде последовательности элементов нужной размерности; работа с ними ведется с использованием методов косвенной адресации.

Пример: Задан массив. Вывести на экран сумму его элементов.

1     data segment  
2           mas db 12, 2, 7, 3, 2, 0, 21, 9, 0, 16  ;исходный массив
3           len dw $-mas ;размер массива в байтах
4   data ends  
5        
6   code segment  
7   start:  
8     assume cs:code, ds: data      
9     mov ax, data  
10     mov ds, ax  
11        
12     lea bx, mas ;берём в bx адрес первого элемента
13     mov cx, len ;счетчик цикла
14     xor ax, ax  
15   cikl:  add al, [bx] ;прибавляем к al байт, адрес которого хранится в bx
16     inc bx ;переходим к следующему элементу
17     loop cikl  
18        
19     aam ;преобразуем сумму в BCD-код
20     add ax, 3030h ;затем в ASCII-код
21     mov bx, ax ;и выводим
22     mov ah, 02  
23     mov dl, bh  
24     int 21h  
25     mov dl, bl  
26     int 21h  
27        
28     mov ax, 4c00h  
29     int 21h  
30   code ends  
31   end start  

При обработке не байтовых массивов следует учитывать размер элементов. Так в приведенном выше примере в строке 3 вычисляется размер массива в байтах, и в строке 13 он берётся за количество элементов. Для массива слов это значение придется поделить на 2. В строке 16 для перехода к следующему элементу используется простой инкремент адреса, для массива слов эта строка может выглядеть так: add bx, 2.

Задания для выполнения:

  1. Подсчитать в массиве количество элементов, равных введённому N; (5 баллов);
  2. Заменить в массиве все четные элементы нулями; (7 баллов);
  3. Определить номер первого равного нулю элемента; (7 баллов);

Задания для самостоятельного выполнения:

  1. Вывести на экран все нечетные элементы массива; (5 баллов);
  2. Отсортировать массив по возрастанию, используя любой известный алгоритм сортировки; (15 баллов);
© Истомин А.С. ЗабГГПУ
Хостинг от uCoz