Строковые константы должны быть заключены в кавычки или апострофы. Две последовательные "" или '' внутри строки считаются как один символ. Примеры строковых констант:
'Z'
'Turbo Pascal'
"That's all folks"
'"That"s all folks,"he said.'
'100'
'"'
"'"
Заметим, что в 4 строке использовались 2 апострофа для указания одиночного символа "апостроф".
В директивах DB разрешены строковые константы любой длины. Это приводит к распределению последовательности байт, содержащей ASCII
значения символов строки. Во всех других случаях строковая константа не может быть длиннее 4 символов и означает, числовое значение, которое может использоваться в выражении. Числовое значение строковой константы вычисляется как
Ord(Ch1) + Ord(Ch2) shl 8 + Ord(Ch3) shl 16 + Ord(Ch4) shl 24
где Ch1 наиболее правый (последний) символ, а Ch4 - наиболее левый (первый) символ. Если строка короче 4 символов, самые левые символы устанавливаются в 0. Несколько примеров строковых констант и соответствующих числовых значений:
'a' 00000061H
'ba' 00006261H
'cba' 00636261H
'dcba' 64636261H
'a ' 00006120H
' a' 20202061H
'a'*2 000000E2H
'a'-'A' 00000020H
not'a' FFFFFF9EH
Регистры.
Следующие зарезервированные символы означают регистры 8086:
16-битный общего назначения AX BX CX DX
8-битный младший AL BL CL DL
8-битный старший AH BH CH DH
16-битный указатель или индекс SP BP SI DI
16-битный сегментный регистр CS DS SS ES
регистр стека 8087 ST
Когда операнд состоит только из имени регистра, он называется регистровым операндом. Все регистры могут быть использованы как регистровые операнды. Кроме того некоторые регистры могут использоваться в других констекстах.
Базовые регистры (BX, BP) и индексные регистры (SI, DI) могут быть написаны внутри [] для указания индексации. Допустимые комбинации базовых/индексных регистров: [BX], [BP], [SI], [DI], [BX
+SI], [BX+DI], [BP+SI], [BP+DI].
Сегментные регистры (ES, CS, SS, DS) могут использоваться вместе с ":" как перекрытие сегмента для указания сегмента, отличного от того, который процессор выбирает по умолчанию.
Символ S означает самый верхний регистр из регистров стека
8087. Каждый из 8 регистров с плавающей точкой может быть использован с помощью ST(x), где х - константа от 1 до 7, указывающая на смещение от вершины стека.
Символы.
Встроенный Ассемблер позволяет Вам обращаться почти ко всем символам Паскаля в ассемблерных выражениях, включая метки, константы, типы, переменные, процедуры и функции. Дополнительно встроенный Ассемблер реализует следующие специальные символы:
@Code @Data @Result
Символы @Code и @Data представляют текущие сегменты кода и данных. Они могут быть использованы только совместно с операторами
SEG:
asm
mov ax,SEG @Data
mov ds,ax
end;
Символ @Result представляет переменную с результатом функции внутри операторной части функции. Например, в функции
function Sum(X, Y: Integer): Integer;
begin
Sum := X + Y;
end;
оператор, который назначает результат значения функции в Sum, будет использовать переменную @Result:
function Sum(X, Y: Integer): Integer;
begin
asm
mov ax,X
add ax,Y
mov @Result,AX
end;
end;
Следующие символы не могут быть использованы в выражениях встроенного Ассемблера:
- Стандартные процедуры и функции (например Writeln, Chr).
- Специальные массивы Mem, MemW, MemL, Port, PortW.
- Константы строковые, с плавающей точкой и типа множество.
- Процедуры и функции, объявленные с директивой inline.
- Метки, которые не объявлены в текущем блоке.
- Символ @Result вне функции.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.