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




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

сором 8086. Если регистр BX содержит значение 25, а  SI  содержит
52,  то  при  выполнении инструкции MOV CL записывается по адресу
памяти 25 + 52 + 111 = 188. Ключевой момент состоит  в  том,  что
базовый регистр, индексный регистр и смещение складываются вместе
процессором 8086 при выполнении инструкции. Таким образом,  Турбо
Ассемблер  складывает  константы во время ассемблирования, а про-
цессор 8086 складывает содержимое базового  регистра,  индексного
регистра  и смещения во время действительного выполнения инструк-
ции.

     Как вы можете заметить, ни в одном из примеров мы не исполь-
зовали  регистр  BP. Это связано с тем, что поведение регистра BP
несколько отличается от регистра BX. Вспомните, что  в  то  время
как регистр BX используется, как смещение внутри сегмента данных,
регистр BP используется, как смещение в сегменте стека. Это озна-
чает, что регистр BP не может обычно использоваться для адресации
к строке CharString, которая находится в сегменте данных.

     Пояснение использования регистра BP для адресации к сегменту
стека приводится в Главе 4. В данный момент достаточно знать, что
регистр BP можно использовать так же, как мы использовали в  при-
мерах  регистр  BX, только адресуемые данные должны в этом случае
находиться в стеке.

     (На самом деле регистр BP можно использовать и для адресации
к  сегменту данных, а BX, SI и DI - для адресации к сегменту сте-
ка, дополнительному сегменту или сегменту кода. Для этого исполь-
зуются  префиксы переопределения сегментов (segment override pre-
fixes). О некоторых из них мы расскажем  в  Главе  10.  Однако  в
большинстве случаев они вам не понадобятся, поэтому пока мы прос-
то забудем об их существовании.)

     Наконец, квадратные скобки,  в  которые  заключаются  непос-
редственные адреса, являются необязательными. То есть инструкции:

       mov   al,[MemVar]
и
       mov   al,MemVar

выполняют одни и те же действия. Тем не менее мы настоятельно ре-
комендуем вам заключать все ссылки на память в квадратные скобки.
Это поможет избежать путаницы и сделает вашу программу более  яс-
ной и понятной. Несомненно, вы столкнетесь с программами, в кото-
рых квадратные скобки отсутствуют, так как некоторые все же  счи-
тают, что в таком виде программа воспринимается лучше. Это, в об-
щем, дело вкуса, но если вы выберете  стиль  адресации  по  одной
ячейке  памяти и будете содержательно его использовать, вам будет
легче писать программы.

     Вы можете использовать также такую форму адресации к памяти:

        mov   al,CharString[bx]

или даже

        mov   al,CharString[bx][si]+1

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

        mov   al,[charString+bx+si+1]

     Здесь снова нужно выбрать ту форму записи, которая вам боль-
ше нравится, и придерживаться ее.

     Квадратные скобки, в которые заключаются регистры, указываю-
щие  на  ячейки  памяти, являются обязательными. Без этих скобок,
BX, например,  интерпретируется, как операнд, а не как ссылка на
операнд.



                              Комментарии
-----------------------------------------------------------------

     Расскажем наконец, что представляет собой поле  комментария.
Комментарии  не выполняют никаких реальных действий в том смысле,
что они не влияют на код выполняемого Турбо Ассемблером файла. Но
это не означает, что они не являются существенными.

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

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






Ассемблер же не имеет встроенных управляющих структур, жест- кой принудительной типизации данных, включающих переменные ариф- метических выражений и присущего ему механизма передачи парамет- ров. Короче говоря, код Ассемблера - это не тот хорошо структури- рованный и легко обслуживаемый текст, к которым вы, возможно, встречались. Поэтому, чтобы поднять Ассемблер до уровня естест- венного кодирования, вы должны широко пользоваться комментариями, а также подпрограммами и макрокомандами. Имеется много способов включения в код Ассемблера коммента- риев. Один из наиболее полезных подходов состоит в том, чтобы слева от каждой инструкции помещать комментарий, в котором содер- жится ее краткое пояснение. Например, инструкция: mov [bx],al ; сохранить измененный символ выглядит более понятной, чем инструкция mov [bx],al Необязательно комментировать каждую строку. Например, ком- ментарии типа: . . . mov ah,1 ; функция DOS ввода с клавиатуры int 21h ; вызвать DOS, чтобы получить ; следующую нажатую клавишу . . . не служат никакой полезной цели. Это, однако, не означает, что комментировать такие строки не следует. Просто делайте коммента- рии более короткими: . . . mov ah,1 int 21h ; получить следующую клавишу . . . Нужно помнить о том, что целью комментариев является не объ- яснение каждого элемента вашей программы, а облегчение анализа ее текста и понимания (вами или кем-либо другим). Другим хорошим методом комментирования является использова- ния для пояснения блоков кода строк-комментариев. Такие коммента- рии могут описывать работу программы на более высоком уровне, чем комментарии отдельных строк. Рассмотрим следующий пример: . . . ; ; Сгенерировать для буфера передачи байт контрольной суммы ; mov bx,OFFSET TransferBuffer mov cx,TRANSFER_BUFFER_LENGTH sub al,al ; очистить аккумулятор контрольной суммы CheckSum: add al,[bx] ; добавить в него текущее значение байта inc bx ; указать на следующий байт . . . Обратите внимание, что мы не включаем комментарий в каждую строку. Из комментариев данного блока программы видно, что в ре- гистр BX загружается адрес буфера передачи, а в CX - длина буфе- ра. В комментарии к этому блоку из семи строк кратко суммируется его работа, поэтому комментарии каждой строки становятся менее важными. Если кто-нибудь будет просматривать программу, то он больше полезного извлечет из комментариев к блокам, чем из ком- ментариев к строкам. Другой метод комментирования еще более высокого уровня сос- тоит во включении перед каждой подпрограммой описательного заго- ловка-комментария ("шапки" программы). Такой заголовок может со- держать описание подпрограммы, ее входные и выходные значения и различные замечания по ее работе. Например: ; ; Функция, возвращающая контрольную сумму (размером в ; байт) буфера данных ; ; Входные данные: ; DS:BX - указатель на начало буфера ; CX - длина буфера ; ; Выходные данные: ; AL - контрольная сумма буфера ; ; Используемые регистры (содержимое не сохраняется): ; BX, CX ; ; Примечание: буфер не должен превышать 64К и не должен ; пересекать границу сегментов. ;


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