Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
StarCraft II: Wings of Liberty |#9| Шепот Судьбы
StarCraft II: Wings of Liberty |#8| Большие раскопки
Minecraft |#3| Сборная солянка и новый мир
StarCraft II: Wings of Liberty |#7| С ножом у горла

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Различные авторы Весь текст 2311.07 Kb

Программирование и кодирование

Предыдущая страница Следующая страница
1 2 3 4 5 6 7  8 9 10 11 12 13 14 ... 198
                              макро  как одиночный аргумент.
            ----------------------------------------------------------

                                      - 1-16 -


                   Таблица 1-3. Директивы управления листингом в
                                макрокомандах

            ----------------------------------------------------------
            Директива                Описание применения
            ----------------------------------------------------------

            .XALL        Приводит исходный и объектный код макрорасши-
                         рений, исключая исходные строки,  которые не
                         вырабатывают исполнительного кода.  Устанав-
                         ливается по умолчанию.

            .LALL        Приводит все строки макрорасширения, исключая
                         комментарии, начинающиеся с удвоенных точкой
                         с запятой /;;/.

            .SALL        Исключает код, вырабатываемый  макрорасшире-
                         нием.

            .LIST        Приводит строки исходного текста  программы.
                         Действие противоположно .XLIST,  однако сос-
                         тояние листинга, определяемое директивами
                         .XALL, .LALL или .SALL не изменяет.

            .XLIST        Подавляет  любую  выдачу.  Перекрывает  все
                          другие  директивы.
            ---------------------------------------------------------


             Листинг 1-6. Условное ассемблирование операторов DEBUG -
                                       FALSE
         ----------------------------------------------------------------
                                    ;часть А - листинг исходного текста
                     FALSE    EQU     0
                     TRUE     EQU     0FFFFh
                     DEBUG    EQU     FALSE
            .
            .
            .
                     @TypeStr 'hello world!'
                     IF       DEBUG        <--- начало условного блока
                     @TypeStr 'Hi -I made it to this point in the program'
                     ENDIF                 <--- конец условного блока
            .
            .
            .
                                    ;часть В - листинг MASM

                     @TypeStr 'hello world!'
            1                   mov     dx,offset  ??0000
            1                   mov     ax,09h
            1                   int     21h     ;вызвать функцию MS-DOS
                     ENDIF
         ----------------------------------------------------------------


                                      - 1-17 -

               Данный пример был ассемблирован со  значением переключателя
         DEBUG - FALSE (ложь).  В результате от условного блока в листинге
         MASM после расширения @TypeStr появляется только  оператор ENDIF.
         Таким образом MASM сообщает,  что условный блок присутствовал, но
         он не ассемблировался. Когда значение переключателя DEBUG изменя-
         ется на TRUE (истина), MASM вырабатывает другую программу, приве-
         денную в Листинге 1-7.


             Листинг 1-7. Условное ассемблирование операторов DEBUG -
                                       TRUE
         ------------------------------------------------------------------

                                     ;листинг MASM
                      DEBUG      EQU       TRUE
            .
            .
            .
                      @TypeStr  "hello world"
            1                   mov        dx,offset  ??0001
            1                   mov        ax,09h
            2                   int        21h   ;вызвать функцию MS-DOS
                      IF        DEBUG
                      @TypeStr  'Hi -I made it to this point in the program'
            1                   mov        dx,offset ??0002
            1                   mov        ah,09h
            2                   int        21h   ;вызвать функцию MS-DOS
                      ENDIF
         ----------------------------------------------------------------
            Все это время отладочные операторы присутствовали в программе.
         MASM также включает в листинг строку,  вызывающую ассемблирование
         операторов.  Если  Вы  предпочитаете увидеть в файле листинга все
         директивы условного ассемблирования вне зависимости от того, име-
         ют  они  значение  TRUE или FALSE,  используйте директиву .LFCOND
         (включить список ложных состояний).   Позднее Вы можете  подавить
         выдачу  ложных  состояний  при помощи директивы .SFCOND (подавить
         выдачу ложных состояний).  В основном, блок условного ассемблиро-
         вания  начинается  с  одной из разновидностей оператора IF (если)
         (см. полный список в Табл. 1-4) и заканчивается оператором ENDIF.
            Обычно использование  переключателей TRUE/FALSE в условном ас-
         семблировании возникает при программировании систем (программиро-
         вание операционных систем компьютеров). Если для Вашего компьюте-
         ра имеется исходный текст операционной системы на языке ассембле-
         ра, просмотрите его. Вы наверняка найдете, что условное ассембли-
         рование используется в нем весьма интенсивно.  Условное ассембли-
         рование   позволяет   проектировщику   писать  одну  операционную
         систему,  а через использование переключателей -  конфигурировать
         ее на конкретный набор аппаратных средств. Эти переключатели, по-
         добно переключателю DEBUG из нашего примера, позволяют сгенериро-
         вать работающую систему для данного типа, количества или конфигу-
         рации памяти, пульта, периферийных устройств, драйверов и т.д.
            Некоторые выражения,  которые  при вычислении дают 0 или имеют
         значение 0,  MASM рассматривает  как  FALSE.  Ненулевые  значения
         рассматривает  как  TRUE.  Обычно  для  символа TRUE используется
         шестнадцатиричное значение FFFFh. Это разрешает использовать TRUE
         в любых битовых операциях. Например, поразрядное  выполнение  AND

                                     - 1-18 -
         (логическое И) над 0001 и 1000 равно 0000,  так как хотя оба зна-
         чения и истинны,  их логическое произведение должно  быть  ложно.
         Вспомните, что MASM использует одни и те же операторы как для ло-
         гических, так и для битовых операций.


                 Таблица 1-4. Директивы условного ассемблирования

            ---------------------------------------------------------
            Директива       Переменная       Описание применения
            ---------------------------------------------------------

            IF              выражение     IF TRUE (если истина)
                                          Если значение  выражения не
                                          нулевое, операторы условно-
                                          го блока ассемблируются.

            IFE             выражение     IF FALSE (если ложь)
                                          Если значение выражения рав-
                                          но нулю, операторы условного
                                          блока ассемблируются.

            ELSE                          ELSE (иначе)
                                          Если значение условной ди-
                                          рективы ассемблирования рав-
                                          но FALSE (ложь) (условный
                                          блок не ассемблируется),
                                          ассемблируются альтернатив-
                                          ные операторы блока ELSE.
                                          Завершает блок IFXXXX, хотя
                                          после должно следовать ENDIF.
                                          Действительно только после
                                          оператора IFXXXX.

            ENDIF                         END блока IF (конец блока IF)
                                          Завершает блок IFхххх или
                                          ELSE.

            IF1,IF2                       IF MASM проход 1, IF MASM
                                          проход 2
                                          Ассемблирует условный блок,
                                          если MASM-ассемблер осущест-
                                          вляет указанный проход.
                                          См.взаимозависимость между IF1
                                          и IF2 и IFDEF и IFNDEF.

            IFDEF           символ        IF cимвол DEFINED (если сим-
                                          вол определен)
            IFNDEF          символ        IF символ NОT DEFINED (если
                                          символ не определен)
                                          Выясняет, определен ли сим-
                                          вол или он имеет внешнее
                                          объявление. IFNDEF противо-
                                          положно IFDEF. См. взаимо-
                                          связь с проходами ассемблера.

            IFB            <аргумент>     IF аргумент BLANK (если ар-
                                          гумент пуст).

                                      - 1-19 -
            ---------------------------------------------------------
            Директива       Переменная       Описание применения
            ---------------------------------------------------------
            IFNB           <аргумент>     IF аргумент NOT BLANK (если
                                          аргумент не пуст).
                                          Выясняет, пуст ли аргумент.
                                          Используется для определения
                                          передаваемых параметров мак-
                                          ро. IFNB противоположноIFB.
                                          Наличие угловых скобок обя-
                                          зательно.
            IFIDN       ,     IF строка1 IDENTICAL TO
                                          строка2 (если строка1 иден-
                                          тична строке2)
            IFDIF       ,     IF строка1 DIFFERENT FROM
                                          строка2 (если строка1 отлич-
                                          на от строки2)
                                          Определяет, идентичны ли
                                          строка1 и строка2. IFDIF
                                          противоположно IFIDN.
                                          Наличие угловых скобок обя-
                                          зательно.
            ---------------------------------------------------------

                                Операторы отношений

            Кроме использования  символов с предопределенными значениями и
         арифметических выражений MASM поддерживает  операторы  отношений,
         которые  могут  применяться  для управления операторами условного
         ассемблирования.  Операторами отношений являются операторы, выра-
         жающие  взаимосвязь  между  двумя  значениями.  Less than (меньше
         чем), greater than (больше чем), equal to (равно)  и not equal to
         (не равно) - примеры операторов отношений.
            Эти операторы позволяют выполнять специальные действия по про-
         верке на попадание в диапазон. Использование операторов отношений
         разрешает создавать довольно сложные программные структуры, кото-
Предыдущая страница Следующая страница
1 2 3 4 5 6 7  8 9 10 11 12 13 14 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама