14. Приложение

14.1. Таблица приоритетов операций (в Турбо Си)

Операции в таблице расположены в порядке убывания приоритетов, операции в одной строке имеют одинаковый приоритет.

 

Операция

Назначение

[ ]

Задание элемента массива

( )

Вызов функции

 .

Выбор поля структуры

->

Выбор поля структуры посредством указателя

++ , - -

Постфиксный и префиксный инкремент и декремент. Если они встречаются в одном выражении, то постфиксные операции имеют больший приоритет

sizeof

Определение размера аргумента к байтах

(тип)

Приведение к типу

~

Побитовое отрицание

!

Логическое НЕ

-

Унарный минус

&

Взятие адреса

*

Обращение по адресу

*, /,  %

Умножение, деление и взятие остатка

+, -

Сложение, вычитание

<<,>>

Битовые сдвиги влево и вправо

<,>,<=,>=

Сравнение

==, !=

Сравнение на равенство и неравенство

&

Побитовое И

^

Побитовое исключающее ИЛИ

|

Побитовое ИЛИ

&&

Логическое И

 ||

Логическое ИЛИ

?:

Условная операция

=,+=,-=,*=,/=,<<=,>>=,^=, |=

Присваивание и замещение

,

Операция запятая


14.2. Функция для установки палитры (см. 10.1)

В разделе 10.1 мы обещали привести функцию, использование которой позволяет устранить подергивание экрана при смене палитры (при использовании этой функции четвертый тест примера, приведенного в 10.1, . будет работать так, как и задумывалось). Вот эта функция:

void setVgaDAC(RGB pal)
 { int seg_table=FP_SEF(pal),off_table=FP_OFF(pal) ;
   asm {
            push ds
            push es
            xor ax,ax
           
mov es,ax
            mov dx,es:[463h]
            add dx,6
            pop es
            in al,dx
            nор
            nор
            test al,08h
            jz wait_on
         }
    wait_off:
    asm {
             in al,dx
             nор
             nор
             test al,08h
             jnz wait off
            }
      wait_on:
      asm {
             in al,dx
             nор
             nор
             test al,08h
             jz wait on
             mov dx,3c8h
             mov ax,0
             out dx,al
             nор
             nор
             mov ax,seg_table
             mov ds,ax
             mov si,off_table
             mov cx, (256*3)
             mov dx,3c9h
             cld
           }
       get_reg:
       asm
          {
             lodsb
             out dx,al
             nор
             nор
             loop get_reg
             pop ds
          } TopList