Машинный язык и язык ассемблера
Чтобы лучше понять принципы работы компьютера, давайте сравним его с чело-
веком. У компьютера есть органы восприятия информации из внешнего мира —
это клавиатура, мышь, накопители на магнитных дисках (на схеме они расположе-
ны под системными шинами). У компьютера есть органы, «переваривающие» по-
лученную информацию, — это центральный процессор и оперативная память. И на-
конец, у компьютера есть органы речи, выдающие результаты переработки. Это
также некоторые из устройств ввода-вывода, расположенные в нижней части схе-
мы. Современным компьютерам, конечно, далеко до человека. Их
сравнить
с
взаимодействующими с внешним миром на уровне большого, но
ограниченного набора безусловных рефлексов. Этот набор рефлексов образует
систему машинных команд. На каком бы высоком уровне вы ни общались с компь-
ютером, в конечном итоге все сводится к скучной и однообразной последователь-
Машинный язык и язык ассемблера
Центральный
процессор
Буфер команд
(Pentium
Устройство
микропрограммного Устройство Устройство Блок
управления
выборки/ диспетчеризации/ удаления и
декодирования исполнения восстановления
микрокоманд
' Выборка Загрузка
Сохранение
Регистры Кэш команд Кэш данных
микропроцессора
Устройство шинного интерфейса
Шина кэша L2 (64 бита)
Кэш второго
i Шина адреса
Шина
• Шина управления
Т Системная шина
J Системный
память
Шина адреса/данных
управления i
Устройства ввода/вывода
Рис.
Структурная схема персонального компьютера
ности машинных команд. Каждая машинная команда является своего рода раздра-
жителем для возбуждения того или иного безусловного рефлекса. Реакция на этот
раздражитель всегда однозначна и «зашита» в блоке микропрограммного управ-
ления в виде микропрограммы. Эта микропрограмма и реализует действия по вы-
полнению машинной команды, но уже на уровне сигналов, подаваемых на те или
иные логические схемы компьютера, тем самым управляя различными подсисте-
мами компьютера. В этом состоит так называемый принцип микропрограммного
управления. Продолжая аналогию с человеком, отметим: для того чтобы компью-
тер правильно «питался», придумано множество операционных систем, компиля-
торов сотен языков программирования и т. д. Но все они являются, по
лишь
блюдом, на котором по определенным правилам доставляется пища (программы)
желудку (компьютеру). Только (вот досада!) желудок компьютера любит диети-
ческую, однообразную пищу — подавай ему информацию структурированную,
в виде строго
последовательностей нулей и единиц, комбинации
которых и составляют
язык.
20 Глава
Организация современного компьютера
Таким образом, внешне являясь
компьютер понимает только один
язык — язык машинных команд. Конечно, для общения и работы с компьютером
необязательно знать этот язык, но практически любой профессиональный програм-
мист рано или поздно сталкивается с необходимостью его изучения. К счастью,
при этом человеку не нужно пытаться постичь значение различных комбинаций
двоичных чисел, так как еще в 50-е гг. программисты стали использовать для про-
граммирования символический аналог машинного языка, который назвали язы-
ком ассемблера. Этот язык точно отражает все особенности машинного языка.
Именно поэтому, в отличие от языков высокого уровня, язык ассемблера для каж-
дого типа компьютеров свой. Более того, бессмысленны разговоры о том, что ас-
семблер как язык программирования устарел и знать его необязательно. АССЕМ-
БЛЕР ОБЪЕКТИВЕН, и подобные разговоры в определенной ситуации могут
выглядеть довольно глупо (особенно для особо «продвинутых» программистов).
На первый взгляд ассемблер кажется очень сложным, но это не так. Для освое-
ния этого языка совершенно не нужно выучивать наизусть все его команды и ди-
рективы. Более того, в большинстве случаев для практической работы достаточно
понимания основных концепций и идей, лежащих в основе языка ассемблера. Де-
тали реализации той или иной команды всегда можно найти в справочнике ко-
манд, гораздо важнее понимать, какое место данная команда занимает в системе
команд, в идеале хорошо было бы знать и цели, которые преследовали разработчи-
ки процессора, вводя данную команду в систему машинных команд. Одна из целей
данного учебника — сформировать у читателя именно такое понимание языка ас-
семблера.
Из всего сказанного напрашивается вывод о том, что самую эффективную про-
грамму можно написать только на ассемблере (при условии, что ее пишет квали-
фицированный программист), так как этот язык является «родным» для компью-
тера. Здесь
одно маленькое
это очень трудоемкий и требующий большого
внимания и практического опыта процесс. Поэтому реально на ассемблере пишут
в основном программы, которые должны обеспечить эффективную работу с аппа-
ратной частью компьютера. Иногда на ассемблере пишутся критичные ко времени
выполнения или расходованию памяти фрагменты программы. Впоследствии они
оформляются в виде подпрограмм и совмещаются с кодом на языке высокого
уровня.
В данном учебнике будут рассмотрены два фундаментальных для понимания
логики функционирования компьютера вопроса: первый — архитектурные особен-
ности процессора и основы его взаимоотношений с другими компонентами компь-
ютера; второй — место и роль языка ассемблера во всем этом процессе. За основу
в нашем рассмотрении будут взяты процессоры фирмы Intel. Необходимо отме-
тить, что эти процессоры не являются единственными процессорами на рынке аппа-
ратного обеспечения (hardware), хотя и занимают довольно большой сегмент
этого рынка. Исторически сложилось так, что архитектура процессоров Intel
полностью или частично поддерживается процессорами других фирм. Поэтому про-
цессорам фирмы Intel приходится делить свой сегмент рынка с процессорами фирм
AMD, VIA, Transmeta. Так как в своем сегменте рынка (Intel-совместимых про-
цессоров) процессоры фирмы Intel являются стандартом де-факто, то в данном
История процессоров Intel 21
учебнике речь будет идти исключительно о них, однако все приводимые примеры
программ будут работать и на Intel-совместимых процессорах процессорах других
фирм.
Do'stlaringiz bilan baham: |