Выбрать главу

Можете ли вы вычислить длительность машинного цикла при использовании такого резонатора? Какой смысл имеет значение 32 768 для времязадающих узлов?

Глава 5

Набор команд

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

Можно проектировать дом одновременно с его постройкой. В принципе, если вы строите простую хижину, это вполне допустимо. Однако очевидно, что при таком подходе к строительству полученный в результате дом не сможет очень долго защищать владельца от дождя, а также не будет экономичным, ремонтопригодным, эргономичным, да и просто красивым. Гораздо лучше нанять архитектора, чтобы он спроектировал здание до того, как начнется строительство. Разумеется, этот проект будет в достаточной степени абстрактным, хотя лучше, если проектировщик имеет представление о технических характеристиках и стоимости имеющихся строительных материалов.

К сожалению, очень многие программируют «на бегу», практически не задумываясь о составлении сколько-нибудь подробного проекта. В области программного обеспечения термин «проектирование» означает написание алгоритма и разработку необходимых структур данных. И опять же лучше, если разработчик алгоритма будет учитывать «кирпичики», из которых будет построена программа. В нашем случае такими кирпичиками являются машинные команды.

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

Можно провести параллель между написанием программы и приготовлением кулинарного блюда. Для любой плиты, будь то микроволновая печь или электроплита, имеется свой набор операций. Эти операции — к примеру, выпаривание, обжаривание, кипячение — по своей сути аналогичны набору команд, которые могут быть выполнены центральным процессором. Различные ингредиенты, которые могут использоваться во время этих операций, являются данными команд. Эти данные могут находиться как во внутренних регистрах процессора, так и во внешней памяти. Причем исполнительный адрес операнда может задаваться несколькими различными способами. Эти способы называются режимами адресации.

В соответствии с RISC-подобной философией микроконтроллеров PIC ядро среднего уровня имеет всего 33 команды плюс две устаревшие команды, доставшиеся в наследство от младшего семейства, которые мы не будем рассматривать. Каждая команда представляет собой 14-битное слово, в котором содержится собственно код операции (КОП), адрес или значение операнда, а также бит адресата результата операции. Некоторые из этих команд и режимов адресации мы уже рассмотрели в главе 3 при обсуждении нашего компьютера BASIC. Теперь же пришла пора полностью разобраться с этим материалом. Так что в этой главе мы подробно рассмотрим различные режимы адресации и все имеющиеся команды.

Прочитав эту главу, вы:

• Узнаете, что режим адресации предназначен для точного указания местонахождения данных команды.

• Поймете, каким образом адресуется операнд команды при различных режимах адресации.

• Поймете, каким образом формат слова команды влияет на использование этих команд.

• Разберетесь, каким образом бит IRP регистра STATUS позволяет процессору обращаться ко всей памяти данных с использованием косвенной адресации.

• Узнаете, что наиболее часто используемыми командами являются команды пересылки данных, предназначенные для копирования данных между рабочим регистром и памятью данных.

• Узнаете, что процессор может выполнять базовые арифметические операции, такие как сложение, вычитание, инкрементирование, декрементирование и изменение битов.