Ассемблер для Windows



         

Объединение модулей - часть 2


И MASM и TASM поддерживают так называемую упрощенную сегментацию. Я являюсь приверженцем классической структуры ассемблерной программы и должен признаться, что упрощенная сегментация довольно удобная штука, особенно при программировании под Windows. Суть такой сегментации в следующем: начало сегмента определяется директивой .CODE, а сегмента данных - .DATA13. Причем обе директивы могут появляться в тексте программы несколько раз. Транслятор затем собирает код и данные вместе, как положено. Основной целью такого подхода, по-видимому, является возможность приблизить в тексте программы данные к тем строкам, где они используются. Такая возможность, как известно, в свое время была реализована в C++. На мой взгляд, она приводит к определенному неудобству при чтении текста программы. Кроме того, не сочтите меня за эстета, но когда я вижу данные, перемешанные в тексте программы с кодом, у меня возникает чувство дискомфорта.

Ниже представлена программа, демонстрирующая упрощенный режим сегментации.

.386P ; плоская модель .MODEL FLAT, STDCALL ;-------------------------------------------------- ; сегмент данных .DATA SUM DWORD 0 ; сегмент кода .CODE START: ; сегмент данных .DATA A DWORD 100 ; сегмент кода .CODE MOV EAX,A ; сегмент данных .DATA B DWORD 200 ; сегмент кода .CODE ADD EAX,B MOV SUM,EAX RET ; выход END START




Содержание  Назад  Вперед