Форум РадиоКот https://radiokot.ru/forum/ |
|
ASM PIC18 https://radiokot.ru/forum/viewtopic.php?f=58&t=173668 |
Страница 1 из 1 |
Автор: | Margo [ Ср ноя 04, 2020 16:03:51 ] |
Заголовок сообщения: | ASM PIC18 |
Добрый день, радиолюбители. Есть маленькая проблемка. Код программы деления: ;=====деление====================== ;============== ; ПОДПРОГРАММА ДЕЛЕНИЯ 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 ??? Помогите найти ошибку. |
Автор: | КРАМ [ Сб ноя 07, 2020 06:09:18 ] |
Заголовок сообщения: | Re: ASM PIC18 |
Разрядность делимого и делителя по какому основанию считалась? Во первых, код нужно оформлять в тегах кода. С положенным для кода форматированием. Во вторых, у меня ощущение, что вы этот код не писали. Патамушта с именами регистров переменных какой то рандомный бред. Лично у меня разбираться в этой каше нет никакого желания. |
Автор: | Margo [ Вт ноя 10, 2020 07:26:52 ] |
Заголовок сообщения: | Re: ASM PIC18 |
Чтобы разбираться в этой каше надо соображать..!!! Кто не соображает, не пишите. |
Автор: | otest [ Вт ноя 10, 2020 08:43:05 ] |
Заголовок сообщения: | Re: ASM PIC18 |
Вот и не пишет ни кто уже 6 дней. |
Автор: | КРАМ [ Вт ноя 10, 2020 11:35:17 ] |
Заголовок сообщения: | Re: ASM PIC18 |
Чтобы разбираться в этой каше надо соображать..!!! Смешно. Вы пришли с вопросом ровно потому, что не понимаете как работает этот код. Вывалили код, в котором имена регистров выбраны так, чтобы максимально усложнить разбор кода. Мало этого, вы говорите о 4 и 5 разрядах операндов и не в состоянии ответить на вопрос об основании счисления. Можно только догадываться, что речь идет о шестнадцатиричном основании, то есть 16 и 20 бинарных разрядах, но тогда операнды выходят за диапазон... Ну и нахрена мне тратить время на всю эту галиматью студня-недоучки? |
Автор: | Margo [ Вт ноя 10, 2020 14:46:07 ] |
Заголовок сообщения: | Re: ASM PIC18 |
Чтобы разбираться в этой каше надо соображать..!!! Смешно. Вы пришли с вопросом ровно потому, что не понимаете как работает этот код. Вывалили код, в котором имена регистров выбраны так, чтобы максимально усложнить разбор кода. Мало этого, вы говорите о 4 и 5 разрядах операндов и не в состоянии ответить на вопрос об основании счисления. Можно только догадываться, что речь идет о шестнадцатиричном основании, то есть 16 и 20 бинарных разрядах, но тогда операнды выходят за диапазон... Ну и нахрена мне тратить время на всю эту галиматью студня-недоучки? Тему можно закрыть, надоело читать этот безграмотный бред с оскорблениями. |
Автор: | BOB51 [ Вт ноя 10, 2020 14:54:38 ] |
Заголовок сообщения: | Re: ASM PIC18 |
Вообще-то для подобной тестировки есть СИМУЛЯТОР -делаем пошаговое выполнение и анализируем результат. ![]() |
Автор: | КРАМ [ Вт ноя 10, 2020 16:10:52 ] |
Заголовок сообщения: | Re: ASM PIC18 |
надоело читать Феерично... ![]() ![]() ![]() Мало того, что не в состоянии ответить ни на один вопрос, так еще и хамит... ![]() Добавлено after 1 minute 21 second: СИМУЛЯТОР Зато сильно "грамотный"... ![]() |
Автор: | BOB51 [ Вт ноя 10, 2020 20:41:28 ] |
Заголовок сообщения: | Re: ASM PIC18 |
Не судите строго... Не всем же САМОСТОЯТЕЛЬНО пробиваться. По своему опыту - иногда действительно на ошибочном решении можно зациклиться до "поцарапса" - тогда единственно разумное решение - начать всю прожку ЗАНОВО (через одну-две недельки). ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |