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

 
 
> ATmega8 адресс метки
Shadovv13
сообщение Jun 2 2011, 17:45
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 2-06-11
Пользователь №: 65 445



Здравствуйте форумчани!
Нуждаюсь в вашей помощи по АВР студии (Ассемблер). MK ATmega8

Есть команда ICALL она делает вызов подпрограммы по адресу указаному регистром Z (r31:r30)

Допустим есть код с несколькими подпрограммами с метками, например sb1, sb2, sb3, и команда вызова ICALL
Подскажите как получить адрес метки(ок), что бы задать их в регистр Z.

Сообщение отредактировал Shadovv13 - Jun 2 2011, 17:45
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Shadovv13
сообщение Jun 19 2011, 19:06
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 2-06-11
Пользователь №: 65 445



Ну вот так все выглядит.
Код
ldi r16,high(RAMEND)
out SPH,r16
ldi r16,low(RAMEND)
out SPL,r16




ldi ZH,high(b)
ldi ZL,low(b)
s:
brtc en
b:icall
rjmp s

en:sbr r18,252
set
ldi ZH,high(e00)
ldi ZL,low(e00)
cpi r18,252
breq s
ldi ZH,high(e01)
ldi ZL,low(e01)
cpi r18,253
breq s
ldi ZH,high(e11)
ldi ZL,low(e11)
cpi r18,255
breq s
ldi ZH,high(e10)
ldi ZL,low(e10)
cpi r18,254
breq s

e00:clt
sbrc r18,0
inc r10
sbrc r18,1
dec r10
ret

e01:clt
sbrc r18,0
inc r10
sbrs r18,1
dec r10
ret

e11:clt
sbrs r18,0
inc r10
sbrs r18,1
dec r10
ret

e10:clt
sbrs r18,0
inc r10
sbrc r18,1
dec r10
ret


Результат, все работает но сообщение все равно присутствует!!
AVR Simulator: Stack Underflow at 0x0020

Может хрен сним?
Go to the top of the page
 
+Quote Post
ae_
сообщение Jun 20 2011, 14:07
Сообщение #3


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(Shadovv13 @ Jun 20 2011, 04:06) *
...
ldi ZH,high(b)
ldi ZL,low(b)
s:
brtc en
b:icall
rjmp s
en:
...
Результат, все работает но сообщение все равно присутствует!!
AVR Simulator: Stack Underflow at 0x0020
Может хрен сним?

Ваш фрагмент работает точно так же, как и этот:
Код
s:
brtc en
БЕСКОНЕЧНЫЙ_ЦИКЛ: call БЕСКОНЕЧНЫЙ_ЦИКЛ
rjmp s
en:
...

Т.е. если при переходе на метку "s" флаг "T" сброшен, всё будет нормально,
но если флаг "T" установлен до перехода на метку "s", то программа входит в бесконечный цикл, непрерывно заполняя стек одним и тем же адресом возврата, о чём и кричит AVRstudio.
Go to the top of the page
 
+Quote Post
Shadovv13
сообщение Jun 20 2011, 15:09
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 2-06-11
Пользователь №: 65 445



Цитата(ae_ @ Jun 20 2011, 17:07) *
Ваш фрагмент работает точно так же, как и этот:
Код
s:
brtc en
БЕСКОНЕЧНЫЙ_ЦИКЛ: call БЕСКОНЕЧНЫЙ_ЦИКЛ
rjmp s
en:
...

Т.е. если при переходе на метку "s" флаг "T" сброшен, всё будет нормально,
но если флаг "T" установлен до перехода на метку "s", то программа входит в бесконечный цикл, непрерывно заполняя стек одним и тем же адресом возврата, о чём и кричит AVRstudio.


Спасибо уважаемый ae_. Кто же мог подумать что AVRstudio будет так глубоко анализировать!!!
Думаю убрать метку b, она там в прицепе ненужна а регистр Z задам нулевой адрес(оставлю пустим).
Так как Т флаг сто пудов буде сброшен, все будет норм. Ну а если нет РЕСТАРТ с 0
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 20 2011, 15:39
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Shadovv13 @ Jun 20 2011, 19:09) *
Кто же мог подумать что AVRstudio будет так глубоко анализировать!!!
В том то и дело, что сообщение - не результат анализа, а результат выполнения (симуляции выполнения) Вашей программы.
Go to the top of the page
 
+Quote Post
Shadovv13
сообщение Jun 20 2011, 15:54
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 2-06-11
Пользователь №: 65 445



Цитата(Палыч @ Jun 20 2011, 18:39) *
В том то и дело, что сообщение - не результат анализа, а результат выполнения (симуляции выполнения) Вашей программы.


Я с вами несогласен!!!
В пошаговой отладке видно, что программа работает нормально и в бесконечный цикл не входит!
Но при первом RET уведомляет, о возможном опустошении стека(я так думаю). smile3046.gif

Сообщение отредактировал Shadovv13 - Jun 20 2011, 15:55
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 20 2011, 16:41
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Shadovv13 @ Jun 20 2011, 19:54) *
Но при первом RET уведомляет, о возможном опустошении стека(я так думаю). smile3046.gif
Огласите значение указателя стека после его инициализации в начале программы и перед выполнением команды RET.
Go to the top of the page
 
+Quote Post
Shadovv13
сообщение Jun 20 2011, 17:09
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 2-06-11
Пользователь №: 65 445



Цитата(Палыч @ Jun 20 2011, 19:41) *
Огласите значение указателя стека после его инициализации в начале программы и перед выполнением команды RET.


Вначале: SP = 0x45F
Перед RET: SP = 0x45D
После RET: SP = 0x45F
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 20 2011, 18:59
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Shadovv13 @ Jun 20 2011, 21:09) *
После RET: SP = 0x45F
И - что? При выполнении RET выдаёт сообщение?

Стало как-то интересно... Поставил Studio, скопировал Вашу программу, оттранслировал, зашёл в режим отладки, дошагал до RET, получил те же значения указателя стека, но сообщение - нет!

Стесняюсь спросить: у Вас в отладчике какой Device выбран?
Go to the top of the page
 
+Quote Post
Shadovv13
сообщение Jun 20 2011, 19:08
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 2-06-11
Пользователь №: 65 445



Цитата(Палыч @ Jun 20 2011, 21:59) *
И - что? При выполнении RET выдаёт сообщение?

Стало как-то интересно... Поставил Studio, скопировал Вашу программу, оттранслировал, зашёл в режим отладки, дошагал до RET, получил те же значения указателя стека, но сообщение - нет!

Стесняюсь спросить: у Вас в отладчике какой Device выбран?


Странно!!!
Все перепроверил(может всякое быть) результат тодже 01.gif
Может Студия глючная??
У меня.
AVR Studio 4.12.498 Service Pack 4
GUI Version 4, 12, 0, 491
AVR Simulator 1, 0, 1, 8
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 20 2011, 19:34
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Shadovv13 @ Jun 20 2011, 23:08) *
Может Студия глючная??
Ну, не самая последняя... Я вообще для эксперимента какую-то древность поставил. А, Вы точно указали симулятору в качестве Device значение ATmega8? Случайно что-то там типа mega8535 не указали?
Go to the top of the page
 
+Quote Post
Shadovv13
сообщение Jun 20 2011, 19:41
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 2-06-11
Пользователь №: 65 445



Цитата(Палыч @ Jun 20 2011, 22:34) *
Ну, не самая последняя... Я вообще для эксперимента какую-то древность поставил. А, Вы точно указали симулятору в качестве Device значение ATmega8? Случайно что-то там типа mega8535 не указали?


Не!!! Точна 8-мая!!!!
Спецом проект пересоздал!
Go to the top of the page
 
+Quote Post
ae_
сообщение Jun 20 2011, 22:41
Сообщение #13


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Shadovv13, Вы бы уже показали полный проект, в приведённом фрагменте мало что понятно.
Например, подпрограммы e00, e01, e11, e10 абсолютно одинаковые, зачем сравнивать R18 с 4-мя разными значениями, чтобы затем перейти на одну из 4-х одинаковых подпрограмм?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Shadovv13   ATmega8 адресс метки   Jun 2 2011, 17:45
- - rx3apf   Цитата(Shadovv13 @ Jun 2 2011, 21:45) Ест...   Jun 2 2011, 18:03
- - Shadovv13   rx3apf Вы не так поняли! КодLabel1: nop ...   Jun 2 2011, 18:14
|- - rx3apf   Цитата(Shadovv13 @ Jun 2 2011, 22:14) Как...   Jun 2 2011, 18:30
- - bbill   ldi ZH,high(Label1) ldi ZL,low(Label1) icall   Jun 2 2011, 18:31
- - Shadovv13   Спасибо большое щас опробуем!!   Jun 2 2011, 18:42
- - alexeyv   А не так ли надо корректно? : Код ldi ZH, high...   Jun 3 2011, 05:43
|- - haker_fox   QUOTE (alexeyv @ Jun 3 2011, 14:43) А не ...   Jun 3 2011, 06:14
|- - rx3apf   Цитата(alexeyv @ Jun 3 2011, 09:43) А не ...   Jun 3 2011, 07:39
- - нечитатель   Код ldi ZH, high(JT * 2) ; *2 !...   Jun 3 2011, 15:27
- - Shadovv13   Всем привет!!! Нуждаюсь вашей помощи...   Jun 19 2011, 15:15
|- - Палыч   Цитата(Shadovv13 @ Jun 19 2011, 19:15) Пр...   Jun 19 2011, 16:12
|- - Shadovv13   Цитата(Палыч @ Jun 19 2011, 19:12) Ответ ...   Jun 19 2011, 16:22
|- - Палыч   Цитата(Shadovv13 @ Jun 19 2011, 20:22) 1)...   Jun 19 2011, 16:36
|- - Shadovv13   Цитата(Палыч @ Jun 19 2011, 19:36) Этот к...   Jun 19 2011, 17:31
|- - Палыч   Цитата(Shadovv13 @ Jun 19 2011, 21:31) Ча...   Jun 19 2011, 17:38
|- - Палыч   Цитата(Shadovv13 @ Jun 19 2011, 23:06) Мо...   Jun 19 2011, 19:27
|- - Палыч   Цитата(ae_ @ Jun 21 2011, 02:41) подпрогр...   Jun 21 2011, 04:26
- - Shadovv13   Обратите внимание что вначале стоит Кодen:sbr ...   Jun 19 2011, 19:54
|- - Палыч   Цитата(Shadovv13 @ Jun 19 2011, 23:54) зн...   Jun 19 2011, 20:15
- - Shadovv13   Кодrjmp s разве что в последнем сравнении! Ре...   Jun 19 2011, 21:14
|- - Палыч   Цитата(Shadovv13 @ Jun 20 2011, 01:14) ра...   Jun 19 2011, 21:32
- - Shadovv13   Если помните, как называлась тема с енкодером, дай...   Jun 19 2011, 22:03
|- - Палыч   Цитата(Shadovv13 @ Jun 20 2011, 02:03) да...   Jun 20 2011, 04:33
|- - Shadovv13   Цитата(Палыч @ Jun 20 2011, 07:33) Вот, н...   Jun 20 2011, 13:33
- - Shadovv13   Внес изменения. Полностью не исключает зависание ...   Jun 21 2011, 09:13
|- - Палыч   Цитата(Shadovv13 @ Jun 21 2011, 13:13) Вн...   Jun 21 2011, 09:59
- - Shadovv13   Поставил студию.... AVR Studio 4.18.684 GUI Ver...   Jun 21 2011, 11:55
- - ae_   Цитата(Shadovv13 @ Jun 21 2011, 20:55) ВС...   Jun 22 2011, 11:56


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

 


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


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