Решил проблему, относительно красиво.
1. Поместил интересующие поля в самом начале структуры.
2. Окаймил описание структуры с помощью
#pragma pack(push, 1) и
#pragma pack(pop) (т.к. было неоднократно замечено, что поля в структуре могут физически располагаться не в том порядке, в каком они описаны):
Код
#pragma pack(push, 1)
struct TStored
{
volatile unsigned short var_1;
volatile unsigned short second_var;
//...... все остальные поля
}
#pragma pack(pop)
3. И, наконец, досткп к ним сделал следующим образом:
Код
.extern strd;
.equ var_1, (strd + 0)
.equ second_var, (strd + 2)
//.......
lds r25, var_1 + 1 // High
lds r24, var_1 // Low
Работает нормально.
Если кто найдёт недостатки данного решения, или знает, как сделать лучше - пожалуйста, не стесняйтесь, буду благодарен за советы.
/* Всё хорошо в меру. */