Есть 2 струтуры, см. далее: Код (Text): _Ps STRUC saddr DWORD ? daddr DWORD ? _Ps ENDS _Sum STRUC ps _Ps <?> val BYTE ? _Sum ENDS Как правильно в секции DATA? создать переменную типа _Sum? Как правильно обращаться в программе к элементам струк-ры _Sum?
В секции DATA создавать так: peremennaia _Sum <?> Обращатся так: mov peremennaia.ps.saddr, 0 или mov dword ptr [peremennaia], 0 mov peremennaia.ps.daddr, 0 или mov dword ptr [peremennaia+4], 0 и тд. чтобы не заморачиваться с вложенными структурами, структуру _Sum можно представить как _Sum STRUCT saddr DWORD? daddr DWORD? val BYTE ? _Sum ENDS
Код (Text): _Ps1 STRUC saddr1 DWORD ? daddr1 DWORD ? _Ps1 ENDS _Ps2 STRUC saddr2 DWORD ? daddr2 DWORD ? _Ps2 ENDS _SumSTRUC ps1 _Ps1 <?> ps2 _Ps2 <?> _Sum ENDS .data? Sum _Sum <?> Всплывает Ошибка: error A2181: initializer must be a string or single item error A2138: invalid data initializer Компилятор Masm32 v.8
Похоже ему не нравится, что в структуре _Sum только структуры (простите за тавтологию). И действительно, зачем? Напиши Код (Text): _Sum STRUC saddr1 DWORD ? daddr1 DWORD ? saddr2 DWORD ? daddr2 DWORD ? _Sum ENDS Зачем всё усложнять...
Код (Text): Похоже ему не нравится, что в структуре _Sum только структуры (простите за тавтологию). И действительно, зачем? Напиши _Sum STRUC saddr1 DWORD ? daddr1 DWORD ? saddr2 DWORD ? daddr2 DWORD ? _Sum ENDS Зачем всё усложнять... Так будет не очень понятна логика - здесь четко не видно что структура состоит из двух других структур
Так читай о структурах: structname <[initializer [, initializer]...]> structname <> - это определение структуры с инициализацией её членов значениями, указанными в объявлении. У тебя там "?". А <?> - это не инициализирующее значение, вот и ругается компилятор, что ты ему не то подсовываешь.