Технический форум по робототехнике.
Radist » 10 окт 2010, 21:24
Расскажу сперва о ситуации. Мне в программе нужно опытным путем подобрать несколько коэффициентов. Я сейчас задаю их директивой equ
.equ P = $50 например. Мне вот что не нравится - каждый подбор коэффициента - это перепрошивка флеши, ресурс перепрошивок которой ограничен. Я хочу формировать файл коэффициентов в еепроме, записывать уже его, а потом оттуда тягать коэффициенты в программу. Проблема в том, что не хочется переписывать программу под использование конкретных регистров (сейчас то у меня просто имя коэффициента). Есть ли возможность присвоить символьному обозначению регистр (в который я считаю содержимое еепрома)?
ЗЫ. Асемблер авр, пишу в студии.
Michael_K » 10 окт 2010, 21:52
DEF - Set a symbolic name on a register
The DEF directive allows the registers to be referred to through symbols. A defined symbol can be used in the rest of the program to refer to the register it is assigned to. A register can have several symbolic names attached to it. A symbol can be redefined later in the program.
Syntax:
.DEF Symbol=Register
Example:
.DEF temp=R16
.DEF ior=R0
Radist » 11 окт 2010, 06:09
Я видимо несколько двусмысленно выразился. Конечно мне знакома директива def, более того - я ей активно пользуюсь. Проблема в том, что equ дает имя числу, с которым я работаю мнемониками, заканчивающимися на i (ldi, cpi). А def задает имя регистра, поэтому придется рихтовать код, что очень не хочется. Я на 99% уверен, что код рихтовать все-таки придется, но здесь есть люди поопытнее меня, поэтому и решил перед этим спросить - вдруг есть какой-нибудь хитрый способ.
boez » 11 окт 2010, 19:10
Команды, заканчивающиеся на i, работают с константами, в этом их смысл. А константы на то и константы, что их значение должно быть известно на момент ассемблирования. Так что код полюбому менять, вставлять команды чтения из eeprom и потом загонять в нужные регистры...