Найти все элементы массива, которые больше левого соседа как минимум в два раза - 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 сбрасывается обратно в ' ', а затем происходит переход к следующему элементу массива.
- Если текущий элемент массива не больше последующего, то происходит переход к следующему блоку кода.
- В этом блоке кода происходит вывод на экран текущего элемента массива, затем происходит переход к следующей итерации цикла проверки.
- После завершения цикла проверки, происходит завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д