Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 20.10.2012, 10:21  
putmannn
Гражданин KAZUS.RU
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Работа с массивом.

Здравствуйте.
Требуется изменять в памяти (из работающей программы) массив из 10-ти ячеек. Я так понимаю, что надо создать в дата сегменте что то такое:

Цитата:
.DSEG
massiv: .db 1,2,3,4,5,6,7,8,9,0
А вот как получить доступ к произвольной ячейке не могу нагуглить.
Подскажите пожалуйста.

AtMega-8, AVR Studio, ассемблер.
Реклама:

Последний раз редактировалось putmannn; 20.10.2012 в 13:17.
putmannn вне форума  
Непрочитано 20.10.2012, 12:11  
woroba
Гражданин KAZUS.RU
 
Регистрация: 13.06.2005
Адрес: РК г.Павлодар
Сообщений: 866
Сказал спасибо: 99
Сказали Спасибо 216 раз(а) в 140 сообщении(ях)
woroba на пути к лучшему
По умолчанию Re: Работа с массивом.

См. косвенная адресация, типа[massiv+n].
А вообще неплохо бы указать среду и камень.
__________________
Не ошибается лишь тот, кто ни чего не делает!
woroba вне форума  
Непрочитано 20.10.2012, 13:24  
putmannn
Гражданин KAZUS.RU
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: Работа с массивом.

Полазал по инету, наверное понял.
Только в кодовом сегменте надо написать:
Цитата:
ldi ZL,Low(massiv*2)
, а в сегменте даты почему то без умножения на 2

Цитата:
ldi ZL,Low(massiv)
ldi ZH,High(massiv)
ld temp, Z
inc temp
st Z, temp
Так мы обращаемся к первой ячейке памяти.
А что бы обратиться к произвольной ячейке по её номеру, то как я понял надо просто прибавить индекс:

Цитата:
ldi temp, "номер элемента массива"
ldi temp2, 0
add ZL, temp
adc ZH, temp2
ld temp, Z
putmannn вне форума  
Непрочитано 20.10.2012, 14:24  
putmannn
Гражданин KAZUS.RU
 
Аватар для putmannn
 
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
putmannn на пути к лучшему
По умолчанию Re: Работа с массивом.

Проверил, всё работает, зря спрашивал.
И всё же может быть как то ещё можно ?

Последний раз редактировалось putmannn; 20.10.2012 в 14:37.
putmannn вне форума  
Непрочитано 20.10.2012, 14:42  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Работа с массивом.

Сообщение от putmannn Посмотреть сообщение
И всё же может быть как то ещё можно ?
Конечно можно. Без напряжений. В любой размерности данных.
Код:
data = array[i];
А с указателем еще красивее!

__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 20.10.2012, 15:15  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: Работа с массивом.

putmannn,
у АВР есть команды с авто- инкрементом и декрементом для чтения памяти (для случая с последовательным чтением/записью байтового массива) LD/ST Rd,Rr(X, Y, Z, X+, Y+, Z+, -X, -Y, -Z).
в озу организация байтовая, в флеш-памяти - слово 16бит, поэтому и разные обращения по адресу
jump вне форума  
Непрочитано 20.10.2012, 23:46  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Работа с массивом.

Есть и команды со смещением, что позволяет работать с массивом более эффективно:
Код:
 ; единожды
 ldi ZL,Low(massiv) 
 ldi ZH,High(massiv)
 ; сама работа
 ; нулевой элемент
 ld temp, Z 
 inc temp
 st Z, temp
 ; четвёртый элемент
 ldd temp, Z+4
 inc temp
 std Z+4, temp
SasaVitebsk вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Маленькие шрифты массивом MasterMushi Микроконтроллеры, АЦП, память и т.д 2 29.11.2010 11:19
Дипломная работа Multiplexor Поиск схем. Делимся схемами 5 30.09.2010 11:38


Часовой пояс GMT +4, время: 01:17.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot