Добрый день, радиолюбители.
Есть маленькая проблемка. Код программы деления:
;=====деление======================
;==============
; ПОДПРОГРАММА ДЕЛЕНИЯ 5-РАЗРЯДНОГО СЛОВА (TEMP_1L1) НА 4-Х РАЗРЯДНОЕ (TEMP_1L)
; Результат - TEMP_1L1, остаток - TEMP_1L2
;=================
DIV_5_4 ;TEMP_1L1 / TEMP_1L = TEMP_1L1; TEMP_1L2 - остаток
;проверка делителя на 0
movf TEMP_2H,F,1 ;
btfss STATUS,Z,0 ;
movf TEMP_1H,F,1 ;
btfss STATUS,Z,0 ;
goto Div_5_4 ;
movf TEMP_1M,F,1 ;
btfss STATUS,Z,0 ;
goto Div_5_4 ;
movf TEMP_1L,F,1 ;
btfsc STATUS,Z,0 ;
retlw 0 ;
Div_5_4
call Setup40 ;перенос делимого во временный регистр
clrf TEMP_2H2 ;сброс остатка
clrf TEMP_1H2 ;сброс остатка
clrf TEMP_1M2 ;
clrf TEMP_1L2
Dloop40
bcf STATUS,C,0
rlcf TEMP_1L3,F,1 ;сдвиг влево младшего делимого
rlcf TEMP_1M3,F,1
rlcf TEMP_1H3,F,1 ;
rlcf TEMP_2H3,F,1 ;
rlcf TEMP_3H3,F,1 ;
rlcf TEMP_1L2,F,1 ;сдвиг влево младшего остатка
rlcf TEMP_1M2,F,1
rlcf TEMP_1H2,F,1
rlcf TEMP_2H2,F,1
movf TEMP_2H,W,1 ;проверяем, превышает старший остаток делитель
subwf TEMP_2H2,W,1 ; проверка
btfss STATUS,Z,0
goto Nochk40
movf TEMP_1H,W,1 ;
subwf TEMP_1H2,W,1 ; проверка
btfss STATUS,Z,0
goto Nochk40
movf TEMP_1M,W,1
subwf TEMP_1M2,W,1 ; проверка
btfss STATUS,Z,0
goto Nochk40
movf TEMP_1L,W,1 ;если равен, проверяем младший
subwf TEMP_1L2,W
Nochk40
btfss STATUS,C,0 ; перенос если
goto Nogo40 ; если остаток больше делителя
movf TEMP_1L,W,1 ;
subwf TEMP_1L2,F,1 ;
btfss STATUS,C,0
decf TEMP_1M2,F,1
movf TEMP_1M,W,1
subwf TEMP_1M2,F,1
btfss STATUS,C,0
decf TEMP_1H2,F,1
movf TEMP_1H,W,1
subwf TEMP_1H2,F,1
btfss STATUS,C,0
decf TEMP_2H2,F,1
movf TEMP_2H,W,1
subwf TEMP_2H2,F,1
bsf STATUS,C,0 ; переместить
Nogo40
rlcf TEMP_1L1,F,1
rlcf TEMP_1M1,F,1
rlcf TEMP_1H1,F,1
rlcf TEMP_2H1,F,1
rlcf TEMP_3H1,F,1 ;!!!!!!!!!!!!!!!
decfsz Temp,F,0 ; цикл пока все биты не проверим
goto Dloop40
retlw 0
Setup40
movlw .40 ; установки для 40 циклов
movwf Temp,0
movff TEMP_3H1,TEMP_3H3 ;
movff TEMP_2H1,TEMP_2H3 ;
movff TEMP_1H1,TEMP_1H3 ;
movff TEMP_1M1,TEMP_1M3 ;
movff TEMP_1L1,TEMP_1L3 ;
clrf TEMP_3H1,1
clrf TEMP_2H1,1
clrf TEMP_1H1,1
clrf TEMP_1M1,1
clrf TEMP_1L1,1
retlw 0
;=====деление======================
Вроде бы делит нормально. Но !!!!!!!!!!
Два числа 43024784875 / 100 000 делит неправильно. Должно быть 430 247 а получается 430 331 ???
Помогите найти ошибку.
ASM PIC18
- Реклама
- КРАМ
- Друг Кота
- Сообщения: 25390
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: ASM PIC18
Разрядность делимого и делителя по какому основанию считалась?
Во первых, код нужно оформлять в тегах кода. С положенным для кода форматированием.
Во вторых, у меня ощущение, что вы этот код не писали. Патамушта с именами регистров переменных какой то рандомный бред. Лично у меня разбираться в этой каше нет никакого желания.
Во первых, код нужно оформлять в тегах кода. С положенным для кода форматированием.
Во вторых, у меня ощущение, что вы этот код не писали. Патамушта с именами регистров переменных какой то рандомный бред. Лично у меня разбираться в этой каше нет никакого желания.
Re: ASM PIC18
Чтобы разбираться в этой каше надо соображать..!!! Кто не соображает, не пишите.
Re: ASM PIC18
Вот и не пишет ни кто уже 6 дней.
- КРАМ
- Друг Кота
- Сообщения: 25390
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: ASM PIC18
[uquote="Margo",url="/forum/viewtopic.php?p=3921925#p3921925"]Чтобы разбираться в этой каше надо соображать..!!![/uquote]
Смешно. Вы пришли с вопросом ровно потому, что не понимаете как работает этот код. Вывалили код, в котором имена регистров выбраны так, чтобы максимально усложнить разбор кода. Мало этого, вы говорите о 4 и 5 разрядах операндов и не в состоянии ответить на вопрос об основании счисления. Можно только догадываться, что речь идет о шестнадцатиричном основании, то есть 16 и 20 бинарных разрядах, но тогда операнды выходят за диапазон...
Ну и нахрена мне тратить время на всю эту галиматью студня-недоучки?
Смешно. Вы пришли с вопросом ровно потому, что не понимаете как работает этот код. Вывалили код, в котором имена регистров выбраны так, чтобы максимально усложнить разбор кода. Мало этого, вы говорите о 4 и 5 разрядах операндов и не в состоянии ответить на вопрос об основании счисления. Можно только догадываться, что речь идет о шестнадцатиричном основании, то есть 16 и 20 бинарных разрядах, но тогда операнды выходят за диапазон...
Ну и нахрена мне тратить время на всю эту галиматью студня-недоучки?
- Реклама
Re: ASM PIC18
[uquote="КРАМ",url="/forum/viewtopic.php?p=3921982#p3921982"][uquote="Margo",url="/forum/viewtopic.php?p=3921925#p3921925"]Чтобы разбираться в этой каше надо соображать..!!![/uquote]
Смешно. Вы пришли с вопросом ровно потому, что не понимаете как работает этот код. Вывалили код, в котором имена регистров выбраны так, чтобы максимально усложнить разбор кода. Мало этого, вы говорите о 4 и 5 разрядах операндов и не в состоянии ответить на вопрос об основании счисления. Можно только догадываться, что речь идет о шестнадцатиричном основании, то есть 16 и 20 бинарных разрядах, но тогда операнды выходят за диапазон...
Ну и нахрена мне тратить время на всю эту галиматью студня-недоучки?[/uquote]
Тему можно закрыть, надоело читать этот безграмотный бред с оскорблениями.
Смешно. Вы пришли с вопросом ровно потому, что не понимаете как работает этот код. Вывалили код, в котором имена регистров выбраны так, чтобы максимально усложнить разбор кода. Мало этого, вы говорите о 4 и 5 разрядах операндов и не в состоянии ответить на вопрос об основании счисления. Можно только догадываться, что речь идет о шестнадцатиричном основании, то есть 16 и 20 бинарных разрядах, но тогда операнды выходят за диапазон...
Ну и нахрена мне тратить время на всю эту галиматью студня-недоучки?[/uquote]
Тему можно закрыть, надоело читать этот безграмотный бред с оскорблениями.
Re: ASM PIC18
Вообще-то для подобной тестировки есть СИМУЛЯТОР -делаем пошаговое выполнение и анализируем результат.

