Вывести индексы первого и последнего из элементов массива, удовлетворяющих условию - Assembler

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

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

Подкиньте идею, как сделать. Или код, если он не тяжёлый, пожалуйста. На tasm или fasm "Данный целочисленный массив А размера 10. Вывести номер первого и последнего из его элементов А [i], удовлетворяющих двойной неравенства: А [1] <A [i] <А [10]."

Решение задачи: «Вывести индексы первого и последнего из элементов массива, удовлетворяющих условию»

textual
Листинг программы
mov first,0
mov last,0
mov si,1
mov cx,8
get:
    mov al,byte ptr mas[si]
        
    cmp al,byte ptr mas[0]
    jng next
        
    cmp al,byte ptr mas[9]
    jnl next
        
    cmp first,0
    jnz skip
        
    mov first,si
        
    skip:
    mov last,si
        
    next:
    inc si
loop get

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

В данном коде реализован алгоритм поиска первого и последнего элемента массива, удовлетворяющего условию. Примечание: При описании работы алгоритма мы будем использовать следующие номера регистра:

  1. first - индекс первого элемента, удовлетворяющего условию
  2. last - индекс последнего элемента, удовлетворяющего условию
  3. si - текущий индекс элемента, с которого начинается поиск
  4. cx - количество элементов, которые необходимо проверить Код выполняет следующие действия:
  5. Инициализация first и last значением 0.
  6. Установка si равным 1.
  7. Установка cx равным 8 (предполагается, что это размер массива).
  8. Запуск цикла get.
  9. В каждой итерации цикла значение al сравнивается с первым и последним элементом массива (mas[0] и mas[9]). Если условие не выполняется, то происходит переход к следующей итерации.
  10. Если условие выполняется для всех элементов, то first и last устанавливаются равными si.
  11. Если условие выполняется хотя бы для одного элемента, то происходит переход к следующей итерации.
  12. После выполнения цикла, first и last содержат индексы первого и последнего элемента, удовлетворяющего условию. Таким образом, в результате выполнения данного кода будут определены индексы первого и последнего элемента массива, удовлетворяющего условию.

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

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