Такая проблема возникла - никогда с ней не сталкивался: При использовании выравнивания align 10h в .data masm выдает: error A2189: invalid combination with segment alignment : 16 Вот подробный код: off_417498 dd offset sub_40F6C0 align 10h dd 40008h, 40F17Bh, 50004h, 80010h, 40F17Bh, 60004h, 200020h dd 40F17Bh, 40004h, 100010h, 40EAB0h, 100008h, 200020h dd 40EAB0h, 100008h, 800080h, 40EAB0h, 200008h, 1000080h dd 40EAB0h, 800020h, 4000102h, 40EAB0h, 1020020h, 10000102h dd 40EAB0h как можно исправить эту проблему?
deathwisher значение выравнивания в align должно быть <= выравнивания текущего сегмента. По умолчанию, выравнивание .data = 4. Нужно задать выравнивание сегмента вручную (без использования директивы .data, а прямо через SEGMENT).
deathwisher Код (Text): _data1 segment para abcdef dd 5 align 16 ghijk dd 3 _data1 ends Тут para - это 16 байт, т.е. параграф. Получаем сегмент с именем _DATA1.
Всё гораздо проще решается - достаточно в masm'е писать директиву процессора постарше семейством - .586 например и будет доступно выравнивание по большИм границам
asmfan Достаточно и 486 чтобы сегмент _text по умолчанию выравнивался на границу параграфа. Кстати, при совмещении секций (да и просто одноимённых сегментов из разных обьектников) из-за этого возникают большие дыры на стыке. Поэтому имеет смысл использовать 386 и задавать выравнивание вручную там, где это действительно нужно, IMHO.