На этом шаге мы организацию упрощенного режима сегментации.
И MASM, и TASM поддерживают так называемую упрощенную сегментацию. Мы являемся приверженцами классической структуры ассемблерной программы, но признаем, что упрощенная сегментация довольно удобная штука, особенно при программировании под Windows.
Суть такой сегментации в следующем: начало сегмента определяется директивой .CODE, а сегмента данных - .DATA. Причем обе директивы могут появляться в тексте программы несколько раз. Транслятор затем собирает код и данные вместе, как положено. Основной целью такого подхода, по-видимому, является возможность приблизить в тексте программы данные к тем строкам, где они используются. Такая возможность, как известно, в свое время была реализована в языке программирования C++. По нашему мнению, она приводит к определенному неудобству при чтении текста программы.
Замечание.
Разумеется, есть директива и для стека - это .STACK, но мы ее почти не будем
использовать.
Ниже представлена программа, демонстрирующая упрощенный режим сегментации.
.386P ;плоская модель памяти .MODEL FLAT, STDCALL ;сегмент данных .DATA SUM DWORD 0 ;сегмент кода .CODE START: ;сегмент данных .DATA A DWORD 100 ; сегмент кода .CODE MOV ЕАХ,А ;сегмент данных .DATA В DWORD 200 ; сегмент кода .CODE ADD EAX,B MOV SUM,EAX RET ;выход END START
На следующем шаге мы перечислим несколько утилит, предназначенных для работы с Ассемблером.