Найти элемент массива, имеющий максимальное абсолютное значение - Assembler
Формулировка задачи:
Найти элемент массива, имеющий максимальное абсолютное значение, и
записать в RgCX(формат элементов массива - байт).
Решение задачи: «Найти элемент массива, имеющий максимальное абсолютное значение»
textual
Листинг программы
LOCALS .model small .stack 100h .data A db -4, 10, -100, 50, 80, 111, -112, 120, -128 Len dw $-A Max db ? .code main proc mov ax, @data mov ds, ax mov cx, Len lea si, A mov bh, 0 ;текущее абсолютное значение максимума mov bl, 0 ;значение элемента с максимальным модулем @@For: ;загрузить значение элемента mov al, [si] ;значение элемента mov ah, al ;модуль значения элемента ;взятие модуля (абсолютного значения) or ah, ah jns @@Positive neg ah @@Positive: ;выбор максимума cmp ah, bh jbe @@Next mov bx, ax ;запоминание нового максимума @@Next: ;переход к следующему элементу add si, 1 loop @@For ;расширение байта до слова mov al, bl cbw ;сохранение результата в регистре CX mov cx, ax mov ax, 4C00h int 21h main endp end main
Объяснение кода листинга программы
A
- массив элементов: -4, 10, -100, 50, 80, 111, -112, 120, -128Len
- длина массива, вычисляемая как разница между текущим адресом и началом массиваMax
- переменная, в которой будет храниться результат (максимальное по модулю значение) Код выполняет следующие операции:- Загрузка адреса данных
- Установка регистра данных
ds
равным адресу данных - Инициализация счетчика элементов
cx
значениемLen
- Загрузка адреса массива
A
в регистрsi
- Установка переменных
bh
иbl
в 0 (текущее абсолютное значение максимума и значение элемента с максимальным модулем соответственно) - Цикл для обхода массива и нахождения элемента с максимальным модулем
- Загрузка значения элемента
- Вычисление модуля значения элемента
- Сравнение модуля с текущим максимумом и сохранение нового максимума, если необходимо
- Переход к следующему элементу массива
- Проверка условия завершения цикла и повторение, если не все элементы обработаны
- Расширение байта до слова
- Сохранение результата в регистре
cx
- Завершение программы
Код ищет элемент в массиве, имеющий максимальное по модулю значение, и сохраняет его в регистре
cx
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д