реклама на сайте
подробности

 
 
> проблемы с atol
Integral
сообщение Aug 10 2008, 11:47
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 9-08-08
Пользователь №: 39 519



Подскажыте пожалуйста почему не исполняется условые "atol(st)==nn" в следующем коде:

Код
    char *st;        
    long int nn=123;
    ltoa(nn, st);
    if(atol(st)==nn)
     {
      PORTD.1=1;
     }


притом что следующий код исполняется нормально:

Код
    char *st;        
    long int nn=123;
    itoa(nn, st);
    if(atoi(st)==nn)
     {
      PORTD.1=1;
     }


Мне нужен atol так как работаю с большыми числами...

Компилятор CodeVisionAVR

Сообщение отредактировал Integral - Aug 10 2008, 11:48
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alex1979
сообщение Aug 10 2008, 18:22
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 23-11-07
Из: Украина, Волынь
Пользователь №: 32 613



были проблемы с atoi. (использую winAvr).
Функция работает если ее вызывать внутри другой функции, вызываемой из main().
Если степень вложения больше, то функция не работает.

Вот что выдает компилятор :
Код
000061c2 <atoi>:
    61c2:    fc 01           movw    r30, r24
    61c4:    88 27           eor    r24, r24
    61c6:    99 27           eor    r25, r25
    61c8:    e8 94           clt
    61ca:    21 91           ld    r18, Z+
    61cc:    20 32           cpi    r18, 0x20; 32
    61ce:    e9 f3           breq    .-6     ; 0x61ca <atoi+0x8>
    61d0:    29 30           cpi    r18, 0x09; 9
    61d2:    10 f0           brcs    .+4     ; 0x61d8 <atoi+0x16>
    61d4:    2e 30           cpi    r18, 0x0E; 14
    61d6:    c8 f3           brcs    .-14    ; 0x61ca <atoi+0x8>
    61d8:    2b 32           cpi    r18, 0x2B; 43
    61da:    41 f0           breq    .+16    ; 0x61ec <atoi+0x2a>
    61dc:    2d 32           cpi    r18, 0x2D; 45
    61de:    39 f4           brne    .+14    ; 0x61ee <atoi+0x2c>
    61e0:    68 94           set
    61e2:    04 c0           rjmp    .+8     ; 0x61ec <atoi+0x2a>
    61e4:    0e 94 f3 31     call    0x63e6; 0x63e6 <__mulhi_const_10>
    61e8:    82 0f           add    r24, r18
    61ea:    91 1d           adc    r25, r1
    61ec:    21 91           ld    r18, Z+
    61ee:    20 53           subi    r18, 0x30; 48
    61f0:    2a 30           cpi    r18, 0x0A; 10
    61f2:    c0 f3           brcs    .-16    ; 0x61e4 <atoi+0x22>
    61f4:    1e f4           brtc    .+6     ; 0x61fc <atoi+0x3a>
    61f6:    90 95           com    r25
    61f8:    81 95           neg    r24
    61fa:    9f 4f           sbci    r25, 0xFF; 255
    61fc:    08 95           ret


Код
000061fe <atol>:
    61fe:    1f 93           push    r17
    6200:    fc 01           movw    r30, r24
    6202:    99 27           eor    r25, r25
    6204:    88 27           eor    r24, r24
    6206:    bc 01           movw    r22, r24
    6208:    e8 94           clt
    620a:    11 91           ld    r17, Z+
    620c:    10 32           cpi    r17, 0x20; 32
    620e:    e9 f3           breq    .-6     ; 0x620a <atol+0xc>
    6210:    19 30           cpi    r17, 0x09; 9
    6212:    10 f0           brcs    .+4     ; 0x6218 <atol+0x1a>
    6214:    1e 30           cpi    r17, 0x0E; 14
    6216:    c8 f3           brcs    .-14    ; 0x620a <atol+0xc>
    6218:    1b 32           cpi    r17, 0x2B; 43
    621a:    51 f0           breq    .+20    ; 0x6230 <atol+0x32>
    621c:    1d 32           cpi    r17, 0x2D; 45
    621e:    49 f4           brne    .+18    ; 0x6232 <atol+0x34>
    6220:    68 94           set
    6222:    06 c0           rjmp    .+12    ; 0x6230 <atol+0x32>
    6224:    0e 94 de 31     call    0x63bc; 0x63bc <__mulsi_const_10>
    6228:    61 0f           add    r22, r17
    622a:    71 1d           adc    r23, r1
    622c:    81 1d           adc    r24, r1
    622e:    91 1d           adc    r25, r1
    6230:    11 91           ld    r17, Z+
    6232:    10 53           subi    r17, 0x30; 48
    6234:    1a 30           cpi    r17, 0x0A; 10
    6236:    b0 f3           brcs    .-20    ; 0x6224 <atol+0x26>
    6238:    3e f4           brtc    .+14    ; 0x6248 <atol+0x4a>
    623a:    90 95           com    r25
    623c:    80 95           com    r24
    623e:    70 95           com    r23
    6240:    61 95           neg    r22
    6242:    7f 4f           sbci    r23, 0xFF; 255
    6244:    8f 4f           sbci    r24, 0xFF; 255
    6246:    9f 4f           sbci    r25, 0xFF; 255
    6248:    1f 91           pop    r17
    624a:    08 95           ret


Думаю что во всем виновата команда push в atol().

Сообщение отредактировал alex1979 - Aug 10 2008, 18:56
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Integral   проблемы с atol   Aug 10 2008, 11:47
- - zltigo   А чего это вдруг itoa/ltoa стали без радикса? Вызы...   Aug 10 2008, 12:17
- - Integral   в хелпе прототип выглядит следующим образом: Цита...   Aug 10 2008, 12:26
|- - zltigo   Цитата(Integral @ Aug 10 2008, 14:26) в х...   Aug 10 2008, 13:57
- - WHALE   Вы сами поняли поняли,что написали? 1.ltoa/ itoa н...   Aug 10 2008, 12:30
|- - Integral   Цитата1.ltoa/ itoa ничего не возвращает,соответсве...   Aug 10 2008, 12:38
- - YAM   Ну, во первых для того, чтобы функция сделала из l...   Aug 10 2008, 13:59
- - Integral   ЦитатаНу, во первых для того, чтобы функция сделал...   Aug 10 2008, 15:42
|- - aaarrr   Цитата(Integral @ Aug 10 2008, 19:42) ско...   Aug 10 2008, 15:47
|- - zltigo   Цитата(Integral @ Aug 10 2008, 17:42) ско...   Aug 10 2008, 18:13
|- - WHALE   Цитата(zltigo @ Aug 10 2008, 22:13) напри...   Aug 10 2008, 19:17
- - Integral   я заметил много недостатков CodeVisionAVR в отличи...   Aug 10 2008, 16:03
|- - demiurg_spb   Цитата(alex1979 @ Aug 10 2008, 22:22) был...   Aug 11 2008, 07:56
- - Integral   ЦитатаЭто говорит только об одном, что программиро...   Aug 10 2008, 18:48
|- - zltigo   Цитата(Integral @ Aug 10 2008, 20:48) Мож...   Aug 10 2008, 19:12
- - Integral   Цитата(zltigo @ Aug 10 2008, 22:12) Полаг...   Aug 10 2008, 20:20
- - sergeeff   Ну не нравится библиотечная функция, так найди ее ...   Aug 11 2008, 08:08
- - Integral   Всем очень благодарен за ответы. Все отлично работ...   Aug 12 2008, 17:06


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 21:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01378 секунд с 7
ELECTRONIX ©2004-2016