Напишите программу, которая выбирает из элементов заданного массива байтов максимальный элемент - Assembler

Узнай цену своей работы

Формулировка задачи:

5. Напишите программу, которая выбирает из элементов заданного массива байтов максимальный элемент.

Решение задачи: «Напишите программу, которая выбирает из элементов заданного массива байтов максимальный элемент»

textual
Листинг программы
.MODEL small    ;отводим под стек и под данные по 64Кб
.STACK 100h ;отмечаем начало сегмента стека
.DATA   ;отмечаем начало сегмента данных
A DW 5, 3, 9, 4, 5 ;описание массива из 5 элементов
Max DW 0    ;описание переменной Max
.CODE   ;отмечаем начало сегмента кодов
main PROC   
mov AX, @data   ;копируем адрес 
mov DS, AX  ;сегмента данных
mov SI, OFFSET A    ;заносим в SI начало массива А
mov AX, [SI]    
mov Max, AX ;в Мах заносим первый элемент массива
mov CX, 4   ;в СХ заносим количество итераций
L1: 
inc SI    ;сдвигаемся по массиву к следующему 
inc SI      ;элементу
mov AX,[SI] ;заносим в АХ текущий элемент массива
cmp AX, Max ;сравниваем АХ с Мах
jbe L2  ;если меньше или равно, переходим на L2 
mov Max, AX ;иначе запоминаем новый максимум
L2: 
loop L1 ;циклически повторяем все действия
mov AX,4C00h    ;выход 
int 21h ;из программы
main ENDP   
END main

Объяснение кода листинга программы

  1. .MODEL small — данная команда устанавливает модель памяти, в которой будет выполняться программа. В данном случае модель памяти — small, что означает, что для данных и стека выделено по 64 Кб.
  2. .STACK 100h — команда, которая определяет размер стека в 100 байт.
  3. .DATA — команда, которая определяет сегмент данных.
  4. A DW 5, 3, 9, 4, 5 — описание массива из 5 элементов.
  5. Max DW 0 — описание переменной Max.
  6. .CODE — команда, которая определяет сегмент кода.
  7. main PROC — процедура main, которая является точкой входа в программу.
  8. mov AX, @data — команда, которая копирует в регистр AX адрес сегмента данных.
  9. mov DS, AX — команда, которая связывает сегмент данных с регистром DS.
  10. mov SI, OFFSET A — команда, которая копирует в регистр SI адрес начала массива A.
  11. mov AX, [SI] — команда, которая загружает в регистр AX значение элемента массива, на который указывает регистр SI.
  12. mov Max, AX — команда, которая сохраняет в переменной Max значение регистра AX.
  13. mov CX, 4 — команда, которая загружает в регистр CX значение 4, которое будет использоваться как счётчик итераций.
  14. L1: inc SI — команда, которая увеличивает значение регистра SI на 1, чтобы перейти к следующему элементу массива.
  15. inc SI — команда, которая увеличивает значение регистра SI на 1, чтобы перейти к следующему элементу массива.
  16. mov AX,[SI] — команда, которая загружает в регистр AX значение элемента массива, на который указывает регистр SI.
  17. cmp AX, Max — команда, которая сравнивает значение регистра AX с значением переменной Max.
  18. jbe L2 — команда, которая выполняется, если значение регистра AX меньше или равно значению переменной Max. В этом случае программа переходит к блоку L2.
  19. mov Max, AX — команда, которая сохраняет в переменной Max новое максимальное значение.
  20. L2: loop L1 — команда, которая повторяет все действия, описанные в блоке L1.
  21. mov AX,4C00h — команда, которая устанавливает значение регистра AX равным 4C00h. Это значение используется для выхода из программы.
  22. int 21h — команда, которая вызывает прерывание 21h, что приводит к выходу из программы.
  23. main ENDP — завершающая команда процедуры main.
  24. END main — завершающая команда программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы