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




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


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

                       .
                       .
                       jmp   DoAddition
                       .
                       .
                       .
     DoAddition:       mov   dx,[MemVar]
                       add   ax,dx
                       .
                       .
                       .

вам пришлось бы разделить строку с меткой DoAddition  и  добавить
новый текст. Если же DoAddition находится на отдельной строке, вы
можете просто добавить после этой метки новую строку.

     Метка не может совпадать с любым из используемых  в  выраже-
ниях встроенных символов, включая имена регистров (AX, BX и т.д.)
и операторы, используемые в выражениях (PTR, BYTE, WORD и  т.д.).
В  качестве  меток  нельзя  также  использовать любую из директив
IFxxx или .ERRxxx. Несколько других зарезервированных в Турбо Ас-
семблере идентификаторов могут использоваться только в определен-
ных контекстах. Эти идентификаторы включают в себя NAME,  INCLUDE
и COMMENT. Данные имена могут использоваться, как имена элементов
структур,  но не в качестве общих идентификаторов (более подробно
о структурах рассказывается в Главе 9).

     Лучший подход - это избежать необходимости  использования  в
качестве  меток любого из встроенных имен идентификаторов. Напри-
мер, метки:

      bx      DW  0
      PTR:

были бы неприемлемы, так как BX - это регистр, а PTR - операция в
выражении. Однако метка:

  Old_BX     DW  0

вполне допустима.

     Приведем еще примеры допустимых меток:

       MainLoop
       calc_long_sum
       Error0
       Iterate
       Draw$Dot
       Delay_100_milliseconds

     Метки в коде программы (и содержащиеся на отдельной  строке,
и  после  которых на той же строке следуют директивы или инструк-
ции) должны заканчиваться двоеточием (:). Двоеточие просто завер-
шает  метку  и не является ее частью. Например, в следующем фраг-
менте программы:

          .
          .
          .
 LoopTop:
          mov   al,[si]
          inc   si
          and   al,al
          jz    Done
          jmp   LoopTop
 Done:    ret
          .
          .
          .

метки LoopTop и Done определены с двоеточиями, но  в  ссылках  на
эти метки двоеточия не указываются.

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

     Имена меткам следует назначать так, чтобы они  имели  смысл.
Сравните:

          .
          .
          cmp   al,'a'
          jb    NotALowerCaseLetter   ; не строчная буква
          cmp   al,'z'
          ja    NotALowerCaseLetter
          sub   al,20h                ; преобразовать в верхний
                                      ; регистр (прописную





; букву) NotALowerCaseLetter: . . и следующий фрагмент программы: . . cmp al,'a' jb P1 cmp al,'z' ja P1 sub al,20h ; преобразовать в верхний ; регистр P1: . . Вариант с описательной меткой (особенно для владеющих ан- глийским языком, для русскоязычных программистов, возможно, лучше использовать варианты типа Ne_strochnaja_bukva) гораздо более по- нятен, в то время как второй с первого взгляда, мягко говоря, за- гадочен. Метки могут содержать символы подчеркивания. В зависи- мости от вашего предпочтения можно использовать метки типа not_a_ lower_case_ letter или Not _A_Lower_Case_Letter. Мнемоники инструкций и директивы ----------------------------------------------------------------- Основным полем в строке программы на Ассемблере является поле <инструкция/директива>. Это поле может содержать мнемонику инструкции или директиву (две совершенно различные вещи). Ранее в данной главе вы уже встречали мнемоники инструкций. Они представляют собой удобные для чтений имена инструкций, не- посредственно выполняемых процессором 8086. MOV, ADD, MUL и JMP - все это мнемоники инструкций, соответствующие инструкциям процес- сора 8086 перемещения данных, сложения, умножения и перехода со- ответственно. Турбо Ассемблер ассемблирует каждую мнемонику инструкции не- посредственно в соответствующую инструкцию на машинном языке. Каждый раз, когда вы включаете в программу на языке Ассемблера одну мнемонику инструкции, результатом является одна инструкция в выполняемом коде. В отличие от мнемоник инструкций, директивы совсем не гене- рируют выполняемого кода. Вместо этого они управляют различными аспектами работы Турбо Ассемблера - от типа ассемблируемого кода (процессоры 8086, 80286, 80386 и т.д.) до используемых сегментов и формата создаваемых файлов листингов. Хотя это не единственное отличие, вы можете рассматривать мнемоники инструкций, как гене- рирующие реальную программу на машинном языке процессора 8086, а директивы - как ответственные за обеспечение средств высокого уровня Турбо Ассемблера, которые облегчают программирование на Ассемблере. В данном руководстве мы уделяем большое внимание различным аспектам мнемоник и директив Турбо Ассемблера, которые обсуждают- ся также в Главе 3 "Справочного руководства". Имеется несколько директив, которые необходимы в любой программе на Ассемблере (в особенности это касается директив определения сегментов, которые мы обсудим несколько позднее). Другая директива, которая всегда необходима в программе - это директива END. Директива END ----------------------------------------------------------------- Каждая программа должна содержать директиву END, отмечающую конец исходного кода программы. Все строки, которые следуют за директивой END, Турбо Ассемблером игнорируются. Если вы опустите директиву END, то генерируется ошибка. Вы можете посчитать, что концом программы является конец файла, но это не так: всегда тре- буется указывать директиву END. END является типичной директивой в том смысле, что она не порождает никакого кода. Например: DOSSEG .MODEL SMALL .STACK 200h .DATA ProgramStart: mov ah,4ch int 21h END ProgramStart Это, возможно, простейшая программа на Ассемблере. Она ниче- го не делает, просто немедленно возвращает управление DOS. Обра- тите внимание на использование директивы END для завершения кода, из которого состоит данная программа. Без сомнения вы заметили, что на одной строке с директивой END содержится метка ProgramStart. Кроме завершения программы, директива END может выполнять еще и вторую функцию, указывая, где должно начинаться выполнение при запуске программы. По той или иной причине вы можете не захотеть начать выполнение программы в файле .EXE с первой инструкции. Директива END предусматривает та- кие случаи. Предположим, например, вы запускаете программу, полу- ченную в результате ассемблирования и компоновки следующего кода: DOSSEG


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


adfun.ru









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

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

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

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