Так как из реализации на C++ можно узнать, что ответ 2107 - очевидно, ответ не помещается в 2 байта, поэтому будет хранить его в двух регистрах: R1 и R2, соответственно старшие и младшие байты.Сначала делим текущее значение числа k на 7 (команда DIV AB), если остаток нулевой, добавляем к младшим байтам текущее число и при наличии бита переноса увеличиваем старшие байты.После этого проверяем, не равно ли текущее значение двумстам, если это так - завершаем программу, иначе увеличиваем это значение и возвращаемся в начало "цикла".
В приложении смотри:
непосредственно код программы на Ассемблере (37783247.asm.txt),скриншот кода на Ассемблере и значения, хранящиеся в регистрах в результате выполнения,соответствующий код на плюсах и результат выполнения,на засыпку, результат конвертации числа 2107 из десятичной в 16-чную систему :)
abroskin2002
05.01.2022
*переводим большую единицу (Гб) в меньшую (Мб)* Что бы это сделать нужно 40 Гб * 1024 Но так как мы знаем что 1024 это 2^10, то получаться что 40Гб= 40* 2^10Мб чтобы найти кол-во дисков Нужно объем информации разделить (40 * 2^10) на объем дика (600) (40*2^10) \ (600) = (5*2^3*2^10) \ (75*2^3) *сокращаем 2^3* = =(5*2^10) \ (75) *возводим 2 в 10 степень и умножаем на 5* = =5120 \ 75 =68,2666... *округляем в большую сторону, т.к по условию задачи дано что информация должна занимать полностью диск* ОТВЕТ : 69
*переводим большую единицу (Гб) в меньшую (Мб)* Что бы это сделать нужно 40 Гб * 1024 Но так как мы знаем что 1024 это 2^10, то получаться что 40Гб= 40* 2^10Мб чтобы найти кол-во дисков Нужно объем информации разделить (40 * 2^10) на объем дика (600) (40*2^10) \ (600) = (5*2^3*2^10) \ (75*2^3) *сокращаем 2^3* = =(5*2^10) \ (75) *возводим 2 в 10 степень и умножаем на 5* = =5120 \ 75 =68,2666... *округляем в большую сторону, т.к по условию задачи дано что информация должна занимать полностью диск* ОТВЕТ : 69
Немного о полученном коде.
Так как из реализации на C++ можно узнать, что ответ 2107 - очевидно, ответ не помещается в 2 байта, поэтому будет хранить его в двух регистрах: R1 и R2, соответственно старшие и младшие байты.Сначала делим текущее значение числа k на 7 (команда DIV AB), если остаток нулевой, добавляем к младшим байтам текущее число и при наличии бита переноса увеличиваем старшие байты.После этого проверяем, не равно ли текущее значение двумстам, если это так - завершаем программу, иначе увеличиваем это значение и возвращаемся в начало "цикла".В приложении смотри:
непосредственно код программы на Ассемблере (37783247.asm.txt),скриншот кода на Ассемблере и значения, хранящиеся в регистрах в результате выполнения,соответствующий код на плюсах и результат выполнения,на засыпку, результат конвертации числа 2107 из десятичной в 16-чную систему :)