На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> Помогите разобраться ! в AVR ассемблере , таблица описанная .DB не правильно считывается
    Помогите разобраться где собака порылась ?!

    Записаны данные в програмный сегмент . НО при чтении команда LPM - регулярно врёт при ємуляции в AVR Studio ..

    Прикложу скрин с обманом .

    Может кто объяснит , от чего так получается ??? в описаловках НЕ НАШЁЛ ответа на проблемму ....
    Вот отрезок проги :

    ExpandedWrap disabled
      LDI R30 , low (DATA*2)
      LDI R31 , high(DATA*2)
       
      LPM R0 , Z+
      LPM R1 , Z+
      LPM R2 , Z+
      LPM R3 , Z+
      LPM R4 , Z+
      LPM R5 , Z+
      LPM R6 , Z+
      LPM R7 , Z+
      LPM R8 , Z+
      LPM R9 , Z+
      LPM R10 , Z+
      LPM R11 , Z+
      LPM R12 , Z+
      LPM R13 , Z+
      LPM R14 , Z+
      LPM R15 , Z+
      LPM R16 , Z+
      LPM R17 , Z+
      LPM R18 , Z+
      LPM R19 , Z+
      LPM R20 , Z+
      LPM R21 , Z+
      LPM R22 , Z+
      LPM R23 , Z+
      LPM R24 , Z+
      LPM R26 , Z+
      LPM R27 , Z+
      LPM R28 , Z+
      LPM R29 , Z
       
      NOP
      NOP
       
      .CSEG   ;
      .ORG 0X300  ;
       
      DATA:
      .DB  0X01 ,  0X02 ,  0X03 ,  0X04 ,  0X05 ,  0X06 ,   0X07     ;
      ;
      .DB  0X08 ,  0X09 ,  0X10 ,  0X11 ,  0X12 ,  0X13 ,   0X14      ;
          
      .DB  0X15 ,  0X16,   0X17 ,  0X18 ,  0X19 ,  0X20 ,   0X21  ;
       
      .DB  0X22 ,  0X23 ,  0X24 ,  0X25 ,  0X26 ,  0X27 ,   0X28   ;
       
      .DB  0X29 ,  0X30 ,  0X31 ,  0X32 ,  0X33 ,  0X34 ,   0X35  ;
    Сообщение отредактировано: Jin X -
      M

      mike-brandy, на будущее: код заключается в теги [code][/code]
        Убедитесь в том, что по смещению 300 лежат нужные данные. При прошивке они во флешь запишутся, а при эмуляции не факт.
          Цитата Prince @
          Убедитесь в том, что по смещению 300 лежат нужные данные. При прошивке они во флешь запишутся, а при эмуляции не факт.

          Данные лежат там где надо ......

          Добавлено
          Если директива DB задана в сегменте кода, а список выражений содержит более одного выражения, выражения упаковываются так, что в каждое слово памяти программы помещается два байта. Если список выражений содержит нечетное количество выражений, последнее выражение будет помещено в собственное слово памяти программы, даже если следующая строка в коде сборки содержит директиву DB. Неиспользованная половина слова программы установлена на ноль. Выдается предупреждение, чтобы уведомить пользователя о том, что в инструкцию .DB добавлен дополнительный нулевой байт.
          Сообщение отредактировано: Qraizer -

          Прикреплённый файлПрикреплённый файлff.PNG (69,94 Кбайт, скачиваний: 315)
            А это точно правильно ?
            ExpandedWrap disabled
              LDI R30 , low (DATA*2)
              LDI R31 , high(DATA*2)

            может попробовать:
            ExpandedWrap disabled
              LDI R30 , low (DATA)
              LDI R31 , high(DATA)
              Так всё правильно читает lpm.
              Пропущена команда lpm R25,Z+. В остальном все правильно.
              В чем проблема?
              Сообщение отредактировано: Prince -
                Цитата ЫукпШ @

                Это точно правильно !
                Вами предложенное можете и не пробовать !!!

                Добавлено
                Цитата Prince @
                Так всё правильно читает lpm.
                Пропущена команда lpm R25,Z+. В остальном все правильно.
                В чем проблема?

                посмотрите где-же правильно ?!
                  Прикреплённый файлПрикреплённый файлff.PNG (69,94 Кбайт, скачиваний: 319)
                    Ткните пальцем, что не так. Угадайка не работает.
                    Если речь о нулях при чтении, то всё правильно. Если что-то другое, ткните пальцем.

                    Добавлено
                    Сделайте скрин не содержимого регистров, а содержимого флешь по смещению 300.
                    Сообщение отредактировано: Prince -
                      Цитата Prince @
                      Ткните пальцем, что не так. Угадайка не работает.
                      Если речь о нулях при чтении, то всё правильно. Если что-то другое, ткните пальцем.

                      Добавлено
                      Сделайте скрин не содержимого регистров, а содержимого флешь по смещению 300.

                      если таблица скопировалась в регисты , значит данные во флеш есть !
                      А разговор был о нулях в регистрах , которых нет в таблице .
                      Вопрос уже снят однако !!!!
                      Прочитайте мои сообщения выше .
                      Сделал перевод из дока .

                      Добавлено
                      Цитата mike-brandy @
                      Цитата Prince @
                      Ткните пальцем, что не так. Угадайка не работает.
                      Если речь о нулях при чтении, то всё правильно. Если что-то другое, ткните пальцем.

                      Добавлено
                      Сделайте скрин не содержимого регистров, а содержимого флешь по смещению 300.

                      если таблица скопировалась в регисты , значит данные во флеш есть !
                      А разговор был о нулях в регистрах , которых нет в таблице .
                      Вопрос уже снят однако !!!!
                      Прочитайте мои сообщения выше .
                      Сделал перевод из дока .

                      здесь вопрос не про работу на СИ .....
                      а про ЧИСТЫЙ АСМ .
                      А компилятор сам Вам умножает на 2 , только Вы потом не смотрели на листинг асм
                      Или не обратили внимание какие там числа стоят .....
                        ТС сам разобрался и опубликовал причину в №4. Умножение на 2 требуется, как я понимаю, для перевода слов в байты.
                          Цитата Qraizer @
                          ТС сам разобрался и опубликовал причину в №4. Умножение на 2 требуется, как я понимаю, для перевода слов в байты.

                          Прекрасная мысль !
                          а другие почему-то не читают НАПИСАНОГО !!!!
                          Думаю - что из этой темы не подчерпнули для СЕБЯ ничего интересного ....

                          Добавлено
                          Тему можно закрыть .
                          кто хочет докапаться до истины - тот найдёт ответ (внимательно прочитав ВСЁ !!! все посты ПОСТАВЛЕННОГО ВОПРОСА .
                            Ну не надо так кипятиться. Я вот тоже с трудом вспомнил, что на dsPIC-ах адресация в области данных как положено байтовая, а в области кода словная. Причём слово там 24 бита, кажется, по размеру инструкции. Причём мельче просто не получится, адресов нет, как вот нет отдельных адресов у полубайтов в области данных.
                            Сообщение отредактировано: Qraizer -
                                mike-brandy, кросава, братишка! :lol:
                                Держи бодрящего краба!!! Так их, ленивых неучей.
                                  Цитата JoeUser @
                                  mike-brandy, кросава, братишка! :lol:
                                  Держи бодрящего краба!!! Так их, ленивых неучей.

                                  СПАСИ _БО !!!!!!!!!
                                  УДАЧИ !
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0442 ]   [ 20 queries used ]   [ Generated: 16.04.24, 17:47 GMT ]