Подсчитать количество пар - Assembler

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

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

На промежутке от -128 до 127 Подсчитать количество таких пар чисел X и Y, что (/Х/+У) <=70 И вывести на экран Также найти и вывести на экран двухсотое число
Желательно в Visual Studio C++

Решение задачи: «Подсчитать количество пар»

textual
Листинг программы
    PUSHAD
    MOV ESI,-129
    MOV  EBX,-128
    ForX:
 
    MOV  ECX,-128
    ForY:
    XOR EAX,EAX
    SUB EAX,EBX
    CMOVS EAX, EBX
    ADD EAX,ECX
    CMP EAX,70
    JG Next
    INC  EDX
    CMP EDX,200
    CMOVZ ESI,EAX
    Next:
    INC  ECX
    CMP ECX,127
    JLE ForY
    INC  EBX
    CMP EBX,127
    JLE ForX
    MOV [Count],EDX
    MOV [A200],ESI
    POPAD

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

В данном коде, написанном на языке Assembler, происходит подсчет количества пар. Список действий, которые выполняются в коде, можно оформить в виде следующих 20 элементов:

  1. PUSHAD — сохранение в стеке регистра EDX.
  2. MOV ESI,-129 — перемещение в регистр ESI значения -129.
  3. MOV EBX,-128 — перемещение в регистр EBX значения -128.
  4. ForX: — начало цикла.
  5. MOV ECX,-128 — перемещение в регистр ECX значения -128.
  6. ForY: — начало вложенного цикла.
  7. XOR EAX,EAX — инициализация регистра EAX значением 0.
  8. SUB EAX,EBX — вычитание из регистра EAX значения из регистра EBX.
  9. CMOVS EAX, EBX — сохранение в регистре EAX значения из регистра EBX, если значение в регистре EBX больше или равно значению в регистре EAX.
  10. ADD EAX,ECX — сложение значения из регистра EAX с значением из регистра ECX.
  11. CMP EAX,70 — сравнение значения регистра EAX со значением 70.
  12. JG Next — переход к метке Next, если значение регистра EAX больше 70.
  13. INC EDX — увеличение значения в регистре EDX на 1.
  14. CMP EDX,200 - сравнение значения регистра EDX со значением 200.
  15. CMOVZ ESI,EAX — если значение регистра EDX больше или равно 200, то копирование значения из регистра EAX в регистр ESI.
  16. Next: — переход к следующей итерации внешнего цикла.
  17. INC ECX — увеличение значения в регистре ECX на 1.
  18. CMP ECX,127 - сравнение значения регистра ECX со значением 127.
  19. JLE ForY — переход к следующей итерации внутреннего цикла, если значение регистра ECX меньше или равно 127.
  20. INC EBX — увеличение значения в регистре EBX на 1.
  21. CMP EBX,127 - сравнение значения регистра EBX со значением 127.
  22. JLE ForX — переход к следующей итерации внешнего цикла, если значение регистра EBX меньше или равно 127.
  23. MOV [Count],EDX — сохранение значения из регистра EDX в переменную Count.
  24. MOV [A200],ESI — сохранение значения из регистра ESI в переменную A200.
  25. POPAD — восстановление из стека значения регистра EDX.

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


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

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

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