воскресенье, 10 мая 2009 г.

Синтаксис ассемблера

Cтруктура программы определяется, с одной стороны, архитектурой процессора (если обращение к памяти возможно только с помощью сегментов, то и программа, видимо, должна состоять из сегментов), а с другой - особенностями той операционной системы, под управлением которой эта программа будет выполняться. Наконец, на структуру программы влияют также и правила работы выбранного транслятора - разные трансляторы предъявляют несколько различающиеся требования к исходному тексту программы.
У TASM есть режим совместимости с MASM. Если в начале программы не стоит директива IDEAL, то TASM работает в синтаксическом стандарте MASM.
При вводе исходного текста программы можно использовать как прописные, так и строчные буквы; транслятор воспринимает, например, строки MOV AX,DATA и mov ax,data одинаково. Однако с помощью соответствующих ключей можно заставить транслятор различать прописные и строчные буквы в отдельных элементах предложений.

Комментарии в программах на ассемблере

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

;Эта строка полностью является комментарием
ADD AX,BX ;Комментарий на одной строке с командой

Формат кодирования

Основной формат кодирования команд ассемблера имеет следующий вид:

[метка] команда/директива [операнд(ы)] [;комментарий]

Метка (если имеется), команда и операнд (если имеется) разделяются по крайней мере одним пробелом или символом табуляции. Каждое предложение языка ассемблера, даже самое короткое, должно занимать отдельную строку текста.
Примеры кодирования:

Метка     Команда   Операнд
COUNT: DB 1 ;Имя, команда, один операнд
MOV AX,0 ;Команда, два операнда

Метка Директива Операнд
datasg segment
msg db 'Hello$'
datasg ends

Комментариев нет: