Доставка цветов в Севастополе: SevCvety.ru
Главная -> Появление первого микропроцессора

0 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116

программного продукта, т. е. либо играют с ним в режиме черного ящика, либо теряют физическое и душевное здоровье, копаясь в исходных кодах в худших традициях реверсной технологии. Разработчики же оригинальных программ приземляют свою работу, либо зарабатывая деньги родному вузу, либо" находясь в искусственной изоляции в силу ведомственной разобщенности, и неразвитости системы научно-технической коммуникации. В результате общезначимость программистской работы недопустимо низка» [29].

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

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

Выбор авторами языка ассемблера объясняется тем, что он позволяет наиболее детально, почти на аппаратном уровне раскрыть механизм решения задачи и реализовать его эффективно - с минимальными затратами емкости памяти и времени микропроцессора, что актуально для многих микропроцессорных систем, особенно реального времени. Этот язык в силу его близости к структуре микропроцессора позволяет инженеру наиболее безболезненно, логично и быстро перейти от схемотехники к программированию и накоплению нового опыта Вместе с тем трудоемкость разработки программ на языках ассемблера значительно превышает трудоемкость разработки аналогичных программ на языках высокого уровня и потому в первую очередь требует облегче- . ния за счет использования готовых программ-аналогов. Выбор конкретного микропроцессора серии КР580 обусловлен широким распространением и доступностью этой серии большому кругу пользователей, причем вопросы схемотехнического построения систем на ее базе достаточно подробно освещены в литературе. Кроме того, данная серия используется во многих отечественных микроконтроллерах и микроЭВМ типа, например, СМ 1800. «Электроника К1-10», «Электроника К1-20», СО-4, В7, которые можно использовать в качестве программных отладочных комплексов.

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



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

Пожалуй, главная проблема практического программирования - использование «чужого» программного обеспечения. Хотя программы пишутся для машин, в первую очередь они должны быть понятны людям: «чужое» может стать «своим» лишь в том случае, если оно понятно. Чужие программы, оторванные от машинной среды и представленные в виде «черного ящика», вызывают естественное недоверие, которое сдерживает их применение в проектах. Это недоверие можно

j, устранить либо после длительного тестирования программы, либо после полного уяснения алгоритма работы и деталей ее внутренней организации. Максимальная читаемость текста программь ее компактность и обозримость, доступность для быстрого понимания «чужим умом» являются необходимыми условиями использования и «живучести» чужих программ. Эти требования становятся еще актуальнее в том случае, когда речь идет о модернизации чужой программы. Без понимания структуры программы любые изменения в ней «на авось» чреваты

• ошибками.

Возможность понимания программы обеспечивается ее компактным построением и многоуровневым описанием. Самый высокий уровень описания программы - это описание в виде «черного ящика» с расшифровкой структуры его входов-выходов и выполняемой функции. Такое описание помогает восприятию программы как целостного элемента и необходимо для начального знакомства с ней. Этим описанием можно ограничиться в случае полного доверия к программе. Самый низкий и самый детальный уровень описания программы - описание на языке программирования (примитивный уровень объектных кодов не рассматриваем). Восприятие программы на этом уровне требует больших интеллектуальных усилий в связи с необходимостью оперативного запоминания и мысленной обработки большой последовательности взаимосвязанных и специфических элементов искусственного языка (операторов или команд). Такое описание необходимо для построения самой программы.

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

Компактность и обозримость программ достигаются за счет их модульного построения в виде структуры взаимодействующих подпрограмм. При этом сложные программы формируются из менее сложных модулей подпрограмм и в свою очередь образуют готовые модули-



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

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



0 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116



0.016
Яндекс.Метрика