TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

Различия между выражениями Паскаля и ассемблера 

             Большинство важных  различий между выражениями Паскаля и вы-
        ражениями встроенного ассемблера состоит  в  том,  что  выражения
        встроенного  ассемблера  должны при вычислении сводиться к значе-
        нию-константе,  другими словами, к значению, которое можно вычис-
        лить на этапе компиляции. Например, с учетом описаний:

             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;

Содержание

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz