adfun.ru
 
BIGLIB
  большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно
 
АСТРОЛОГИЯ
  книги по астрологии
 
КРИМИНАЛ
  книги про криминал
 
ДЕТЕКТИВЫ
  детективы известных
   писателей
 
ФАНТАСТИКА
  фентези, фантастика,   фантастические повести
 
ПРИКЛЮЧЕНИЯ
  книги про приключения,   путешествия
 
ПОЛИТИКА
  книги про политиков,   репрессии
 
ПСИХОЛОГИЯ
  разнообразная литература   по психологии
 
КЛАССИКА
  классическая литература
 
КОМПЬЮТЕРНАЯ
  ЛИТЕРАТУРА
  про компютерное железо,   документация, языки   программирования
 
РЕЛИГИЯ, АТЕИЗМ
  книги про религию
 
ФИЛОСОФИЯ
  книги, которые заставляют   задуматься над   окружающим тебя миром.
 
ЭНЦИКЛОПЕДИИ
  самые интересные   энциклопедии на
   разные темы
 
МЕДИЦИНА
  медицинские книги,   методички,
   народные лечебники
 
КУЛИНАРИЯ
  рецепты тортов,   консервирование,
  все о спиртных
  напитках.
 
СТИХИ
  стихи популярных и не   очень авторов
 
ТВОРЧЕСТВО
  народное творчество,   стихи, песни и т.д.
 
ЮМОР
  анекдоты, приколы,   смешные истории
 
ЛЮБОВНЫЙ РОМАН
  мир высоких чувств и   любовных грез
 
ЭРОТИКА
  эротические рассказы,   книги о технике секса,   кама-сутра и др.




adfun.ru
Rambler's Top100 Rambler's Top100
    НА ГЛАВНУЮ
    РЕФЕРАТЫ
    ТОСТЫ
    ТЕСТЫ
    АВТО
    ДЛЯ СТУДЕНТА
    КНИГИ
    КОНТАКТ
 
