![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 11.12.2007
Сообщений: 2
|
![]()
Привет!
Подскажите мне как написать программу умножения двух 16-разрядных чисел без знака на языке ассемблера МП К580 или где взять литературу Описание: Умножение двоичных чисел представляет последовательность операций сдвига и сложения (аналогично умножению «в столбик» десятичных чисел). Шестнадцатиразрядные числа занимают два байта, поэтому целесообразен следующий алгоритм: - загружаем множимое в пару регистров DE, множитель – в пару регистров BC, результат будет храниться в паре регистров HL. - умножаем множимое сначала на младший байт множителя, потом – на старший байт, для этого: - загружаем в регистр А значение регистра С. - регистр С обнуляем, и в дальнейшем используем в качестве счетчика - в регистр С заносим значение 8 (00001000). - организуем цикл: при каждом обороте цикла анализируем разряды множителя, начиная с его старшего разряда. В соответствии с этим частичные произведения будут формироваться, начиная со старшего частичного произведения. Накопление суммы частичных произведений будем производить в паре регистров HL, то есть к содержимому предварительно сброшенной в нуль пары регистров HL вначале прибавим восьмое частичное произведение; затем, сдвинув на один разряд влево содержимое пары регистров HL, прибавим седьмое частичное произведение, и так далее, пока не будут просуммированы все частичные произведения. После этого уменьшаем значение счетчика (регистра C) на единицу. Цикл выполняем до тех пор пока значение регистра С не станет равным нулю. - сдвигаем на один разряд влево содержимое регистров HL, загружаем в регистр A значение регистра В, устанавливаем значение регистра С в 8, и повторяем цикл: то есть производим умножение на старший байт. - записываем полученное произведение – значение пары регистров HL - в оперативную память. Следует учесть, что если полученное произведение будет более, чем шестнадцатиразрядным, то старшие разряды будут отброшены. |
![]() |
![]() |
![]() |
#2 |
Новичок
Джуниор
Регистрация: 11.12.2007
Сообщений: 2
|
![]()
у меня есть для 8 разрядных нужно для 16 разрядных
как переделать? ;********************************** *********************************** * ;1. Текст программы mpy8u_c умножения 8-и разрядных целых беззнаковых ;чисел, оптимизированной с точки зрения кода. ;********************************** *********************************** * ;*****Использование регистров .def mc8u =r16 ;множимое .def mp8u =r17 ;множитель .def m8uL =r17 ;младший байт результата .def m8uH =r18 ;старший байт результата .def mcnt8u =r19 ;счетчик цикла ;***** mpy8u_c: clr m8uH ;очистить старший байт результата ldi mcnt8u,8 ;инициализировать счетчик цикла lsr mp8u ;cдвинуть вправо множитель m8u_1: brcc m8u_2 ;переход, если С=0 add m8uH,mc8u ;прибавить множимое к старшему ;байту результата m8u_2: ror m8uH ;сдвинуть вправо старший байт ;результата ror m8uL ; сдвинуть вправо младший ;байт результата и множитель dec mcnt8u ;уменьшить на 1 счетчик цикла brne m8u_1 ;переход, если счетчик цикла еще ;не равен 0 ret |
![]() |
![]() |
![]() |
#3 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
![]() Код:
|
![]() |
![]() |
![]() |
#4 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
Ну да, не всё так просто, это ж типа микроконтроллера, тут вообще всё по-другому и регистры кажись восьмиразрядные.
Поставил только что эмуль, поиграться. Нифига не разобрался ![]()
пыщь
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
умножение | PAWLO1993 | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 29.07.2008 18:55 |
Умножение в SQL | Родион | БД в Delphi | 4 | 12.06.2008 17:27 |
Умножение длинных целых чисел | Rifler | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 04.06.2008 21:12 |
Умножение и деление | StiTch_Parazit | Помощь студентам | 10 | 20.05.2008 14:32 |
вычисление суммы чисел, кратных 3 из последовательности, состоящей из 10 чисел, заранее заданных | Белка | Помощь студентам | 3 | 27.10.2007 11:53 |