Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.69/51: Рейтинг темы: голосов - 51, средняя оценка - 4.69
RiosomX
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
1

Отдельный файл с макросами.

26.04.2013, 16:16. Просмотров 9266. Ответов 20
Метки нет (Все метки)

В нескольких проектах видел как макросы пишутся в отдельном файле, а потом вставляются в основной. Как так сделать ? Те проекты потерял куда то, теперь не увидеть.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2013, 16:16
Ответы с готовыми решениями:

Как запустить файл с включенными макросами?
Добрый день. Требуется запускать определенный файл Excel сразу с включенными макросами, игнорируя...

Можно ли создать из файла Excel c макросами ехе-файл
Кто-нибудь может подсказать, возможно ли создать из файла Excel c макросами ехе - файл? Если да, то...

Файл базы открывается только для чтения и с отключёнными макросами
Здравствуйте знатоки. Возникла небольшая проблема. Есть база acess 2010 в которой необходимо...

Не связывает С# приложение и Excel файл, с макросами - .xlsx (данные из .xls считывает)
Добрый день, создал таблицу с макросами (.xlsx), пытаюсь связать с данными в Excel таблице - не...

Файл: Найти в текстовом файле все прилагательные и вывести их в отдельный файл...
Помогите пожалуйста сделать лабораторную работу Найти в текстовом файле все прилагательные и...

20
RiosomX
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
26.04.2013, 16:22 2
А все сам кажись понял.

Пишется файл с макросами, делается .include "файл" и потом все макросы смело пихаются ?

Нет не получилось, пишет конфликт адресов в память =\
0
YTYOUT
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
26.04.2013, 22:13 3
Кто пишет чего пишет, Вы сами с собой разговариваете?
0
svs39
0 / 0 / 0
Регистрация: 13.04.2010
Сообщений: 368
26.04.2013, 22:27 4
Цитата Сообщение от RiosomX
А все сам кажись понял.

Пишется файл с макросами, делается .include "файл" и потом все макросы смело пихаются ?
должно работать
0
S_Otix
0 / 0 / 0
Регистрация: 28.01.2010
Сообщений: 537
26.04.2013, 22:33 5
Ну так бывает. Пока составляешь нормальный вопрос, кому-либо, то и ответ приходит.
ТС - милок, ты хоть бы макро показал или ошибки. Скорее свего у тебя в макро есть директива ORG.
пишет конфликт адресов в память
Я макросами люблю увлекаться, но вот такого что-то не припоминаю.
http://code.google.com/p/demotomk/sourc ... acroEX.asm
0
YTYOUT
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
26.04.2013, 23:02 6
Если include сунуто не туда ...
0
инкер
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 893
26.04.2013, 23:13 7
Цитата Сообщение от YTYOUT
Если include сунуто не туда ...
Да, вверху должен стоять, внизу не воспринимается.
Из-за нелюбви нажимать клавиши замакросил все до предела, даже такое

.MACRO J
RJMP @0
.ENDM

Кстати, @ в определении макроса перечислять не обязательно.
0
YTYOUT
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
26.04.2013, 23:21 8
Так мы и ждём куды ТС его сунул, все остальные вроде в курсе.
0
RiosomX
0 / 0 / 0
Регистрация: 02.03.2013
Сообщений: 163
27.04.2013, 00:24 9
Цитата Сообщение от YTYOUT
Так мы и ждём куды ТС его сунул, все остальные вроде в курсе.
Да я сам себе ответил, просто в одном из макросов была , вместо . вот и не компилилос. Проблема решена, уже все что есть перемакросил =)
0
disis4
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 78
12.05.2013, 01:58 10
Кстати вопрос в тему про макросы. Вот почему-то уверен что не должно работать НО работает
вот суть: написал однажды макрос (и подобных куча)

Код
;=================================================================================
;Динный макрос берет из области EEPROM по адресу @0 БАЙТ и загружает его в
;область ROM по адресу @1 . те просто копирует @2 - кол-во байт
.MACRO EEP_DATA_IN_ROM_DATA_MASSIV_BT   ;@0-EEP ZONE  @1-ROM ZONE @2-VOL
LDZ     @0
LDY     @1
LDI     R21,@2
MASSIV_REP_BT:
call   EEPROMRead
ST      Y+,R16
LD      R0,Z+
DEC     R21
BRNE    MASSIV_REP_BT
.ENDM
И вроде бы все ничего работает нормально но когда я его писал он вспоминался в программе всего 1 раз
В другой программе я его использовал наверное раз 5 или больше причем ошибок ни от компилятора ни от программы не было (программа выполнялась на ура - формировали картинку на дисплее), а вот недавно когда я в него заглянул то задумался вот над чем - если макрос подставляется везде где употребляется то почему нет ругани от компилятора что метка MASSIV_REP_BT встречается несколько раз.
После этого я переделал макрос с иcпользованием CALL - работа программы осталась такой же как и была
Код
;Динный макрос берет из области EEPROM по адресу @0 БАЙТ и загружает его в
;область ROM по адресу @1 . те просто копирует @2 - кол-во байт
.MACRO EEP_DATA_IN_ROM_DATA_MASSIV_BT   ;@0-EEP ZONE  @1-ROM ZONE @2-VOL
LDZ     @0
LDY     @1
LDI     R21,@2
CALL   MASSIV_REP_BT
.ENDM
и гдето в программе с callами появился кусок
MASSIV_REP_BT:
call   EEPROMRead
ST      Y+,R16
LD      R0,Z+
DEC     R21
BRNE    MASSIV_REP_BT
RET
Если кто может растолковать объясните можно или нет использовать использовать макросы несколько раз если в них метки для переходов.
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
12.05.2013, 07:30 11
Цитата Сообщение от disis4
... почему нет ругани от компилятора что метка MASSIV_REP_BT встречается несколько раз...
Начать можно с того, что Студия включает в себя два ассемблера - avrasm и avrasm2. В зависимости от того, который вы примените при компиляции, и результат будет разный. Avrasm дествительно обьявит одну метку и независимо от числа применненых экземпляров макроса, переход будет в одно и то же место. Нарушается логика работы программы. Avrasm2 более продвинут и метке в каждом макросе даст уникальный номер, поэтому и переход будет правильный.
А вообще перед меткой в макросе лучше ставить $, тогда и avrasm скомпилирует правильно.
0
THI BIOST
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,142
12.05.2013, 08:50 12
Цитата Сообщение от omokost
А вообще перед меткой в макросе лучше ставить $, тогда и avrasm скомпилирует правильно.
А что это даёт ($) ? Весь хелп перерыл, не нашёл. Вроде так шестнадцатиричные константы начинаются?
0
инкер
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 893
12.05.2013, 11:48 13
Применяю единственный макрос с меткой, тоже боялся, что не примется, но работает. Ассемблер 1999года.

.MACRO MOD @0,@1
NEG @1
BRBC 1,M1
DEC @0
M1: COM @0
.ENDM
0
disis4
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 78
12.05.2013, 17:26 14
omokost Спасибо, понял, но вот с $ не совсем
И еще я как бы взял за правило после применения макроса в коментариях указываю регистры которые он использует поскольку уже 100500 раз на этом попадался что какой нибудь макрос изнасилует у меня какие нибудь данные. Даже подумывал одно время прогружать в стэк используемые регистры но потом че то плюнул и не стал.
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
12.05.2013, 21:47 15
. . .
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
12.05.2013, 21:48 16
Цитата Сообщение от THI BIOST
...А что это даёт ($) ? Весь хелп перерыл, не нашёл...
Ноги у этого литерала отроcли еще во времена i8080. Если ассемблер видит одиночный $, он принимает его за указатель на счетчик команд.
Например команды rjmp PC и rjmp $ равнозначны. При применении перед меткой, метка также привяжется к PC.
0
THI BIOST
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,142
13.05.2013, 12:11 17
Про одиночный $ я знаю, а вот что значит:

Цитата Сообщение от omokost
При применении перед меткой, метка также привяжется к PC.
Метка же всегда к PC привязывается, иначе и быть не может.
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
13.05.2013, 13:41 18
Цитата Сообщение от THI BIOST
...Метка же всегда к PC привязывается, иначе и быть не может.
Метка всегда привязывается к имени. Любой ассемблер не даст обьявить две метки с одинаковыми именами. Но недостаточно продвинутый препроцессор примет метку в макросе за одиночную, даже если макрос применен несколько раз. Для избежания этого и служит $.
Другое дело, что современные ассемблеры достаточно продвинуты, чтобы сами разрулить такую ситуацию, и если пишете только для себя и точно знаете возможности своего ассемблера, $ можно не ставить. Если отдаете код другому, лучше поставить, хуже не будет.
0
THI BIOST
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,142
13.05.2013, 14:52 19
Не, я всё таки не понимаю, что именно происходит при установке $. Метка (то есть имя её) от этого не меняется. Ну добавился символ в начало. Разница то в чём?

1. Метка становится локальной для макроса?
2. Ищется ближайшая метка?

ЗЫ. Попробовал - AVROSM2 распознаёт такую метку только внутри макроса, за его пределами - чушь несусветная. Наверное, имеется ввиду локальность метки.
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
13.05.2013, 16:17 20
Цитата Сообщение от THI BIOST
...1. Метка становится локальной для макроса...
0
13.05.2013, 16:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2013, 16:17

Вывести в отдельный файл, кто и когда вносил изменения в файл xls
уважаемые, кто подскажет или направит в нужном направлении Суть задачи. Вести в отдельный файлик...

Создать файл каталог книг, по году издания занести в отдельный файл данные
создайте файл каталог книг по заданному значению года издания занесите в отдельный файл сведения о...

Как сохранить файл настроек в отдельный свой файл?
Никто не подскажет как сохранить файл настроек Settings в отдельный файл? Есть идея сохранять...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru