Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Системные средства модульного программирования.




Структурное программирование — методология программирования, базирующая­ся на системном подходе к анализу, проектированию и реализации программного обеспечения. Эта методология зародилась в начале 70-х годов и до сих пор является основной в большом количе­стве проектов. Основу этой технологии составляют следующие положения: - Сложная задача разбивается на более мелкие, функционально лучше управляемые задачи. - Простота управляющих структур, используемых в задаче. - Разработка программы должна вестись поэтапно. Концепция модульного программированияТак же как и для структурной технологии программирования, концепцию модуль­ного программирования можно сформулировать в виде нескольких понятий и положений: - Функциональная декомпозиция задачи — разбиение большой задачи на ряд более мелких, функционально самостоятельных подзадач — модулей. Модули связаны между собой только по входным и выходным данным. Модуль — основа концепции модульного программирования. Каждый модуль в функциональной декомпозиции представляет собой «черный ящик» с одним входом и одним выходом. - Реализуемые решения должны быть простыми и ясными - Назначение всех переменных модуля должно быть описано с помощью ком­ментариев по мере их определения. - Исходный текст модуля должен иметь заголовок, в котором отражены как назначение этого модуля, так и все его внешние связи. Этот заголовок можно назвать интерфейсной частью модуля. В этой части с использованием коммен­тариев нужно поместить следующую информацию: назначение модуля; особенности функционирования; описание входных аргументов; описание выходных аргументов; использование внешних модулей и переменных; сведения о разработчике для защиты авторских прав. - В ходе разработки программы следует предусматривать специальные блоки операций, учитывающие реакцию на возможные ошибки в данных или в дей­ствиях пользователя. Из этих положений видно, какое большое значение придается организации управляющих и информационных связей между структурными единицами програм­мы (модулями), совместно решающими одну или несколько больших задач. В языке ассемблера для оформления процедур как отдельных объектов су­ществуют специальные директивы PROC/ENDP и машинная команда ret. Возможные варианты размещения про­цедур в программе: - в начале программы (до первой исполняемой команды); - в конце (после команды, возвращающей управление операционной системе); - промежуточный вариант — тело процедуры располагается внутри другой про­цедуры или основной программы. - в другом модуле. Три пер­вых варианта из этих четырех относятся к случаю, когда процедуры находятся в одном сегменте кода. В последнем варианте, процедуры находятся в разных мо­дулях. Они должны быть связаны между собой по управлению и по данным Организация интерфейса с процедуройПрежде всего определимся с такими понятиями, как аргумент, переменная, кон­станта. Аргумент — это ссылка на некоторые данные, которые требуются для выполне­ния возложенных на модуль функций и размещенных вне этого модуля. Переменная — это нечто, размещенное в регистре или ячейке памяти, что может в дальнейшем подвергаться изменению. Константа — данные, значение которых никогда не изменяется. Существуют следующие варианты передачи аргументов в модуль (про­цедуру): через регистры. Это наиболее простой в реализации способ передачи данных. Данные, передан­ные подобным способом, становятся доступными немедленно после передачи управления процедуре. Этот способ очень популярен при небольшом объеме пе­редаваемых данных. Ограничения на способ передачи аргументов через регистры: - небольшое число доступных для пользователя регистров; - нужно постоянно помнить о том, какая информация в каком регистре нахо­дится; - ограничение размера передаваемых данных размерами регистра. через общую область памяти. Этот вариант передачи аргументов предполагает, что вызывающая и вызываемая программы условились использовать некоторую область памяти как общую. Транслятор предоставляет специальное средство для организации такой области памяти. Один из них — атрибут комбинирования сегментов. Наличие этого атрибута указыва­ет компоновщику TLINK, как нужно комбинировать сегменты, имеющие одно имя. Значение common означает, что все сегменты, имеющие одинаковое имя в объединяемых модулях, будут располагаться компоновщиком, начиная с одного ад­реса оперативной памяти. Это значит, что они будут просто перекрываться в па­мяти и, следовательно, совместно использовать выделенную память. Недостатком этого способа в реальном режиме работы микропроцессора являет­ся отсутствие средств защиты данных от разрушения, так как нельзя проконтро­лировать соблюдение правил доступа к этим данным. через стек. Суть в том, что вызывающая процедура самостоятель­но заносит в стек передаваемые данные, после чего производит вызов вызывае­мой процедуры. При передаче управления процедуре микропроцес­сор автоматически записывает в вершину стека два (для процедур типа near) или четыре (для процедур типа far) байта. Вы помните, что эти байты являются ад­ресом возврата в вызывающую программу. Если перед передачей управления процедуре командой call в стек были записаны переданные процедуре данные или указатели на них, то они окажутся под адресом возврата. Стек обслу­живается тремя регистрами: ss, sp и bp. Микропроцессор автоматически работает с регистрами ss и sp в предположении, что они всегда указывают на вершину стека. По этой причине их содержимое изменять не рекомендуется. Для осуще­ствления произвольного доступа к данным в стеке архитектура микропроцессора имеет специальный регистр ebp\bp использование которого автоматически предполагает работу с сегментом стека. Перед использованием этого регистра для доступа к данным стека его содержимое необходимо правильно инициализировать, что предполагает формирование в нем адреса, который бы указывал непосредственно на передан­ные данные. Для этого в начало процедуры рекомендуется включить дополни­тельный фрагмент кода. Он имеет свое название — пролог процедуры. с помощью директив extrn и public. Сущ-ют вариантов их применения: Оба модуля используют сегмент данных вызывающей программы. У каждого из модулей есть свой собственный сегмент данных. Модули используют атрибут комбинирования (объединения) сегментов private в директиве сегментации segment.



 


Данная страница нарушает авторские права?


mylektsii.ru - Мои Лекции - 2015-2019 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал