<<
>>

Машинный язык и язык ассемблера

Чтобы лучше понять принципы работы компьютера, давайте сравним его с чело- веком. У компьютера есть органы восприятия информации из внешнего мира — это клавиатура, мышь, накопители на магнитных дисках (на схеме они расположе- ны под системными шинами).
У компьютера есть органы, «переваривающие» по- лученную информацию, — это центральный процессор и оперативная память. И на- конец, у компьютера есть органы речи, выдающие результаты переработки. Это также некоторые из устройств ввода-вывода, расположенные в нижней части схе- мы. Современным компьютерам, конечно, далеко до человека. Ихможно сравнить с существами,' взаимодействующими с внешним миром на уровне большого, но ограниченного набора безусловных рефлексов. Этот набор рефлексов образует систему машинных команд. На каком бы высоком уровне вы ни общались с компь- ютером, в конечном итоге все сводится к скучной и однообразной последователь-
Рис.
1.2. Структурная схема персонального компьютера

ности машинных команд. Каждая машинная команда является своего рода раздра- жителем для возбуждения того или иного безусловного рефлекса. Реакция на этот раздражитель всегда однозначна и «зашита» в блоке микропрограммного управ- ления в виде микропрограммы. Эта микропрограмма и реализует действия по вы- полнению машинной команды, но уже на уровне сигналов, подаваемых на те или иные логические схемы компьютера, тем самым управляя различными подсисте- мами компьютера. В этом состоит так называемый принцип микропрограммного управления. Продолжая аналогию с человеком, отметим: для того чтобы компью- тер правильно «питался», придумано множество операционных систем, компиля- торов сотен языков программирования и т.

д. Но все они являются, по сути, лишь блюдом, на котором по определенным правилам доставляется пища (программы) желудку (компьютеру). Только (вот досада!) желудок компьютера любит диети- ческую, однообразную пищу — подавай ему информацию структурированную, в виде строго организованных последовательностей нулей и единиц, комбинации которых и составляют машинный язык. Таким образом, внешне являясь полиглотом, компьютер понимает только один язык — язык машинных команд. Конечно, для общения и работы с компьютером необязательно знать этот язык, но практически любой профессиональный програм- мист рано или поздно сталкивается с необходимостью его изучения. К счастью, при этом человеку не нужно пытаться постичь значение различных комбинаций двоичных чисел, так как еще в 50-е гг. программисты стали использовать для про- граммирования символический аналог машинного языка, который назвали язы- ком ассемблера. Этот язык точно отражает все особенности машинного языка. Именно поэтому, в отличие от языков высокого уровня, язык ассемблера для каж- дого типа компьютеров свой. Более того, бессмысленны разговоры о том, что ас- семблер как язык программирования устарел и знать его необязательно. АССЕМ- БЛЕР ОБЪЕКТИВЕН, и подобные разговоры в определенной ситуации могут выглядеть довольно глупо (особенно для особо «продвинутых» программистов). На первый взгляд ассемблер кажется очень сложным, но это не так. Для освое- ния этого языка совершенно не нужно выучивать наизусть все его команды и ди- рективы. Более того, в большинстве случаев для практической работы достаточно понимания основных концепций и идей, лежащих в основе языка ассемблера. Де- тали реализации той или иной команды всегда можно найти в справочнике ко- манд, гораздо важнее понимать, какое место данная команда занимает в системе команд, в идеале хорошо было бы знать и цели, которые преследовали разработчи- ки процессора, вводя данную команду в систему машинных команд. Одна из целей данного учебника — сформировать у читателя именно такое понимание языка ас- семблера.
Из всего сказанного напрашивается вывод о том, что самую эффективную про- грамму можно написать только на ассемблере (при условии, что ее пишет квали- фицированный программист), так как этот язык является «родным» для компью- тера. Здесь есть одно маленькое «но»: это очень трудоемкий и требующий большого внимания и практического опыта процесс. Поэтому реально на ассемблере пишут в основном программы, которые должны обеспечить эффективную работу с аппа- ратной частью компьютера. Иногда на ассемблере пишутся критичные ко времени выполнения или расходованию памяти фрагменты программы. Впоследствии они оформляются в виде подпрограмм и совмещаются с кодом на языке высокого уровня. , В данном учебнике будут рассмотрены два фундаментальных для понимания логики функционирования компьютера вопроса: первый — архитектурные особен- ности процессора и основы его взаимоотношений с другими компонентами компь- ютера; второй — место и роль языка ассемблера во всем этом процессе. За основу в нашем рассмотрении будут взяты процессоры фирмы Intel. Необходимо отме- тить, что эти процессоры не являются единственными процессорами на рынке аппа- ратного обеспечения (hardware), хотя и занимают довольно большой сегмент этого рынка. Исторически сложилось так, что архитектура процессоров Intel полностью или частично поддерживается процессорами других фирм. Поэтому про- цессорам фирмы Intel приходится делить свой сегмент рынка с процессорами фирм AMD, VIA, Transmeta. Так как в своем сегменте рынка (Intel-совместимых про- цессоров) процессоры фирмы Intel являются стандартом де-факто, то в данном учебнике речь будет идти исключительно о них, однако все приводимые примеры программ будут работать и на Intel-совместимых процессорах процессорах других фирм.
<< | >>
Источник: В. И. Юров. Assembler. Учебник для вузов. 2-е изд. 2003

Еще по теме Машинный язык и язык ассемблера:

  1. ЯЗЫК
  2. Язык
  3. Русский язык
  4. ЯЗЫК (ПРОБЛЕМЫ)
  5. § 3. Государственный язык
  6. г. Штампы (иносказательный язык).
  7. Язык и жизнь
  8. Русский язык
  9. Язык
  10. Язык целого