TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

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

Странности

FAQ

Ссылки

Форум

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

Рассылка

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

Об авторе

 

 

Директивы ассемблера 

             Встроенный ассемблер  Borland Pascal поддерживает три дирек-
        тивы ассемблера: DB (определить байт), DW (определить слово) и DD
        (определить двойное слово).  Каждая из них генерирует данные, со-
        ответствующие разделенным запятым операндам,  которые следуют  за
        директивой.

             Директива DB генерирует последовательность байт. Каждый опе-
        ранд может представлять собой выражение-константу со значением от
        -128 до 255, или строку символов любой длины. Выражение-константа
        генерирует 1 байт кода,  а строки  генерируют  последовательность
        байт со значениями, соответствующим коду ASCII каждого символа.

             Директива DW генерирует последовательность слов. Каждый опе-
        ранд может представлять собой выражение-константу со значением от
        -32768 до 65535,  или адресное выражение. Для адресного выражения
        встроенный ассемблер генерирует указатель ближнего типа, что есть
        слово, содержащие смещения адреса.

             Директива DD  генерирует  последовательность  двойных  слов.
        Каждый операнд может представлять  собой  выражение-константу  со
        значением  от  -2147483648  до 4294967295 или адресное выражение.
        Для адресного выражения встроенный ассемблер генерирует указатель
        дальнего типа, что есть слово, содержащие смещения адреса, за ко-
        торым следует слово, содержащее сегментную часть адреса.

             Данные, генерируемые по директивам DB, DW и DD, всегда запи-
        сываются в сегмент кода,  аналогично коду,  генерируемому другими
        операторами встроенного ассемблера. Чтобы сгенерировать инициали-
        зированные или неинициализированные данные в сегменте данных, вам
        следует использовать обычные описания Паскаля типа var или const.

             Приведем некоторые примеры директив DB, DW и DD:

             asm
               DB      00FH                                   { 1 байт }
               DB      0,99                                  { 2 байта }
               DB      'A'                                   { Ord('A) }
               DB      'Пример',0DH,OAH             { строка, за которой
                              следуют возврат каретки и перевод строки }

         B.Pascal 7 & Objects/LR     - 416 -

               DB      12,"Borland Pascal"            { строка Паскаля }
               DW      0FFFFH                                { 1 слово }
               DW      0,9999                                { 2 слова }
               DW      'A'                     { эквивалентно DB 'A',0 }
               DW      'BA'                  { эквивалентно DB 'A','B' }
               DW      MyVar                          { смещение MyVar }
               DW      MyProc                        { смещение MyProc }
               DD      0FFFFFFFH                     { 1 двойное слово }
               DD      0,99999999                    { 2 двойных слова }
               DD      'A'                 { эквивалентно DB 'A',0,0,0 }
               DD      'DBCA'        { эквивалентно DS 'A','B','C','D' }
               DD      MyVar                      { указатель на MyVar }
               DD      MyProc                    { указатель на MyProc }
             end;

             В Турбо Ассемблере,  когда перед идентификатором указывается
        DB, DW или DD,  это приводит к генерации в том месте, где указана
        директива,  переменной размером в байт,  слово или двойное слово.
        Например, Турбо Ассемблер допускает следующее:

             ByteVar        DB          ?
             WordVar        DW          ?
               .
               .
               .
                            mov         al,ByteVar
                            mov         bx,WordVar

             Встроенный ассемблер не поддерживает такие описания перемен-
        ных. В Borland Pascal единственным видом идентификатора,  который
        можно определить в  операторе  встроенного  ассемблера,  является
        метка.  Все  переменные  должны  описываться с помощью синтаксиса
        Паскаля, и предыдущая конструкция соответствует следующему:

             var
               ByteVar:    Byte;
               WordWat:    Word;
                 .
                 .
                 .
               asm
                 mov       al,ByteVar
                 mov       bx,WordVar
               end;


Содержание

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

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

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

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

Hosted by uCoz