Турбо С: руководство пользователя. Часть 2
Автор ""
Размер 800673 Байт
Страница 51 из 56
СКАЧАТЬ КНИГУ ЦЕЛИКОМ

                                                                                
          Новый оператор asm может размещатся на той же строке, следуя          
     после точки с запятой,  но он не может продолжаться на  следующую          
     строку.                                                                    
                                                                                
          Точка с  запятой  не может быть использована для начала ком-          
                                                                                
     ментария (как это возможно в TASM).  Для того,  чтобы комментиро-          
     вать операторы asm, используют комментарии в стиле Си, т.е.                
                                                                                
       asm mov ax,ds;                  /*Этот комментарий правильный*/          
       asm pop ax; asm pop ds; asm iret;    /*Комментарий правильный*/          
       asm push ds;                    ЭТОТ КОММЕНТАРИЙ НЕПРАВИЛЬНЫЙ!!          
                                                                                
          Заметим, что последняя строка приводит к ошибке, т.к. комен-          
     тарий здесь некорректен.                                                   
                                                                                
          Пара <код операции> <операнды> переносится непосредственно в          
     программу на языке ассемблера, которую Турбо Си генерирует из ко-          
     манд Си.  Любые Си-идентификаторы заменяются соответствующими эк-          
     вивалентами на языке ассемблера.                                           
                                                                                
          Возможности встроенного ассемблера не равнозначны возможнос-          
     тям полного ассемблера,  так как многие ошибки не могут быть  не-          
     медленно обнаружены.  TASM будет ловить любые ошибки, которые мо-          
     гут  здесь   появиться.   Однако   TASM   не   может   распознать          
     местонахождение ошибок в часности потому, что место положения ко-          
     манды в Си-программе утеряно.                                              
                                                                                

                         - 419,420 -
                                                                                
          Каждый оператор asm считается командой Си. Например:                  
                                                                                
           myfunc()                                                             
          {                                                                     
             int i;                                                             
             int x;                                                             
             if (i > 0)                                                         
                asm mov x,4                                                     
             else                                                               
                i = 7;                                                          
          }                                                                     
                                                                                
          Эта конструкция допустима в Си-операторе  if.  Заметим,  что          
     нет  необходимости ставить точку с запятой после команды mov x,4.          
     Оператор asm является единственным оператором Си, который зависит          
     от  символа  новой строки.  Этого нет в остальной части языка Си,          
     однако, это соглашение принято для совместимости с основными ком-          
     пиляторами UNIX.                                                           
                                                                                
          Оператор ассемблера  может  быть использован как выполняемый          
     оператор внутри функции или как внешнее объявление  вне  функции.          
     Операторы ассемблера, расположенные вне функции, находятся в сег-          
                                                                                
     менте данных (DATA), а расположенные внутри функции - в программ-          
     ном сегменте (СODE).                                                       
                                                                                
          Приведем версию   встроенного  ассемблера  для  функции  min          
     (представленной ранее в этой главе в разделе "Управление  возвра-          
     щаемыми значениями").                                                      
                                                                                
          int min (int V1, int V2)                                              
          {                                                                     
            asm mov ax,V1                                                       
            asm cmp ax,V2                                                       
            asm jle minexit                                                     
            asm mov ax,V2                                                       
            minexit:                                                            
            return (_AX);                                                       
          }                                                                     
                                                                                
          Этот пример показывает, почему использование встроенного ас-          
     семблера в Турбо Си более гибко и мощно,  чем вызов .ASM подпрог-          
     рамм. Этот пример работает с модулями, компилируемыми как с боль-          
     шой, так и с малой моделями  памяти,  как  с  Паскаль,  так  и  с          
     Си-соглашениями по вызову.                                                 

                         - 421,422 -
                                                                                
                                                                                
          Эквивалент  же .ASM всегда должен быть изменен в зависимости          
     от модели памяти и соглашения по вызову (Си или Паскаль). В  .ASM          
     эквиваленте  для min вы всегда отвечаете за смещение параметров и          
     написание идентификатора (_min или MIN); этого не нужно в  случае          
     версии встроенного ассемблера.                                             
                                                                                
          Замечание: существует новый особый вызов _emit_, позволяющий          
     программировать на встроенном Турбо Паскале. Для более полной ин-          
     формации  об  _emit_ отсылаем вас к введению главы 2 "Руководства          
     по Турбо Си".                                                              
                                                                                
          Любые коды операций 8086 могут быть включены  как  операторы          
     встроенного  ассемблера.  Существует 4 класса команд, допускаемых          
     компилятором Турбо Си:                                                     
                                                                                
        - нормальные команды - обычный набор кодов операций 8086;               





- строковые команды - специальные команды управления строками; - команды перехода - различные команды перехода; - директивы ассемблера - определение и размещение данных. Заметим, что компилятор допускает любые операнды, даже если они ошибочны или недопустимы с точки зрения ассемблера. Компиля- тор не накладывает ограничений на формат операндов. - 423,424 - Команды ----------------------------------------------------------------- Далее следует полный список мнемоники команд, которые могут быть использованы в качестве нормальных команд: ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН aaa fcom fldl2t fsub or aad fcomp fldlg2 fsubp out aam fcompp fldln2 fsubr pop aas fdecstp ** fldlpi fsubrp popa adc fdisi fldz ftst popf add fdivi fmul fwait push and fdivp fmulp fxam pusha bound fdivr fnclex fxch pushf call fdivrp fndisi fxtract rcl cbw feni fneni fyl2x rcr clc ffree ** fninit fyl2xpl ret cld fiadd fnop hlt rol cli ficom fnsave idiv ror cmc ficomp fnstcw imul sahf cmp fidiv fnstenv in sal cwd fidivr fnstsw inc sar daa fild fpatan int sbb das fimul fprem into shl dec fincstr ** fptan iret shr div finit frndint lahf sbc enter fist frstor lds std f2xm1 fistp fsave lea sti fabs fisub fscale leave sub fadd fisubr fsqrt les test faddp fld fst mov wait fbld fld1 fstcw mul xchg fbstp fldcw fstenv neg xlat fchs fldenv fstp not xor fclex fldl2e fstsw ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН Таблица 12.7. Мнемоника кодов операций Замечание: когда вы используете мнемонику команд 80186 в операторах встроенного ассемблера, то должны включить опцию ко- мандной строки -1. Это вызовет вывод в компилятор ассемблера не- обходимых операторов, так что TASM будет правильно понимать мне- - 425,426 - монику команд. Кроме того, если вы используете более ранние версии ассемблера, то эта мнемоника кодов не поддерживается. Другое замечание: если вы используете встроенный ассемблер в подпрограммах с эмуляцией команд с плавающей точкой (опция TCC -f), то операции, помеченные (**), не поддерживаются.


Страницы : 1 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


adfun.ru









Форум раскрутка сайта и интернет-реклама
реклама - рекламное агентство -
Интернет PR агентство чат и форум
волчат знакомства - сайт знакомств
бесплатные компьютерные игры
фото знакомства
новые стеклопакеты -
качественное остекление балконов
портал - пластиковые окна -
закажите окна пвх в Москве

частная стоматология в Москве:
надежная стоматологическая клиника
протезирование зубов и
отбеливание зубов в стоматологии
Музыка - скачать mp3 музыка
каталог партнерские программы
ручной бесплатный обмен ссылками цифровые камеры цифровые фотоаппараты -
цифровые видеокамеры

театры - заказ билетов в театр -
магазин - продажа компьютеров
в Москве форум Испания - жилье -
недвижимость в испании

турфирма - испания туры
Переводы - бюро переводов
Законы - закон о товарных знаках,
Грузовые перевозки. АсМАП. Дальнобой закон о рекламе
Интернет казино
реклама на форуме и контекстная реклама
на Яндексе Баннерная сеть и
интернет каталог сайтов Holiday.Ru
Форумы политика, лучшие анекдоты
знакомства.