Найти все элементы массива, которые больше левого соседа как минимум в два раза - 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

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

В этом коде выполняется следующая последовательность действий:

  1. Задаётся начальное значение регистра SI равным 1, а регистр DI равен 0.
  2. Устанавливается начальное значение регистра CX равным длине массива (len) минус 1.
  3. Затем выполняется цикл проверки, в котором происходит сравнение текущего элемента массива (arr[si]) с последующим элементом (arr[di]). Если первый элемент больше второго как минимум в два раза, то выполняется следующий блок кода.
  4. В этом блоке кода сначала происходит вывод на экран текущего элемента массива, затем выполняется цикл digit, который выводит на экран цифры этого элемента.
  5. После завершения цикла digit, происходит вывод на экран пробела, затем значение регистра DL сбрасывается обратно в ' ', а затем происходит переход к следующему элементу массива.
  6. Если текущий элемент массива не больше последующего, то происходит переход к следующему блоку кода.
  7. В этом блоке кода происходит вывод на экран текущего элемента массива, затем происходит переход к следующей итерации цикла проверки.
  8. После завершения цикла проверки, происходит завершение работы программы.

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


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

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

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