Сначала вы должны удалить опечатку в первой строке: вместо
section. data align=16
это должно быть
section .data align=16
Объявление 1: Вы можете удобно проверять смещения всех именованных операндов памяти с помощью некоторого инструмента, который отображает таблицу символов. Если вы собрали исходный код в COFF для Windows, используйте
PEVIEW.EXE RTC222.obj
Если он собран в ELF для Linux, используйте
readelf -s RTC222.o
Symbol table '.symtab' contains 7 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
1: 0000000000000000 0 FILE LOCAL DEFAULT ABS RTC222.asm
2: 0000000000000000 0 SECTION LOCAL DEFAULT 1
3: 0000000000000000 0 NOTYPE LOCAL DEFAULT 1 data_1
4: 0000000000000008 0 NOTYPE LOCAL DEFAULT 1 data_2
5: 0000000000000010 0 NOTYPE LOCAL DEFAULT 1 str_var
6: 0000000000000030 0 NOTYPE LOCAL DEFAULT 1 MQX_Dcc
Смещения символов находятся в столбце Значение.
Объявление 2: Нет. В соответствии с рекомендациями @fuz, поместите переменные памяти в раздел .data или .rodata, отсортированный по их требованию выравнивания в порядке убывания (последние строки) , Это сделает программу короче.