пишу на ассамблере
Как разделить 1 регистр на два
- Сообщения: 68
- Зарегистрирован: Чт июн 12, 2014 05:32:20
Пусть будет три регистра (ОЗУ) Q, A1,A2. в Q может находится любое число но не более 99, к примеру Q=34 как переделать так чтоб из Q получить A1=3 и A2=4 если Q=0 то A1=0 и A2=0
пишу на ассамблере
пишу на ассамблере
- Реклама
- Сообщения: 68
- Зарегистрирован: Чт июн 12, 2014 05:32:20
Ну как то так
Код: Выделить всё
MOVFF Q, A2
MOVFF Q, A1
SWAPF A1,F
MOVLW b'00001111'
ANDWF A1,F
ANDWF A2,F
__________________
Все, что нельзя запрограммировать на ассемблере, приходится паять
Все, что нельзя запрограммировать на ассемблере, приходится паять
Вот вы сами и ответили на свой вопрос. Число (34d=22h) надо перевести в десятичное. Десятки в один байт, единицы - в другой. Есть библиотеки. Самому написать перевод HEX>DEC достаточно просто.
- Реклама
- Сообщения: 68
- Зарегистрирован: Чт июн 12, 2014 05:32:20
Q=34d=22h=00100010b
после разделения надо чтоб получилось так:
А1=3d=3h=00000011b
A2=4d=4h=00000100b
после разделения надо чтоб получилось так:
А1=3d=3h=00000011b
A2=4d=4h=00000100b
- Сообщения: 68
- Зарегистрирован: Чт июн 12, 2014 05:32:20
- Сообщения: 68
- Зарегистрирован: Чт июн 12, 2014 05:32:20
Програмка не со всеми числами работает правильно, если в Q=39 то получается А1=7 и А2=2
Ладно, держите. Адаптируете программу под свой контроллер.
Спойлер
- Сообщения: 68
- Зарегистрирован: Чт июн 12, 2014 05:32:20
Во спасибо, то что надо. Немного переделаю но мысль понял. Интересно, а есть еще какие варианты?
Вспомнить математику из начальной школы.Сем30 писал(а):...а есть еще какие варианты?
Можно делением на 10-ть. В остатке - единицы.


