|
Mega128 и обращение к памяти. |
|
|
|
 |
Ответов
(1 - 10)
|
Aug 24 2006, 09:15
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(add @ Aug 24 2006, 12:59)  Компилятор ведь может определить в любое место flash массив "mas"... Как в этом случае можно обращатся по ссылке к памяти? Зарание сапсибо за ответы! В разных компиляторах по разному. Какой компилятор вы используете? Анатолий. Цитата(add @ Aug 24 2006, 12:59)  Компилятор ведь может определить в любое место flash массив "mas"... Как в этом случае можно обращатся по ссылке к памяти? Зарание сапсибо за ответы! В разных компиляторах по разному. Какой компилятор вы используете? Анатолий.
|
|
|
|
|
Aug 24 2006, 09:25
|

Местный
  
Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459

|
Цитата В разных компиляторах по разному. Какой компилятор вы используете? ?! в avr studio (avrasm v2)... несовсем понятен вопрос? есть альтернатива задать адрес так к примеру : .org 0x01000а но несовсем удобно так работать....
--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
|
|
|
|
|
Aug 24 2006, 11:39
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250

|
Цитата(add @ Aug 24 2006, 13:25)  Цитата В разных компиляторах по разному. Какой компилятор вы используете? ?! в avr studio (avrasm v2)... несовсем понятен вопрос? есть альтернатива задать адрес так к примеру : .org 0x01000а но несовсем удобно так работать.... Похоже, только руками контролировать RAMPZ. Ассемблер генерит на lpm только эту команду, по определению, не меняя никаких регистров. Мало того, lpm Z+ при переходе границы не меняет RAMPZ.
--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
|
|
|
|
|
Aug 24 2006, 12:14
|

Местный
  
Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459

|
Цитата Мало того, lpm Z+ при переходе границы не меняет RAMPZ Есть замечательная команда ELPM Rd,Z+ c учетом RAMPZ :-) Но вопрос остается открытым....
--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
|
|
|
|
|
Aug 24 2006, 12:34
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250

|
Цитата(add @ Aug 24 2006, 16:14)  Цитата Мало того, lpm Z+ при переходе границы не меняет RAMPZ Есть замечательная команда ELPM Rd,Z+ c учетом RAMPZ :-) Но вопрос остается открытым.... Я имел в виду, что ассемблер не разбирается с состоянием RAMPZ, что в команде есть, то и будет выполняться. Надо при загрузке Z в таких случаях грузить и RAMPZ. Т.е. добавляете еще две команды к ldi zl, ldi zh каждый раз. А вместо lpm , соответственно - elpm. Тогда можно будет не думать каждый раз об адресе.
--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
|
|
|
|
|
Aug 24 2006, 13:03
|

Местный
  
Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459

|
Цитата Тогда можно будет не думать каждый раз об адресе. я вопрошал о том как загрузить адрес метки (к примеру "mas:") (см.выше) в регистры zl:zh:RAMPZ ?! т.е. как определить значение метки , чтобы загрузить в регистры?
Сообщение отредактировал add - Aug 24 2006, 13:05
--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
|
|
|
|
|
Aug 24 2006, 13:48
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250

|
Логическими операциями и сдвигами над меткой - это же число. В ассемблере же можно логические выражения и сдвиги использовать, чтобы сформировать из метки, которая есть число, значение, загружаемое в RAMPZ.
.include "m128def.inc"
.org 0 ldi r16, a>>15 out rampz, r16 ldi zl, low(a*2) ldi zh, high(a*2) elpm r1, Z
.org 0x8010 a: .dw 100
Ну вот типа так.
--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
|
|
|
|
|
Aug 24 2006, 13:53
|

Местный
  
Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459

|
Цитата Логическими операциями и сдвигами над меткой - это же число. как это число располовинитьдля регистров zl:zh и RAMPZ? и собственно как его получить, условным асемблированием?
--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
|
|
|
|
|
Aug 24 2006, 14:13
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250

|
Цитата(add @ Aug 24 2006, 17:53)  Цитата Логическими операциями и сдвигами над меткой - это же число. как это число располовинитьдля регистров zl:zh и RAMPZ? и собственно как его получить, условным асемблированием? Выше привел. Пока проверял, Вы этот пост уже написали.
--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|