Страница 1 из 1

Как разделить 1 регистр на два

Добавлено: Пн май 18, 2015 17:55:18
Сем30
Пусть будет три регистра (ОЗУ) Q, A1,A2. в Q может находится любое число но не более 99, к примеру Q=34 как переделать так чтоб из Q получить A1=3 и A2=4 если Q=0 то A1=0 и A2=0
пишу на ассамблере

Re: Как разделить 1 регистр на два

Добавлено: Пн май 18, 2015 17:58:11
Albert_V
Сем30 писал(а):...к примеру Q=34...
"34" это HEX или DEC?

Re: Как разделить 1 регистр на два

Добавлено: Пн май 18, 2015 17:59:49
Сем30
DEC

Re: Как разделить 1 регистр на два

Добавлено: Пн май 18, 2015 18:06:05
driver_gv
Ну как то так

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

		MOVFF	Q, A2
		MOVFF	Q, A1
		SWAPF	A1,F
		MOVLW	b'00001111'
		ANDWF	A1,F
		ANDWF	A2,F


Re: Как разделить 1 регистр на два

Добавлено: Пн май 18, 2015 18:07:04
Albert_V
Вот вы сами и ответили на свой вопрос. Число (34d=22h) надо перевести в десятичное. Десятки в один байт, единицы - в другой. Есть библиотеки. Самому написать перевод HEX>DEC достаточно просто.

Re: Как разделить 1 регистр на два

Добавлено: Пн май 18, 2015 18:14:22
Сем30
Q=34d=22h=00100010b
после разделения надо чтоб получилось так:
А1=3d=3h=00000011b
A2=4d=4h=00000100b

Re: Как разделить 1 регистр на два

Добавлено: Пн май 18, 2015 18:15:33
Albert_V
Вам ссылку на библиотеку или найдёте сами?

Re: Как разделить 1 регистр на два

Добавлено: Пн май 18, 2015 18:17:32
Сем30
кажись понял как, щя буду испытывать

Re: Как разделить 1 регистр на два

Добавлено: Пн май 18, 2015 19:28:58
Сем30
Програмка не со всеми числами работает правильно, если в Q=39 то получается А1=7 и А2=2

Re: Как разделить 1 регистр на два

Добавлено: Пн май 18, 2015 19:30:44
Albert_V
Ладно, держите. Адаптируете программу под свой контроллер.
Спойлер
Bin8bcd.asm
(1.33 КБ) 49 скачиваний

Re: Как разделить 1 регистр на два

Добавлено: Вт май 19, 2015 15:38:43
Сем30
Во спасибо, то что надо. Немного переделаю но мысль понял. Интересно, а есть еще какие варианты?

Re: Как разделить 1 регистр на два

Добавлено: Вт май 19, 2015 15:46:02
Albert_V
Сем30 писал(а):...а есть еще какие варианты?
Вспомнить математику из начальной школы. :))
Можно делением на 10-ть. В остатке - единицы.