![]() |
|
![]() ![]() ![]() |
|
deeeman |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 11.12.2007 Репутация: нет Всего: нет |
Привет!
Подскажите мне как написать программу умножения двух 16-разрядных чисел без знака на языке ассемблера МП К580 или где взять литературу Описание: Умножение двоичных чисел представляет последовательность операций сдвига и сложения (аналогично умножению «в столбик» десятичных чисел). Шестнадцатиразрядные числа занимают два байта, поэтому целесообразен следующий алгоритм: - загружаем множимое в пару регистров DE, множитель – в пару регистров BC, результат будет храниться в паре регистров HL. - умножаем множимое сначала на младший байт множителя, потом – на старший байт, для этого: - загружаем в регистр А значение регистра С. - регистр С обнуляем, и в дальнейшем используем в качестве счетчика - в регистр С заносим значение 8 (00001000). - организуем цикл: при каждом обороте цикла анализируем разряды множителя, начиная с его старшего разряда. В соответствии с этим частичные произведения будут формироваться, начиная со старшего частичного произведения. Накопление суммы частичных произведений будем производить в паре регистров HL, то есть к содержимому предварительно сброшенной в нуль пары регистров HL вначале прибавим восьмое частичное произведение; затем, сдвинув на один разряд влево содержимое пары регистров HL, прибавим седьмое частичное произведение, и так далее, пока не будут просуммированы все частичные произведения. После этого уменьшаем значение счетчика (регистра C) на единицу. Цикл выполняем до тех пор пока значение регистра С не станет равным нулю. - сдвигаем на один разряд влево содержимое регистров HL, загружаем в регистр A значение регистра В, устанавливаем значение регистра С в 8, и повторяем цикл: то есть производим умножение на старший байт. - записываем полученное произведение – значение пары регистров HL - в оперативную память. Следует учесть, что если полученное произведение будет более, чем шестнадцатиразрядным, то старшие разряды будут отброшены. Присоединённый файл ( Кол-во скачиваний: 7 ) ![]() |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 1 Всего: 454 |
Не понял... алгоритм у тебя есть - чего еще надо? пиши...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
deeeman |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 11.12.2007 Репутация: нет Всего: нет |
ок, правила прочитал.
подскажи где мне можно найти материал по МП К580 и простые алгоритмы? Это сообщение отредактировал(а) deeeman - 11.12.2007, 10:54 |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 1 Всего: 207 |
deeeman,
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
deeeman |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 11.12.2007 Репутация: нет Всего: нет |
подскажи где мне можно найти материал по МП К580
и простые алгоритмы? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm для начинающих" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для начинающих | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |