Подсчитать количество пар - 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 элементов:
- PUSHAD — сохранение в стеке регистра EDX.
- MOV ESI,-129 — перемещение в регистр ESI значения -129.
- MOV EBX,-128 — перемещение в регистр EBX значения -128.
- ForX: — начало цикла.
- MOV ECX,-128 — перемещение в регистр ECX значения -128.
- ForY: — начало вложенного цикла.
- XOR EAX,EAX — инициализация регистра EAX значением 0.
- SUB EAX,EBX — вычитание из регистра EAX значения из регистра EBX.
- CMOVS EAX, EBX — сохранение в регистре EAX значения из регистра EBX, если значение в регистре EBX больше или равно значению в регистре EAX.
- ADD EAX,ECX — сложение значения из регистра EAX с значением из регистра ECX.
- CMP EAX,70 — сравнение значения регистра EAX со значением 70.
- JG Next — переход к метке Next, если значение регистра EAX больше 70.
- INC EDX — увеличение значения в регистре EDX на 1.
- CMP EDX,200 - сравнение значения регистра EDX со значением 200.
- CMOVZ ESI,EAX — если значение регистра EDX больше или равно 200, то копирование значения из регистра EAX в регистр ESI.
- Next: — переход к следующей итерации внешнего цикла.
- INC ECX — увеличение значения в регистре ECX на 1.
- CMP ECX,127 - сравнение значения регистра ECX со значением 127.
- JLE ForY — переход к следующей итерации внутреннего цикла, если значение регистра ECX меньше или равно 127.
- INC EBX — увеличение значения в регистре EBX на 1.
- CMP EBX,127 - сравнение значения регистра EBX со значением 127.
- JLE ForX — переход к следующей итерации внешнего цикла, если значение регистра EBX меньше или равно 127.
- MOV [Count],EDX — сохранение значения из регистра EDX в переменную Count.
- MOV [A200],ESI — сохранение значения из регистра ESI в переменную A200.
- POPAD — восстановление из стека значения регистра EDX.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д