Соббсно сабж. Следующий код работать не хочет. Пишет, что неправильные аргументы для макроса. Code (Text): struct aaa { a db ? b dd ? c dw ? } StrucArr aaa 10 dup(?) ; <- здесь ошибка Как решить?
Хм. struct и скобки? Это что-то новенькое. Надо так: Code (Text): struc foo { .a db ? .b dd ? .c dw ? } ;или так (c include 'win32a.inc' или include 'macro/struct.inc'): struct foo a db ? b dd ? c dw ? ends По сабжу: Сделать StrucArr rb 10 * sizeof.foo (определив сначала этот sizeof, если struc), но это неудобно (к структуре нормально не обратиться). Или так: Code (Text): ;Создаст StrucArr0, StrucArr1, …, StrucArr9. rept 10 n:0 { StrucArr#n foo } Или вообще пользоваться таким вот макросом: Code (Text): struc struc_array name*,n* { local ..struc_array virtual at 0 ..struc_array name @struc_array@sizeof = $ end virtual . name rb @struc_array@sizeof * (n - 1) } ; 10 структур foo StrucArr struc_array foo,10
Еще один вопрос в догонку, чтоб не создавать новую тему. Как сделать чтоб такое прокатило: Code (Text): struc MyStruc { .vala dd ? .valb dd ? .valc dw ? } MyStrucObj MyStruc mov bx, MyStrucObj mov ax, [bx.valb] ; <- Как это реализовать? Выдает ошибку, хотя тасм не жаловался :)
Во-первых, ты пытаешься запихнуть дворд в ворд. Странно, что тасм не ругалсо.. Во вторых: http://www.wasm.ru/forum/viewtopic.php?id=27764
Я там очепятался. Хотел написать "mov ax, [bx.valс]". Thanks. Все же думал можна как-то без гемора обойтись, но видимо не суждено