Иллюстрированный самоучитель по Assembler


Сегментная структура программ - часть 2



code segment ;Откроем сегмент команд


begin: mov AX,data ;Настроим DS


mov DS,AX ;на сегмент данных;


Выведем на экран строку текста


mov АН,09h ;Функция DOS вывода на экран


mov DX,offset msg ;Адрес выводимой строки


int 21h ;Вызов DOS


;Завершим программу


mov AX,4C00h ;Функция DOS завершения программы


int 21h ;Вызов DOS


code ends ;Закроем сегмент команд


;Опишем сегмент данных


data segment ;Откроем сегмент данных


msg db "Программа работает!$' ;Выводимая строка


data ends ;Закроем сегмент данных


;Опишем сегмент стека


stk segment stack ;Откроем сегмент стека


db 256 dup (?) ;Отводим под стек 256 байт


stk ends ;Закроем сегмент стека


end begin ;Конец текста с точкой входа

Следует заметить, что при вводе исходного текста программы с клавиатуры можно использовать как прописные, так и строчные буквы; транслятор воспринимает, например, строки MOV AX,DATA и mov ax.data одинаково. Однако с помощью соответствующих ключей можно заставить транслятор различать прописные и строчные буквы в отдельных элементах предложений. В настоящей книге в текстах программ и при описании операторов языка в основном используются строчные буквы, за исключением обозначений регистров, которые для наглядности выделены прописными буквами.

Предложения языка ассемблера могут содержать комментарии, которые отделяются от предложения языка знаком точки с запятой (;). При необходимости комментарий может занимать целую строку (тоже, естественно, начинающуюся со знака ";"). Поскольку в языке ассемблера нет знака завершения комментария, комментарий нельзя вставлять внутрь предложения языка, как это допустимо делать во многих языках высокого уровня. Каждое предложение языка ассемблера, даже самое короткое, должно занимать отдельную строку текста.

В программе 1-1 описаны три сегмента: сегмент команд с именем code, сегмент данных с именем data и сегмент стека с именем stk. Описание каждого сегмента начинается с ключевого слова segment, предваряемого некоторым именем, и заканчивается ключевым словом end, перед которым указывается то же имя, чтобы транслятор знал, какой именно сегмент мы хотим закончить. Имена сегментов выбираются вполне произвольно. Текст программы заканчивается директивой ассемблера end, завершающей трансляцию. В качества операнда этой директивы указывается точка входа в программу; в нашем случае это метка begin.




Начало  Назад  Вперед



Книжный магазин