В памяти элементы этого массива будут расположены в следующей последовательности:
Если необходимо трактовать эту последовательность как двумерный массив и извлечь, например, элемент mas(2, 3) = 23, то, убедимся что:
Полный адрес mas(2, 3) = mas + 4 * 1 * 2 + 3*1 = mas + 11
Организовывают адресацию двумерного массива, используя базово-индексную адресацию. При этом возможны два основных варианта выбора компонентов для формирования полного адреса:
4) сочетание прямого адреса, как базового компонента адреса, и двух индексных регистров для хранения индексов:
mov ax,mas[ebx][esi]
5) сочетание двух индексных регистров, один из которых является и базовым, и индексным одновременно, а другой — только индексным:
mov ax,[edi][esi]
Пример 1: Фрагмент программы выборки элемента массива mas(2,3) и запись его значения в регистр al.
; 23 04 05 67
; 05 06 01 99
; 67 08 09 23
; 87 09 00 08
mov si,4*1*i ; 1 – размер элемента массива 1 байт
mov di,j*1 ; 1 - размер элемента массива 1 байт
mov al,mas[si][di] ;в аl элемент mas(2,3)=23
Пример 2: Фрагмент программы выборки элемента массива mas(2,3) и его обнуления
При анализе работы программы принято, что элементы массива нумеруются с 0. При поиске определенного элемента массив просматривается от начала и до конца. Программа сохраняет в поле foundtime количество вхождений искомого элемента в массив. В качестве индексных регистров используются si и bx.
Самостоятельно на практике: Разработать программу для работы с двумерным массивом размерностью 3х5. В массиве определить количество элементов, которые больше среднего арифметического всех элементов массива. Элементы массива размером в слово. Для подсчёта среднего арифметического можно использовать сопроцессор.