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

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

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

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

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

textual
Листинг программы
  1.         mov   eax,[chislo]
  2.         mov   ebx,10
  3.         mov   ecx,4
  4. cycle:  xor   edx,edx
  5.         div   ebx
  6.         push  edx
  7.         loop  cycle
  8.  
  9.         pop   eax ebx ecx edx
  10.         cmp   eax,ebx
  11.         jne   end
  12.         cmp   eax,ecx
  13.         jne   end
  14.         cmp   eax,edx
  15.         jne   end
  16.         push  f1
  17.         jmp   prn
  18. end:    push  f2
  19. prn:    call  _printf
  20.         add   esp,4
  21.         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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы