Ввести массив, найти разницу между наибольшим и последним элементами массива - Assembler
Формулировка задачи:
Ввести массив, найти разницу между наибольшим и последним элементами массива.
Может кто-нибудь помочь с вот такой программкой? Заранее спасибо!
Решение задачи: «Ввести массив, найти разницу между наибольшим и последним элементами массива»
textual
Листинг программы
.model small .386 .data arr db 10 dup (?) msg db 'enter elements of array: ',0Ah,0Dh,'$' max db ? res db 'result: $' .stack db 255 (?) .code start: mov ax,@data mov ds,ax mov ah,09h lea dx,msg int 21h xor si,si mov cx,10 input: mov ah,02h mov dl,0Dh int 21h mov ah,01h int 21h cmp al,'0' jb input cmp al,'9' ja input or al,30h mov arr[si],al inc si mov ah,02h mov dl,0Ah int 21h loop input xor si,si mov al,arr[si] mov cx,9 search: cmp al,arr[si] jge next mov al,arr[si] next: inc si loop search cmp al,arr[9] jg one mov bl,arr[9] sub bl,al xchg al,bl jmp print one: sub al,arr[9] print: mov max,al mov ah,09h lea dx,res int 21h mov ah,02h mov dl,max or dl,30h int 21h mov ah,4Ch mov al,00h int 21h end start
Объяснение кода листинга программы
Код на языке Assembler выполняет следующие действия:
- Задает модель памяти как small и сегментный регистр ds равным сегменту данных.
- Объявляет переменные:
- arr - массив на 10 элементов, где каждый элемент может содержать числовое значение от 0 до 9.
- msg - строка, которая выводится на экран и содержит приглашение для ввода элементов массива.
- max - переменная для хранения наибольшего элемента массива.
- res - строка, которая выводится на экран и содержит результат вычисления разницы между наибольшим и последним элементами массива.
- Создает стек размером 255 байт.
- В блоке кода start:
- Перемещает сегмент данных в регистр ds.
- Выводит приглашение для ввода элементов массива.
- Инициализирует счетчик si для обхода массива.
- В цикле input считывает каждый элемент массива, проверяет его на допустимые значения от 0 до 9 и сохраняет в массиве arr.
- После ввода всех элементов массива, в блоке search находит наибольший элемент и сохраняет его в переменной max.
- Если наибольший элемент равен последнему элементу массива, то в блоке one вычисляется их разница.
- В противном случае, разница вычисляется в блоке print и сохраняется в переменной max.
- Выводит на экран результат вычисления разницы.
- Завершает работу программы. Таким образом, данный код выполняет ввод массива, находит разницу между наибольшим и последним элементами и выводит результат на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д