КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА - Турбо С: руководство пользователя. Часть 2 - Стр. 50

Индекс материала
Турбо С: руководство пользователя. Часть 2
Стр. 2
Стр. 3
Стр. 4
Стр. 5
Стр. 6
Стр. 7
Стр. 8
Стр. 9
Стр. 10
Стр. 11
Стр. 12
Стр. 13
Стр. 14
Стр. 15
Стр. 16
Стр. 17
Стр. 18
Стр. 19
Стр. 20
Стр. 21
Стр. 22
Стр. 23
Стр. 24
Стр. 25
Стр. 26
Стр. 27
Стр. 28
Стр. 29
Стр. 30
Стр. 31
Стр. 32
Стр. 33
Стр. 34
Стр. 35
Стр. 36
Стр. 37
Стр. 38
Стр. 39
Стр. 40
Стр. 41
Стр. 42
Стр. 43
Стр. 44
Стр. 45
Стр. 46
Стр. 47
Стр. 48
Стр. 49
Стр. 50
Стр. 51
Стр. 52
Стр. 53
Стр. 54
Стр. 55
Стр. 56
Все страницы
     лера.  Что поможет вам в этом случае? Турбо Си дает ответ на этот          
     вопрос (фактически три ответа): псевдопеременные, встроенный  ас-          
     семблер  и  функции прерывания. Прочтите эту главу, и вы поймете,          
     как каждый из них поможет выполнить вашу работу.                           
                                                                                
                                                                                
                                                                                
                             Псевдопеременные                                   
     -----------------------------------------------------------------          
                                                                                
          Процессор в вашей ЭВМ (8088/8086/80186/80286) имеет  опреде-          
     ленное число регистров (или специальных элементов хранения),  ко-          
     торые он использует для манипулирования величинами.  В каждом ре-          
     гистре   16  разрядов  (2  байта);  некоторые  из  них  выполняют          
                                                                                
     специальные функции,  хотя часть из них может быть использована и          
     в  качестве регистров общего назначения.  Вспомните "Модели памя-          
     ти", рассмотренные в начале этой главы, для подробного рассмотре-          
     ния этих регистов процессора.                                              
                                                                                
          Иногда (в низкоуровневом программировании) вам может понадо-          
     биться обращение непосредственно к этим регистрам из Си-программы          
     для:                                                                       
          - загрузки в них значений перед вызовом  системных  подпрог-          
     рамм;                                                                      
          - просмотра значений, содержащихся в них в настоящее время.           
                                                                                
          Турбо Си очень просто позволит вам обратиться к этим регист-          
     рам через псевдопеременные. Псевдопеременные - это просто иденти-          
     фикаторы,  которые  соответствуют  данным регистрам. Их можно ис-          
     пользовать по  аналогии  с  переменными  типа  unsigned  int  или          
     unsigned char.                                                             
                                                                                
          В таблице 12.6 приведен полный список псевдопеременных,  ко-          
     торые можно использовать,  их типы,  регистры,  которым они соот-          
     ветствуют, и для чего эти регистры обычно используются.                    
                                                                                

                         - 411,412 -
                                                                                
                                                                                
     ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН          
        Псевдо -                                  Назначение                    
      переменные        Тип          Регистр       регистра                     
     ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН          
                                                                                
         _AX       unsigned int        AX     РОН / аккумулятор                 
         _AL       unsigned char       AL     младший байт AX                   
         _AH       unsigned char       AH     старший байт AX                   
                                                                                
         _BX       unsigned int        BX     РОН / индексный                   
         _BL       unsigned char       BL     младший байт BX                   
         _BH       unsigned char       BH     старший байт BX                   
                                                                                
         _CX       unsigned int        CX     РОН/счетчик,счетчик               
                                                           цикла                
         _CL       unsigned char       CL     младший байт CX                   
         _CH       unsigned char       CH     старший байт CX                   
                                                                                
         _DX       unsigned int        DX     РОН / содержащий данные           
         _DL       unsigned char       DL     младший байт DX                   
         _DH       unsigned char       DH     старший байт DX                   
                                                                                
                                                                                
         _CS       unsigned int        CS     сегмент кода                      
         _DS       unsigned int        DS     сегмент данных                    
         _SS       unsigned int        SS     сегмент стека                     
         _ES       unsigned int        ES     дополнительный сегмент            
                                                                                
         _SP       unsigned int        SP     указатель стека                   
                                            (смещение относительно SS)          
         _BP       unsigned int        BP     указатель базы                    
                                            (смещение относительно SS)          
         _DI       unsigned int        DI     Используется для                  
                                              регистровых переменных            
         _SI       unsigned int        SI     Используется для                  
                                              регистровых переменных            
                                                                                
     ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН          
                                                                                
           Таблица 12.6. Псевдопеременные Турбо Си                              
                                                                                
          Для  чего  же вам может понадобиться прямое обращение к этим          
     переменным из Турбо Си ?                                                   
                                                                                

                         - 413,414 -
                                                                                
          Для занесения в регистр некоторого  значения  перед  вызовом          
     низкоуровневой подпрограммы. Например, можно вызвать определенную          
     подпрограмму из ПЗУ, используя INT (прерывание), но обязательно с          
     предварительным занесением  необходимой информации в определенные          
     регистры, например так:                                                    
                                                                                
     void readchar (unsigned char page, unsigned char *ch,                      
                                        unsigned char *attr);                   
     (                                                                          
 - точка с  запятой  или  новая          
            строка, указывающие на окончание оператора asm.