Найти все элементы массива, которые больше левого соседа как минимум в два раза - Assembler
Формулировка задачи:
На языке Ассемблера
1) Дан массив целых чисел. Найти все элементы, которые больше левого соседа как минимум в два раза.
2) Дан массив целых чисел. Найти номер элемента, сумма цифр которого максимальна.
Буду признателен!
Решение задачи: «Найти все элементы массива, которые больше левого соседа как минимум в два раза»
textual
Листинг программы
.model small .386 .data arr db 11,35,70,9,87,9,46,98,3,15 len dw $-arr .stack db 255 dup(?) .code start: mov ax,@data mov ds,ax mov si,1 xor di,di mov cx,len dec cx check: mov al,byte ptr [arr+si] cbw mov bl,byte ptr [arr+di] div bl cmp al,2 jl skip push ax push bx push cx push dx mov bx,10 mov al,byte ptr [arr+si] cbw xor cx,cx del: xor dx,dx div bx push dx inc cx or ax,ax jnz del digit: mov ah,02h pop dx add dx,30h int 21h loop digit mov ah,02h mov dl,' ' int 21h pop dx pop cx pop bx pop ax skip: inc si inc di loop check mov ah,4Ch mov al,00h int 21h end start
Объяснение кода листинга программы
В этом коде выполняется следующая последовательность действий:
- Задаётся начальное значение регистра SI равным 1, а регистр DI равен 0.
- Устанавливается начальное значение регистра CX равным длине массива (len) минус 1.
- Затем выполняется цикл проверки, в котором происходит сравнение текущего элемента массива (arr[si]) с последующим элементом (arr[di]). Если первый элемент больше второго как минимум в два раза, то выполняется следующий блок кода.
- В этом блоке кода сначала происходит вывод на экран текущего элемента массива, затем выполняется цикл digit, который выводит на экран цифры этого элемента.
- После завершения цикла digit, происходит вывод на экран пробела, затем значение регистра DL сбрасывается обратно в ' ', а затем происходит переход к следующему элементу массива.
- Если текущий элемент массива не больше последующего, то происходит переход к следующему блоку кода.
- В этом блоке кода происходит вывод на экран текущего элемента массива, затем происходит переход к следующей итерации цикла проверки.
- После завершения цикла проверки, происходит завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д