Отсортировать по возрастанию только числа, меньше порога, введенного с клавиатуры (раздельная компиляция asm и C) - Assembler/MASM

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

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

Отсортировать по возрастанию только числа, меньше порога, введенного с клавиатуры. Сортировку производить в массиве D. Числа больше порога должны оставаться на своих местах. Вот такая наработка в объектном файле на MASM. Как допилить?
.686
.MODEL FLAT, C
.STACK
.DATA
.CODE
Fun PROC C adr_mas:dword, n:dword, porog:dword
        xor eax,eax
        xor ecx,ecx
        mov esi, adr_mas
        
        a2:
            mov ecx, n
            xor ebx,ebx
        a3:
            mov eax,[esi+ecx*4-4]
            cmp [esi+ecx*4],eax
            jnb a4
            setna bl
            xchg eax,[esi+ecx*4]   
            mov [esi+ecx*4-4],eax
        a4:    
            loop a3   
            add esi,4   
            dec ebx    
            jnz exit    
            dec n
            jnz a2
        exit:
    ret
Fun ENDP
END

Решение задачи: «Отсортировать по возрастанию только числа, меньше порога, введенного с клавиатуры (раздельная компиляция asm и C)»

textual
Листинг программы
for (int i = 0; i < n; i++) 
    { 
        if (D[i] <= porog)
        {
            for (int j = i; j < n; j++)
            {
                if (D[j] < D[i])
                {
                    temp = D[j];
                    D[j] = D[i];
                    D[i] = temp;
                }
            }
        }
    }

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

  1. Ввод порога с клавиатуры и сохранение его в переменной porog.
  2. Числа меньше или равные порогу сохраняются в массиве D.
  3. Размер массива D определяется в переменной n.
  4. Условие i < n гарантирует, что индексы i, j не выходят за пределы массива D.
  5. Условие D[i] <= porog проверяет, что i-ый элемент массива не больше порога.
  6. Если условие выполняется, то i-ый элемент массива меняет своё положение на j-ый элемент массива, который меньше i-го.
  7. Переменная temp используется для сохранения значения j-го элемента массива.
  8. Процесс начинается с i=0 и продолжается до тех пор, пока i < n.

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


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

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

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