Основы языка ассемблер. Использование массивов

Содержание

Слайд 2

Использование массивов

Использование массивов

Слайд 3

Массивы Массивом называется последовательный набор однотипных данных, именованный одним идентификатором. Примеры

Массивы

Массивом называется последовательный набор однотипных данных, именованный одним идентификатором.
Примеры инициализации
M1 DD 0,1,2,3,4,5,6,7,8,9 M2 DD 0,1,2,3
Для инициализации

всех элементов массива одинаковыми значениями используется оператор DUP:
Идентификатор Тип Размер DUP (Значение)
Идентификатор - имя массива; Тип - определяет количество байт, занимаемое одним элементом; Размер - константа, характеризующая количество элементов в массиве Значение - начальное значение элементов.
a DD 20 DUP (0) - описывает массив a из 20 элементов, начальные значения которых равны 0.
Если необходимо выделить память, но не инициализировать ее, в качестве поля Значение используется знак ?. Например,
b DD 20 DUP(?)
Слайд 4

Задача Заданы массивы A[N] и B[N] из элементов типа Byte (8-разрядные

Задача

Заданы массивы A[N] и B[N] из элементов типа Byte (8-разрядные целые

без знака). Составить программу, формирующую массив C[N] из произведения элементов массивов A и B: C[i]=A[i]*B[i]. Размерность элементов массива C[N] должна обеспечивать корректное умножение (если результат не умещается в 8 разрядов).
Слайд 5

Программа org 100h .model tiny .data N dw 10 ; Кол-во

Программа

org 100h
.model tiny
.data
N dw 10 ; Кол-во элементов в массиве.
A db 1, 2, 3, 4, 5,

6, 7, 8, 9, 10
B db 3, 4, 15,6, 1, 0, 0, 2, 2, 18
C dw 10 dup(0)
.code
Start:
mov si, 0 ; индекс массивов A и B.
mov di, 0 ; индекс массива C.
M1: mov ah, 0
mov al, A[si]
mul B[si] ; Умножение AX = AL*B[si].
mov C[di], ax ; Запись результата.
inc si ; Завершение
add di, 2 ; тела цикла.
cmp si, N
jb M1
end Start
ret
Слайд 6

Просмотр результата

Просмотр результата

Слайд 7

Задача Задан массив A[N] из элементов типа целое 16-разрядное со знаком.

Задача

Задан массив A[N] из элементов типа целое 16-разрядное со знаком.
Составить программу

суммирования элементов массива и абсолютных значений элементов массива.
Обычное суммирование провести в переменной Sum, суммирование по модулю - в переменной Abs.
Слайд 8

Программа org 100h .model tiny .data N dw 10 ; Количество

Программа

org 100h
.model tiny
.data
N dw 10 ; Количество элементов в массиве A.
A dw -1, -5, 3, 5,

28, -11, 7, 8, 32, -90
Sum dw 0 ; Результат обычного суммирования.
Abs dw 0 ; Результат суммирования по модулю.
.code
Start:
mov si, 0
mov cx, N
M1: mov ax, A[si]
add Sum, ax ; Обычное суммирование.
or ax, ax ; Проверка перед суммированием по модулю.
jns M2 ; Если число положит. - сразу прибавить к Abs.
neg ax ; Если число отрицательное - взять по модулю.
M2: add Abs, ax
add si, 2 ; индекс на следующий элемент.
loop M1 ; Повторять тело цикла N раз.
end Start
ret
Слайд 9

Задание Задан массив A[N] из элементов типа целое 8-разрядное со знаком.

Задание

Задан массив A[N] из элементов типа целое 8-разрядное со знаком. Составить

программу нахождения максимального и минимального элемента. Разместить индексы максимального и минимального элемента в отдельных ячейках памяти.
Индекс максимального элемента разместить в ячейке IndMax, а индекс минимального элемента разместим в ячейке IndMin.
Слайд 10

Программа

Программа

Слайд 11

Задача Задан массив A[N] из элементов типа Word (целое 16-разрядное без

Задача

Задан массив A[N] из элементов типа Word (целое 16-разрядное без

знака).
Составить программу сортировки массива по убыванию.
Алгоритм
Просматр массив целиком, сравнивая каждый раз парные элементы: A[i-1] и A[i].
Если возникла ситуация A[i-1] Затем повтор просмотра массива сначала.
Прекращение сортировки тогда, когда в ходе текущего просмотра массива не произойдёт ни одного обмена (ChFlag=0).
.