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