assembler. Учебник для вузов_Юров В.И_2003 -637с (862834), страница 3
Текст из файла (страница 3)
Если хорошо поискать отверткой подходящий источник, то, в отличие от системного блока, можно довольно быстро получить разряд в несколько киловольт.18Глава 1. Организация современного компьютераСистемный блокпМониторПринтерСетьИБПКлавиатураРис. 1.1. Компьютер и периферийные устройстваРассмотрим структурную схему типичного современного персонального компьютера. Она не претендует на безусловную точность и имеет целью лишь показатьназначение, взаимосвязь и типовой состав его элементов.На рис. 1.2 показана функциональная схема системного блока компьютера набазе процессоров семейства Intel. На схеме представлены: центральный процессор, оперативная память, внешние устройства. Все компоненты соединены междусобой через системную шину.
Системная шина имеет дополнительную шину —шину расширения. В компьютерах на базе Pentium в качестве такой шины используется шина PCI (Peripheral Component Interface), к которой подсоединяются внешние устройства, а также шины более ранних стандартов, например ISA (IndustryStandard Architecture).На рисунке показана самая общая схема сердца компьютера — процессора. Основу процессора составляют блок микропрограммного управления, исполнительное устройство, обозначенное как «конвейер», и регистры.
Остальные компонентыпроцессора выполняют вспомогательные функции. Более подробный вариантэтой схемы мы рассмотрим в следующей главе.Машинный язык и язык ассемблераЧтобы лучше понять принципы работы компьютера, давайте сравним его с человеком. У компьютера есть органы восприятия информации из внешнего мира —это клавиатура, мышь, накопители на магнитных дисках (на схеме они расположены под системными шинами). У компьютера есть органы, «переваривающие» полученную информацию, — это центральный процессор и оперативная память.
И наконец, у компьютера есть органы речи, выдающие результаты переработки. Этотакже некоторые из устройств ввода-вывода, расположенные в нижней части схемы. Современным компьютерам, конечно, далеко до человека. Их можно сравнитьс существами,' взаимодействующими с внешним миром на уровне большого, ноограниченного набора безусловных рефлексов. Этот набор рефлексов образуетсистему машинных команд.
На каком бы высоком уровне вы ни общались с компьютером, в конечном итоге все сводится к скучной и однообразной последователь-Машинный язык и язык ассемблера1ЦентральныйКонвпроцессорг(Pentium Pro/11/lll)УстройствомикропрограммногоУстройствоуправления4—г>выборки/декодированияБ л о к |микрокомандWБуфер командУстройстводиспетчеризации/исполнения' ВыборкаРегистрымикропроцессора19Блокудаления ивосстановленияЗагрузкаКэш командL1( ),, СохранениеКэш данных(L1)Устройство шинного интерфейсаШина кэша L2 (64 бита)jКэш второгоуровня(L2)iШина адреса| ,, Шина данных•Шина управления1Оперативнаяпамятьч1ТJ Системныйг КОНТр0ллерI_Системная шинаL11ГШинаРС!Шина адреса/данных^ТПйна управленияi:•^•Устройства ввода/выводаРис.
1.2. Структурная схема персонального компьютераности машинных команд. Каждая машинная команда является своего рода раздражителем для возбуждения того или иного безусловного рефлекса. Реакция на этотраздражитель всегда однозначна и «зашита» в блоке микропрограммного управления в виде микропрограммы. Эта микропрограмма и реализует действия по выполнению машинной команды, но уже на уровне сигналов, подаваемых на те илииные логические схемы компьютера, тем самым управляя различными подсистемами компьютера. В этом состоит так называемый принцип микропрограммногоуправления.
Продолжая аналогию с человеком, отметим: для того чтобы компьютер правильно «питался», придумано множество операционных систем, компиляторов сотен языков программирования и т. д. Но все они являются, по сути, лишьблюдом, на котором по определенным правилам доставляется пища (программы)желудку (компьютеру). Только (вот досада!) желудок компьютера любит диетическую, однообразную пищу — подавай ему информацию структурированную,в виде строго организованных последовательностей нулей и единиц, комбинациикоторых и составляют машинный язык.20Глава 1.
Организация современного компьютераТаким образом, внешне являясь полиглотом, компьютер понимает только одинязык — язык машинных команд. Конечно, для общения и работы с компьютеромнеобязательно знать этот язык, но практически любой профессиональный программист рано или поздно сталкивается с необходимостью его изучения. К счастью,при этом человеку не нужно пытаться постичь значение различных комбинацийдвоичных чисел, так как еще в 50-е гг. программисты стали использовать для программирования символический аналог машинного языка, который назвали языком ассемблера. Этот язык точно отражает все особенности машинного языка.Именно поэтому, в отличие от языков высокого уровня, язык ассемблера для каждого типа компьютеров свой.
Более того, бессмысленны разговоры о том, что ассемблер как язык программирования устарел и знать его необязательно. АССЕМБЛЕР ОБЪЕКТИВЕН, и подобные разговоры в определенной ситуации могутвыглядеть довольно глупо (особенно для особо «продвинутых» программистов).На первый взгляд ассемблер кажется очень сложным, но это не так. Для освоения этого языка совершенно не нужно выучивать наизусть все его команды и директивы. Более того, в большинстве случаев для практической работы достаточнопонимания основных концепций и идей, лежащих в основе языка ассемблера.
Детали реализации той или иной команды всегда можно найти в справочнике команд, гораздо важнее понимать, какое место данная команда занимает в системекоманд, в идеале хорошо было бы знать и цели, которые преследовали разработчики процессора, вводя данную команду в систему машинных команд. Одна из целейданного учебника — сформировать у читателя именно такое понимание языка ассемблера.Из всего сказанного напрашивается вывод о том, что самую эффективную программу можно написать только на ассемблере (при условии, что ее пишет квалифицированный программист), так как этот язык является «родным» для компьютера.
Здесь есть одно маленькое «но»: это очень трудоемкий и требующий большоговнимания и практического опыта процесс. Поэтому реально на ассемблере пишутв основном программы, которые должны обеспечить эффективную работу с аппаратной частью компьютера. Иногда на ассемблере пишутся критичные ко временивыполнения или расходованию памяти фрагменты программы. Впоследствии ониоформляются в виде подпрограмм и совмещаются с кодом на языке высокогоуровня.В данном учебнике будут рассмотрены два фундаментальных для пониманиялогики функционирования компьютера вопроса: первый — архитектурные особенности процессора и основы его взаимоотношений с другими компонентами компьютера; второй — место и роль языка ассемблера во всем этом процессе.
За основув нашем рассмотрении будут взяты процессоры фирмы Intel. Необходимо отметить, что эти процессоры не являются единственными процессорами на рынке аппаратного обеспечения (hardware), хотя и занимают довольно большой сегментэтого рынка. Исторически сложилось так, что архитектура процессоров Intelполностью или частично поддерживается процессорами других фирм. Поэтому процессорам фирмы Intel приходится делить свой сегмент рынка с процессорами фирмAMD, VIA, Transmeta.
Так как в своем сегменте рынка (Intel-совместимых процессоров) процессоры фирмы Intel являются стандартом де-факто, то в данномИстория процессоров Intel21учебнике речь будет идти исключительно о них, однако все приводимые примерыпрограмм будут работать и на Intel-совместимых процессорах процессорах другихфирм.История процессоров IntelПроцессоры Intel в своем развитии прошли довольно сложный и насыщенныйразличными событиями путь. Корпорация Intel была основана в 1968 г. Первыйпроцессор 14004 был разработан Intel в 1969 г. Он представлял собой 4-разрядноепараллельное вычислительное устройство с 2300 транзисторами. Его возможности были сильно ограничены — он выполнял всего лишь четыре основные арифметические операции. Поначалу 14004 применялся в карманных калькуляторах. Позднее сфера его использования была расширена за счет различных системуправления, в частности, систем управления светофорами.В 1972 г.
был выпущен 8-разрядный процессор 18008 с адресацией внешней оперативной памяти размером 16 Кбайт. Неожиданный успех этого процессора подтолкнул разработчиков Intel к дальнейшим изысканиям. В 1974 г. был выпущен18080, который, оставаясь 8-разрядным, мог адресовать 64 Кбайт оперативной памяти. Для того времени это было революцией, этот процессор был выпущен в миллионах экземпляров. Историю современных Intel-совместимых процессоров принято вести именно от 18080.Очередной революционный процессор Intel — 18086 — появился в 1978 г. Егоосновные характеристики —наличие 16-разрядных регистров, 16-разрядной шиныданных.
Поддержка сегментной организации памяти наряду с 20-разрядной шиной адреса позволяла организовать адресацию памяти в пределах 1 Мбайт при доступности адресного пространства размером 256 Кбайт. С целью занятия болееширокой ниши на рынке Intel вскоре представила более дешевый вариант этогопроцессора —18088. При внутренней 16-разрядной архитектуре 18086 он имел 8-разрядную шину данных, вследствие чего был менее производителен. Важно отметить, что дешевизна достигалась в основном не за счет дешевизны самого процессора, а за счет удешевления конечного продукта — компьютера на его основе.