|
|
|
|
ВМЕСТО ПРЕДИСЛОВИЯ
Когда программисты-фанатики собираются в своем кругу для обсуждения тайн структурного программирования, разговор обычно концентрируется на
небольшом наборе конструкций языка типа IF-THEN-ELSE. Приверженец языков Паскаль или Си будет читать лекцию о преимуществах языков высокого
уровня по сравнению с языками ассемблерного типа. Вероятно, будут приведены горячие аргументы по поводу использования оператора GOTO. Несмотря на
все предыдущие обсуждения, ясно, что сказано далеко не все. В действительности, подобное обсуждение фокусируется только на структурном
программировании. Как Вы скоро увидите, структурное программиро вание возможно на любом языке. Модные структуры управления языков высокого уровня
поддерживают даже некоторые ассемблеры. Одним из таких ассемблеров является Макро Ассемблер фирмы Майкрософт для операционной системы MS-DOS,
широко известный под названием MASM.
Потребность в короткой записи операторов
Прежде чем представить структуры управления высокого уровня в языке Ассемблера мы рассмотрим некоторые преимущества языков высокого уровня.
Так или иначе все заканчивается на уровне ассемблера. Что же выигрывается от использования языка высокого уровня? Возможность выражать программистскую
идею в форме, легко понимаемой программистом или специалистом. Предположим, что каждому оператору ассемблера в большей или меньшей степени
соответствует одна машинная команда.С другой стороны, один оператор языка высокого уровня может расширяться до десятков или даже сотен машинных
инструкций. (Тот, кто сомневается в расширении до сотен, может проверить это, проанализировав работу вычислительной подпрограммы на языке Фортран,
имеющей множество аргументов).
Рис. 1-1. Сравнение Фортрана с Ассемблером
Фортран Aссемблер
sum = 0 mov sum,0
DO 100 I = 1, NUM mov ax,1
100 SUM =SUM +I loop1: cmp ax,num
jg loop1_end
add sum,ax
inc ax
jmp loop1
loop1_end:
|
На Рис.1-1 показан фрагмент одной и той же программы, реализованный на Фортране и языке Ассемблера 8086. Этот фрагмент
вычисляет сумму 1... NUM для данного NUM. Нет сомнений, что программа на ассемблере прежде всего может быть оптимизирована с целью уменьшения или
количества выполняемых команд, или времени выполнения программы. Но вне зависимости от того, как к этому подойти, легче написать программу на Фортране,
чем на Ассемблере. Для написания программы на Ассемблере должно быть принято гораздо больше решений. В силу значительной сложности работы по
программированию на ассемблере ошибки кодирования более вероятны. Я могу быть уверен, что программа на Фортране будет выполняться превосходно,
но я не могу сказать этого о программе на ассемблере. Почему возникают такие сомнения? Потому что каждая строка программы на Фортране представляет собой
законченную мысль, в то время как ассемблерная программа требует для реализации той же мысли множества строк.
Короче говоря, использование конструкций высокого уровня приводит к облегчению процесса программирования и повышению надежности программ.
Такие конструкции делают программирование менее сложным, что позволяет программисту сконцентрироваться на логике программы. Естественно, что
программисты хотели бы быть уверены в правильности результатов своей работы. Инструментальные средства, поддерживающие такую уверенность, приводятся в
нижеследующих раз делах.
|
|