Flat Assembler 1.64. Мануал программера | страница 6
>mov bx,char
», а для того, чтобы поместить в регистр DL значение байта, на который ссылается «>char
», нужно использовать «>mov dl,[char]
» (или «>mov dl,ptr char
»). Если вы попытаетесь ассемблировать «>mov ax,[char]
», FASM выдаст ошибку, так как он сравнивает размеры операндов, которые должны быть равны. Вы можете принудительно проассемблировать эту инструкцию, изменяя размер операнда: «>mov ax, word [char]
», но помните, что эта инструкция прочитает два байта, начинающихся с адреса «>char
», тогда как он был определен как один байт.Последний и самый гибкий способ задания меток — это использование директивы «>label
». За этой директивой должно следовать имя метки, далее, опционально, размер оператора (может предваряться двоеточием), и далее, также опционально, оператор «>at
» и числовое выражение, определяющее адрес, на который данная метка должна ссылаться. Например, «>label wchar word at char
» определяет новую метку для 16-битных данных по адресу «>char
». Теперь инструкция «>mov ax,[wchar]
» после компиляции будет выглядеть так же, как «>mov ax,word [char]
». Если адрес не указан, директива «>label
» будет ссылаться на текущий адрес. Таким образом, «>mov [wchar],57568
» скопирует два байта, тогда как «>mov [char],224
» скопирует один байт на тот же адрес.
Метка, имя которой начинается с точки, обрабатывается как локальная, и её имя прикрепляется к имени последней глобальной метки (с названием, начинающемся с чего угодно, кроме точки) для создания полного имени этой метки. Так, вы можете использовать короткое имя (начинающееся с точки) где угодно перед следующей глобальной меткой, а в других местах вам придется пользоваться полным именем. Метки, начинающиеся с двух точек — исключения. Они имеют свойства глобальных, но не создают новый префикс для локальных меток.
«>@@
» обозначает анонимную метку, вы можете определить её множество раз. Символ «>@b
» (или эквивалент «>@r
») ссылается на ближайшую предшествующую анонимную метку, а символ «>@f
» ссылается на ближайшую после неё анонимною метку. Эти специальные символы нечувствительны к регистру.
1.2.4 Числовые выражения
В предыдущих примерах все числовые выражения были обычными числами, константами или метками. Но они могут быть более сложными, использовать арифметические или логические операторы для вычисления во время компиляции. Все эти операторы с их значениями приоритета перечислены в таблице 1.4.