Вы, видимо, не тот учебник прочитали. Ни .equ, ни .set не создают переменных в памяти. Разница между ними заключается лишь в том, что в случае директивы .set метка может быть многократно переопределена
SET - Set a symbol equal to an expression
The SET directive assigns a value to a label. This label can then be used in later expressions. Unlike the .EQU directive, a label assigned to a value by the SET directive can be changed (redefined) later in the program.
Syntax:
.SET label = expression
Example:
.SET FOO = 0x114 ; set FOO to point to an SRAM location
lds r0, FOO ; load location into r0
.SET FOO = FOO + 1 ; increment (redefine) FOO. This would be illegal if using .EQU
lds r1, FOO ; load next location into r1
Что же касается вашей команды
sbr FLAG,1<<r17 то поставьте себя на место транслятора и запишите код данной инструкции. Интересно, что у вас получится?