Реализация конструкции цикла do while ** языке ассемблера. Составьте программу, которая...

+747 голосов
4.6m просмотров

Реализация конструкции цикла do while на языке ассемблера. Составьте программу, которая вычисляет сумму чисел от 100 до 200, кратных 7.


Информатика (14 баллов) | 4.6m просмотров
+85

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

Дан 1 ответ
+132 голосов

Немного о полученном коде.

  • Так как из реализации на C++ можно узнать, что ответ 2107 - очевидно, ответ не помещается в 2 байта, поэтому будет хранить его в двух регистрах: R1 и R2, соответственно старшие и младшие байты.
  • Сначала делим текущее значение числа k на 7 (команда DIV AB), если остаток нулевой, добавляем к младшим байтам текущее число и при наличии бита переноса увеличиваем старшие байты.
  • После этого проверяем, не равно ли текущее значение двумстам, если это так - завершаем программу, иначе увеличиваем это значение и возвращаемся в начало "цикла".

В приложении смотри:

  • непосредственно код программы на Ассемблере (37783247.asm.txt),
  • скриншот кода на Ассемблере и значения, хранящиеся в регистрах в результате выполнения,
  • соответствующий код на плюсах и результат выполнения,
  • на засыпку, результат конвертации числа 2107 из десятичной в 16-чную систему :)
(18.1k баллов)