TURBO PASCAL |
Новости
|
Различия между выражениями Паскаля и ассемблераБольшинство важных различий между выражениями Паскаля и вы- ражениями встроенного ассемблера состоит в том, что выражения встроенного ассемблера должны при вычислении сводиться к значе- нию-константе, другими словами, к значению, которое можно вычис- лить на этапе компиляции. Например, с учетом описаний: const X = 10; Y = 20; var Z: Integer; следующий оператор является во встроенном ассемблере допустимым: asm mov Z,X+Y end; Поскольку X и Y - это константы, выражение X + Y представля- ет собой просто удобный способ записи константы 30, и полученная в результате инструкция помещает непосредственное значение 30 в переменную Z размером в слово. Но если вы опишете X и Y, как пе- ременные: var X, Y: Integer; то встроенный ассемблер не сможет на этапе компиляции вычислить значение X + Y. Корректной конструкцией встроенного ассемблера в этом случае будет: asm mov ax,X add ax,Y mov Z,ax end; Другим важным отличием выражений Паскаля и встроенного Ас- семблера является способ интерпретации переменных. В выражении Паскаля ссылка не переменную интерпретируется, как содержимое пе- ременной, но в выражении встроенного ассемблера ссылка на пере- менную означает адрес переменной. Например, в Паскале выражение X + 4, где X - переменная, означает содержимое X, плюс 4, а во встроенном ассемблере это означает содержимое в слове по адресу на 4 байта выше, чем адрес X. Поэтому, хотя допустима запись: asm mov ax,X+4 end; этот код не загружает значения X, плюс 4 в AX, а загружает значе- ние слова, записанного через 4 байта после X. Корректной записью сложения 4 с содержимым X будет: asm MOV AX,X ADD AX,4 end; |
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |