Assembler для начинающих

         

Об этой книге



Об этой книге


    Данная книга является введением в  персональный компьютер IBM и его
    язык ассемблера. Хотя основное  внимание здесь уделено программиро-
    ванию на  языке ассемблера, этот  текст описыват также  программные
    аспекты  основных особенностей  аппаратного обеспечения  машины. Вы
    узнаете  как  работают  устройства      ввода-вывода  и  как  программа
    заставляет      их  работать  правильно.   Вы  также  научитесь  писать
    собственные программы на языке  ассемблера с использованием IBM PC.
    После того как вы напишете эти программы, эта книга покажет вам как
    связать  их  с  программами   высокого  уровня  или  встроить  вашу
    программу в систему.
 
       Программирование на языке ассемблера дает исключительный опыт,
     но  часто      вызывает затруднения. В этой книге используются примеры
     для демонстрации действительно работающих      программ.  Эти      примеры
     помогут вам начать. Однако единственный способ научиться чему-либо
     в      программировании  - это сделать программу самому. Вы должны со-
     вершать свои собственные ошибки чтобы чему-либо  научиться.  Желаю
     достигнуть успехов и получить удовольствие.






Персональный компьютер фирмы IBM (IBM PC)



Персональный компьютер фирмы IBM (IBM PC)


    Почему в этом тексте IBM PC берется в качестве базовой для изучения
    программирования  на  языке  ассемлера?  Для  этого  есть несколько
    причин. Во-первых, IBM PC - новая и мощная машина. Как персональный
    компьютер  она  обладает  расширенными  возможностями выходящими за
    рамки  возможностей  более ранних      ПК.  Как  вы  подробнее увидете
    дальше, PC использует микропроцессор Intel 8088. Этот процессор мо-
    жет выполнять 16-битовую арифметику и  адресацию над более чем мил-
    лионом  символов  памяти.  Эти  возможности  ставят  его  ближе  по
    мощности к большим ЭВМ, чем к ранним персональным компьютерам.
      Во-вторых,  IBM  PC  располагает  всеми  средствами  разработки
    программ,  которые понадобятся  вам для  программирования на  языке
    ассемблера.  Кроме      ассемблера,   фирма  IBM  поставляет  текстовый
    редактор, редактор      связей и дисковую опеационную  систему для того
    чтобы объединить их все вместе.  Имеется даже отладчик чтобы помочь
    вам расчленить программу и затем собрать в правильном порядке.
       Наконец,  IBM   PC  -      хорошая  система   для      изучения  языка
    ассемблера из-за ее доступности.  Это недорогая машина, которая тем
    не менее  дает все возможности, которые  требуются для программиро-
    вания   на    языке      ассемблера.  Более   того,  как  "персональный"
    компьютер, машина  принадлежит вам по крайней  мере на время испол-
    нения программы.  Это означает, что вы  можете попытаться выполнить
    то,  что нельзя  делать на      более крупной  машине, общей  с другими
    пользователями.  Вы  можете  овладеть  оборудованием ввода-вывода и
    запрограммировать  их для  выполнения интересных  вещей. Вы  можете
    делать  что  захотите  с  любой  частью  системы  -  даже  если это
    "вырубает"  систему.  Поскольку  это  персональная  машина,  то при
    возникновении проблемы вы просто  выключаете машину и запускаете ее
    снова. Единственный человек, которому вы при этом можете помешать -
    это вы сами. Как персональная  машина, IBM PC является великолепным
    инструментом для разработки программ.




Программирование на языке Ассемблера



Программирование на языке Ассемблера


     Почему  вас  могло  бы  заинтересовать  программирование  на языке
    ассемблера?  Cегодня  повсюду  используются  такие языки  высокого
    уровня как Бэйсик, Фортран и Паскаль  . Возможно, вы уже знакомы по
    крайней  мере с  одним языком  высокого уровня.  Если вы  постоянно
    пльзуютесь      персональным   компьютером  IBM,  то   вы  знаете,  что
    интерпритатор  Бэйсика является  частью системы.  Зачем же возиться
    еще  с одним  языком программирования,  тем более  с таким, который
    сулит определенные      трудности? Очевидно, даже  располагая современ-
    ными могучими языками, вы все еще нуждаетесь в ассемблере из-за его
    эффективности и точности.
       Ассемблерные  программы  могут  быть  очень  эффективными.  Из
    программистов,  с равными  навыками и  способностями, работающий на
    языке  ассемблера  создаст      программу  более  компактную  и быстро-
    действущую, чем  такая же программа,  написанная на языке  высокого
    уровня.  Это  так  практически   для  всех      небольших  или      средних
    программ. К  сожалению, по мере возрастания  размеров, программы на
    языке  ассемблера теряют  часть своих  преимуществ. Это  происходит
    из-за необходимого в ассемблерной  программе внимания к деалям. Как
    вы      увидите, язык  ассемблера требует  от вас  планирования каждого
    действия компьютера.  В небольших программах  это позволяет оптими-
    зировать работу  программы с аппаратными  средствами. В больших  же
    программах      огромное количество  деталей может  помешать вам эффек-
    тивно работать над самой программой, даже если отдельные компоненты
    программы окажутся очень неплохими. Безусловно, программирование на
    языке ассемблера отвечает потребностям не каждой программы.
       Программы на языке ассемблера очень точны. Поскольку этот язык
    позволяет программисту непосредственно  работать со всем аппаратным
    обеспечением, ассемблерная программа может делать то, что недоступ-
    но никакой      другой программе .  Несомненно, что в  программировании
    устройств  ввода-вывода,  где  требуется  контроль      над  отдельными
    разрядами      регистров   устроиства,   программирование   на   языке
    ассемблера - единственный подходящий выбор.
       Ясно,      что  эффективность  и  точность  языка      ассемблера дают
    определенные  преимущества.  Но  его  детализированность  создает и
    некоторые  проблемы. Когда же стоит  избирать для программирования
    язык ассемблера?
       Конечно   вы      должны      пользоваться      программами   на  языке
    ассемблера, когда нет другого способа написать программу. Например,
    программисты фирмы IBM писали  с использованием процедур ассемблера
    все программы управления устройствами  ввода-вывода для IBM PC. Для
    управления  устройствами  ввода-вывода   и  системой   прерываний,
    потребовалась  та  точность  языка ассемблера  которую  не  может
    обеспечить      ни один  другой язык  программирования. Аналогично,  на
    языке  ассемблера  в  фирме  IBM  писались      процедуры  диагностики,
    которые должны проверять каждую деталь аппаратуры.
      Язык ассемблера необходим также и в тех случаях, когда главными
    являются  рабочие  характеристики  програмы.  Это  может быть время
    исполнения или конечный размер программы. Библиотека математических
    процедур  Фортрана -  пример программы,  требующей хороших характе-
    ристик  как  в  отношении  времени,  так  и размера. Математические
    процедуры являтся  частью любой программы на  Фортране, поэтому они
    должны занимать  как можно меньше места.  Кроме того, эти процедуры
    управляют всеми математическими функциями в фортрановской программе
    и часто используются. Следовательно, они должны исполняться быстро.
      Какая программа  не подходит для языка      ассемблера? Конечно, вы
    можете написать на нем любую программу, однако с большой программой
    лучше  работать  в      языке  высокого  уровня,  таком  как Бэйсик или
    Паскаль. Эти языки позволяют вам сосредоточиться на своей проблеме.
    Вам   не  приходится   непосредственно  иметь   дело  с  тонкостями
    аппаратного  оборудования  и   процессора.      Языки  высокого  уровня
    позволяют вам отступить назад и за деревьями увидеть лес.
       Очевидно далее, что вы  нуждаетесь в соединении программ языка
    ассемблера с  программами языков высокого уровня.  Эдесь мы ограни-
    чимся  программированием на  языке      ассемблера  для тех  задач, для
    которых  он хорошо      подходит, таких  как управление вводом-выводом.
    Заключительная же  глава книги посвящена  прямо проблеме соединения
    программ на языке ассемблера с другми языками программирования. Эти
    методы  предоставляют вам  все лучшее,  что есть  в обоих мирах. Вы
    можете,  когда  необходимы точность и эффективность,  использовать
    процедуры  на языке  ассемблера -  и процедуры  высокого уровня для
    программы в целом. Все что вы для этого должны сделать - сцепить их
    вместе.
       И  последняя причина  для изучения  программирования на  языке
    ассемблера.  Только   через  написание  программ   на  этом  уровне
    детализации вы  можете понять как  работает машина на  самом нижнем
    уровне.  Если вы  хотите узнать  о компьютере  все, вы  должны быть
    знакомы с его языком ассемблера. Единственный способ добиться этого
    - писать программы на этом языке. Простое чтение этой книги дела не
    сдвинет.