Программирование на Ассемблере под DOS

         

Несколько "тупых" процедурок


Дабы сходу "обломать" нездоровую критику, сразу предупреждаем, что нами сознательно допущена некоторая излишняя "процедуризация" исходного кода. А по сему, прежде чем взяться за изучение нижеследующего материала, твердо уясните: в данном случае (как есть сейчас) дробление кода на процедуры - дурь полная. А обосновываем мы эту дурь только тем, что впоследствии будем совершенствовать эти процедуры до уровня, когда, собственно, сие "дробление" и будет обосновано.
И еще. Подобный модульный подход (это понятие немножко шире, чем просто "использование процедур") в некоторых случаях снижает быстродействие и увеличивает размер исполнимого файла, однако он же и значительно увеличивает "читабельность" исходника, что вполне обоснованно с точки зрения обучения. И с точки зрения "командной" разработки программ - тоже. (В общем, критика по этому поводу не принимается!).
  Итак, для начала набиваем вот какой текст (исходник это!): assume CS:PROGA

PROGA segment org 100h

;-[TESTING]--------------------------- ;Здесь мы будем тестировать процедуры ;--------------------------------------- TESTING proc call EXIT_COM TESTING endp

;-[EXIT_COM, V1]-------------------- ;Завершение работы программы ;На входе: пофиг ;На выходе: нихрена ;Прерывания: INT 20h ;Процедуры: ан нэту ;----------------------------------- EXIT_COM proc int 20h EXIT_COM endp

PROGA ends

end TESTING

  Здесь вам все должно быть понятно. INT 20h вынесен в отдельную процедуру и только. Плюс еще какие-то нездоровые заголовки добавлены, которые и весят-то больше, чем сам код. Это нормально. После точки с запятой в исходнике вы можете писать все, что угодно. Все равно при компиляции это будет проигнорированно и, следовательно, на размер исполнимого файла не повлияет. (Точно так, как и длина "имен собственных" процедур и меток).
  Мы предлагаем использовать именно такую "шапку" комментария к каждой из ваших процедур. Все очень просто. Первая строчка - это "что делает процедура". Вторая - какие ей необходимо передать параметры. Третья - какие она возвращает параметры. Четвертая и пятая, соответственно, - какие в процедуре использовались прерывания и хм... ранее написанные процедуры :). Это намного облегчит понимание вашего исходника как вами самими, так и теми, кому вы его предоставите на поругание...
  Для тех, кто в танке: последующие процедуры вставляйте между процедурами TESTING и EXIT_COM - не ошибетесь :-p.



Содержание раздела