Дано 4-х значное число. Выяснить, различны ли его цифры - Assembler

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

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

Помогите пожалуйста. Дано 4-х значное число.Выяснить различны ли его цифры. Если можно подробно описать действия вообще не могу понять.

Решение задачи: «Дано 4-х значное число. Выяснить, различны ли его цифры»

textual
Листинг программы
        mov   eax,[chislo]
        mov   ebx,10
        mov   ecx,4
cycle:  xor   edx,edx
        div   ebx
        push  edx
        loop  cycle
 
        pop   eax ebx ecx edx
        cmp   eax,ebx
        jne   end
        cmp   eax,ecx
        jne   end
        cmp   eax,edx
        jne   end
        push  f1
        jmp   prn
end:    push  f2
prn:    call  _printf
        add   esp,4
        ret

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

Выполняемый код на ассемблере вычисляет контрольную сумму цифр заданного четырёхзначного числа и сравнивает её с каждой цифрой числа. Если хотя бы одна цифра числа не совпадает с контрольной суммой, то выводится сообщение об этом. Вот список действий, которые происходят в этом коде:

  1. Число загружается в регистр eax.
  2. Регистр ebx устанавливается равным 10.
  3. Регистр ecx устанавливается равным 4.
  4. Запускается цикл, в котором регистр edx инициализируется как 0.
  5. Регистр edx инкрементируется на единицу после каждой итерации цикла.
  6. Регистр edx делится на ebx.
  7. Результат деления (остаток от деления) загружается в регистр edx.
  8. Регистр edx добавляется в стек.
  9. Когда edx становится равным нулю, выполняется переход к следующей цифре числа.
  10. Регистры eax, ebx и ecx извлекаются из стека.
  11. Регистры eax и ebx сравниваются. Если они не равны, то выполняется переход к обработке ошибки.
  12. Регистры eax и ecx сравниваются. Если они не равны, то выполняется переход к обработке ошибки.
  13. Регистры eax и edx сравниваются. Если они не равны, то выполняется переход к обработке ошибки.
  14. Функция _printf вызывается с аргументом Неверная цифра.
  15. Стек очищается, чтобы удалить локальные переменные.
  16. Программа возвращает управление.
  17. Если все цифры числа совпадают с контрольной суммой, то выводится сообщение Цифры верны.
  18. Стек очищается, чтобы удалить локальные переменные.
  19. Программа возвращает управление.
  20. Завершение работы программы.

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

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