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




adfun.ru
Rambler's Top100 Rambler's Top100
    НА ГЛАВНУЮ
    РЕФЕРАТЫ
    ТОСТЫ
    ТЕСТЫ
    АВТО
    ДЛЯ СТУДЕНТА
    КНИГИ
    КОНТАКТ
 
Турбо Ассемблер 3.0/tasm/#1-2
Автор ""
Размер 469003 Байт
Страница 16 из 51
СКАЧАТЬ КНИГУ ЦЕЛИКОМ

                  END     start

          Три сегмента  dseg1,  dseg2  и  dseg3 группируются под одним
     именем DGROUP.  В результате все переменные  отдельных  сегментов
     хранятся в памяти вместе. В исходном тексте программы в каждом из
     отдельных сегментов описывается байтовая переменная (метки v1, v2
     и v3).

          В коде данной программы MASM в регистры AX, BX и CX загружа-
     ются смещения адресов этих переменных. В соответствии с предшест-
     вующей директивой ASSUME и из-за того, что сегменты данных сгруп-
     пированы  вместе,  вы  можете подумать,  что MASM будет вычислять
     смещения переменных относительно всей группы,  в которой перемен-
     ные очевидно хранятся в памяти.

          Но произойдет совсем не это!  Вопреки вашим намерениям  MASM
     вычисляет  смещения  переменных  относительно отдельных сегментов
     dseg1,  dseg2 и dseg3.  Он делает это несмотря на то, что все три
     сегмента данных сгруппированы в памяти в один сегмент данных, ад-
     ресуемый через регистр DS. Бессмысленно определять смещения пере-
     менных относительно отдельных  сегментов в тексте программы, ког-
     да  эти  сегменты  скомбинированы  в  памяти  в   один   сегмент.
     Единственный  способ  ссылки на такие переменные состоит в ссылке
     на их смещения относительно всей группы.

          Чтобы избавиться в MASM от этой  проблемы,  вам  потребуется
     наряду с ключевым словом OFFSET задавать имя группы:

             mov     ax,OFFSET DGROUP:v1
             mov     bx,OFFSET DGROUP:v2
             mov     cx,OFFSET DGROUP:v3


     Турбо Ассемблер 3.0/tasm/#1-2                              = 63 =

          Хотя теперь  это ассемблируется корректно и загружаются сме-
     щения переменных v1, v2 и v3 относительно DGROUP (где собраны от-
     дельные  сегменты),  вы  можете  легко забыть задать квалификатор
     DGROUP.  Если вы сделаете эту ошибку, значения смещений не позво-
     лят корректно определить переменные в памяти,  и вы не получите в
     MASM никакого указания,  что что-то произошло не так. Режим Ideal
     позволяет избежать таких неприятностей:

                  IDEAL
          SEGMENT dseg1 para public 'data'
          v1      db      0
          ENDS

          SEGMENT dseg2 para public 'data'
          v2      db      0
          ENDS

          SEGMENT dseg3 para public 'data'
          v3      db      0
          ENDS

          GROUP   DGROUP   dseg1, dseg2, dseg3
          SEGMENT cseg para public 'code'

                  ASSUME  cs:cseg,ds:DGROUP

          start:
                  mov     ax,OFFSET v1
                  mov     bx,OFFSET v2
                  mov     cx,OFFSET v3
          ENDS
                  END     start

          Смещения переменных v1,  v2 и v3 корректно вычисляются отно-
     сительно  группы,  в которой собраны отдельные сегменты,  которым
     принадлежат переменные.  В  режиме  Ideal квалификатор DGROUP для
     ссылки на переменные в сегментах группы не  требуется.  В  режиме
     MASM этот квалификатор также не является необходимым, но, что ху-
     же всего,  не выдается никаких предупреждений,  если вы забыли  в
     конкретной ссылке определить имя группы.

                        Комментарии в программах
     ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

          Комментирование исходного кода позволяет вам (или  тому, кто
     будет эти программы в последующем поддерживать) быстро разбирать-
     ся в его работе.  Использование  комментариев  считается  хорошей
     практикой программирования на любом языке. Они позволяют  описать
     семантику (смысл), а не только синтаксис кода. Мы рекомендуем вам
     широко использовать  комментарии в исходном коде Ассемблера,  и в
     данном разделе описывается, как это можно сделать.


     Турбо Ассемблер 3.0/tasm/#1-2                              = 64 =

                       Комментарии в конце строки
     ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
          Комментировать код  Ассемблера  можно несколькими способами.
     Один из методов состоит в добавлении комментария в  конец строки,
     используя точку с запятой, например:

          mov [bx],a1            ; записать измененный символ





Другой способ комментирования исходного кода заключается в использовании в качестве символа комментария символа продолжения строки (\). (См. ниже раздел "Продолжение строки"). Директива COMMENT ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Директива COMMENT позволяет вам комментировать блок исходно- го кода. COMMENT позволяет игнорировать весь текст, начиная от первого символа-ограничителя и до строки, содержащей следующее вхождение ограничителя. В следующем примере в качестве ограничи- теля используется символ *: COMMENT * здесь следуют замечания * Примечание: Директива COMMENT работает только в режиме MASM. Продолжение строки ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Для тех строк, длина которых превышает 80 символов, в Турбо Ассемблере предусмотрен символ продолжения \. Поскольку Турбо Ас- семблер игнорирует любой символ, следующий за \ на данной строке, используйте этот символ в конце строки. При использовании символа \ максимальная длина строки сос- тавляет 1024 символа. Однако таблицы, записи и перечисления могут содержать определения, превышающие 1024 символа. В качестве аль- тернативы, при которой не накладывается ограничение в 1024 сим- вола, можно использовать синтаксис с множественными определения- ми. Приведем пример такого синтаксиса (для определения enum): foo enum ( ;Множественная версия f1 f2 f3 f4 f5 f6 f7 f8 ) Турбо Ассемблер 3.0/tasm/#1-2 = 65 = Можно дать более компактную версию этого определения: foo enum f1,f2( ;Компактная версия f3,f4 f5,f6 f7,f8) При использовании множественных определений нужно соблюдать следующие правила: - левая скобка, которая начинает определение, должна быть последней лексемой в начальной строке (однако, это не оз- начает, что она должна предшествовать первому элементу списка); - в множественное определение нельзя включать такие директи- вы, как IF или INCLUDE. В режиме MASM продолжение строки можно использовать при вы- боре VERSION M51,M520. При это строки и другие лексемы можно раз- мещать на нескольких строках, используя в качестве последнего символа строки символ "\". Например: VERSION M51,M520 DB 'Hello out there \ you guys' В любом месте строки вы можете использовать стандартный ре- жим продолжения строки Турбо Ассемблера (он всегда доступен). Он действует также, как комментарий, например: ARG a1:word, \ первый аргумент a2:word, \ второй аргумент a3:word, \ третий аргумент Использование включаемых файлов ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД Включаемые файлы позволяют вам использовать один и тот же блок кода в разных местах программы, включать этот блок в нес- кольких исходных модулях или уменьшить объем программы без необ- ходимости создания нескольких компонуемых модулей. Использование директивы INCLUDE указывает Турбо Ассемблеру, что нужно найти за- данный файл на диске и ассемблировать его, как если бы он был частью исходной программы. Примечание: Допускается вложенность директив INCLUDE на любую глубину. Синтаксис режима Ideal: INCLUDE "имя_файла" Турбо Ассемблер 3.0/tasm/#1-2 = 66 =


Страницы : 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
Форумы политика, лучшие анекдоты
знакомства.