Умножение двух чисел

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
borN_free
Сообщения: 10
Зарегистрирован: 15 апр 2009, 01:48

Микроконтроллер семейства МC68НС11

Micro-IDE
ОС WinXP

6.Напишите программу умножения двух двоично-десятичных 8-разрядных чисел.

Вот что есть у меня:

org $8000
ldaa #$10
ldab #$68
mul ; $10 * $68 = $0680
adca #7; вот тут если перемножать двуразрядные числа, то
; все нормально, а если большие - то выходят за пределы.
; как добиться нужного результата?
borN_free
Сообщения: 10
Зарегистрирован: 15 апр 2009, 01:48

люди, напиши как записать в память двоично-десятичное число, надо алгоритм придумать?
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Алгоритм умножения такой же как при умножении "в столбик" :)

А BCD числа так и пишутся;

Код: Выделить всё

     ORG $80000
     JMP Start
X:   DB  $12,$34,$56,$78 ; =12345678
Start:
borN_free
Сообщения: 10
Зарегистрирован: 15 апр 2009, 01:48

код не совсем понял, как допустим десятичное число 33 (тоесть двоично десятичное "0011 0011") занести в память?
bang
Сообщения: 1
Зарегистрирован: 28 май 2010, 15:33

Насколько я понял входные данные вводятся в bcd формате.
Получается совсем просто:
org $9000
ldaa #%00100011 ;$23
ldab #%00010010 ;$12
mul ;$76=01110110

P.S. 8-разрядные bcd числа не могут быть больше 99 т.к существуют запрещенные битовые комбинации.
N1ck
Сообщения: 1
Зарегистрирован: 22 ноя 2010, 00:40

хм, а напишите кто нить код программы, который бы переводил десятичные числа в bcd(тобишь в двоично-десятичные), ну и собственно их перемножение
Ответить