^ Основы структурного программирования р- Средства ассемблера для поддержки структурного программирования ' l> Процедуры и организация связей между процедурами на языке ассемблера |ь Директива INVOKE (MASM) ⅜⅛ Связь между программами на языках высокого уровня и программами на ассемблере Мы неоднократно подчеркивали один из существенных недостатков программ на языке ассемблера, а значит, и самого языка, — недостаточную наглядность. По про- шествии даже небольшого времени программисту порой бывает трудно разобраться в деталях им же написанной программы. А о чужой программе и говорить не при- ходится. Если в ней нет хотя бы минимальных комментариев, то разобраться с тем, что она делает, довольно трудно. Причины этого тоже понятны — при написании программы на языке ассемблера человек должен запрограммировать самые эле- ментарные действия или операции. При этом он должен учитывать и контролиро- вать состояние большого количества данных. Из-за элементарности программи- руемых операций реализация одного и того же алгоритма может быть произведена по крайней мере несколькими способами. Эта неоднозначность влечет за собой непредсказуемость, что и затрудняет процесс обратного восстановления исходно- го алгоритма по ассемблерному коду. По мере накопления опыта эти проблемы частично снимаются. Но одного опы- та мало. Ситуация усугубляется, если работает коллектив разработчиков. Тут уже нужны специальные средства. Далее перечислены организационные и программ- ные (предоставляемые ассемблером) мероприятия, позволяющие хотя бы частич- но снять остроту этой проблемы. ® Документирование программистом своей работы и ее результатов. Делается это в первую очередь путем комментирования строк исходного текста программы. При этом комментарии должны коротко, но точно выражать то, что делает дан- ная программа в целом, выделять ее наиболее важные фрагменты и особенности применения отдельных команд. В конечном итоге, комментирование облег- чает понимание сути программы, но все-таки полностью не снимает про- блему. * Упрощение кода программы путем замены сложных фрагментов более понят- ным кодом. Для этого, в частности, можно использовать рассмотренные нами макрокоманды. и Использование при разработке программных проектов достижений современ- ных технологий программирования. К настоящему моменту наиболее популярными и жизнеспособными оказа- лись две технологии программирования: структурная и объектно-ориентиро- ванная. Последние версии пакетов TASM и MASM языка ассемблера поддерживают объектно-ориентированное программирование, но реализация его довольно слож- на и требует отдельного рассмотрения. Типичному процессу написания програм- мы на ассемблере больше всего удовлетворяют концепции структурного програм- мирования. Можно даже сказать, что для процессорной архитектуры IA-32 эти концепции поддерживаются на аппаратном уровне с помощью таких архитектур- ных механизмов, как сегментация памяти и аппаратная реализация команд пере- дачи управления. На программном уровне поддержка заключается, в основном, в соответствующих средствах конкретного компилятора, в частности, такие сред- ства имеют компиляторы TASM и MASM. Данная глава посвящен этим программ- но-аппаратным средствам.