- КРАМ
- Друг Кота
- Сообщения: 25390
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: ASM PIC18
[uquote="Margo",url="/forum/viewtopic.php?p=3922050#p3922050"]надоело читать[/uquote]
Феерично...
Мало того, что не в состоянии ответить ни на один вопрос, так еще и хамит...

Добавлено after 1 minute 21 second:
[uquote="BOB51",url="/forum/viewtopic.php?p=3922054#p3922054"]СИМУЛЯТОР[/uquote]
Зато сильно "грамотный"...
Феерично...
Мало того, что не в состоянии ответить ни на один вопрос, так еще и хамит...
Добавлено after 1 minute 21 second:
[uquote="BOB51",url="/forum/viewtopic.php?p=3922054#p3922054"]СИМУЛЯТОР[/uquote]
Зато сильно "грамотный"...
Re: ASM PIC18
Не судите строго...
Не всем же САМОСТОЯТЕЛЬНО пробиваться.
По своему опыту - иногда действительно на ошибочном решении можно зациклиться до "поцарапса" - тогда единственно разумное решение - начать всю прожку ЗАНОВО (через одну-две недельки).

Не всем же САМОСТОЯТЕЛЬНО пробиваться.
По своему опыту - иногда действительно на ошибочном решении можно зациклиться до "поцарапса" - тогда единственно разумное решение - начать всю прожку ЗАНОВО (через одну-две недельки).


