Условная адресация в программировании

Страницы работы

Содержание работы

Условная адресация

Приступая к разработке системы управления, програм­мист должен сделать предварительное распределение памяти. Так, например, он может первоначально решить, что основная программа управления технологическим процессом будет вся размещена в ПЗУ, имеющем емкость 128 машинных слов. Если программа будет начинаться в точке с адресом 0000 0000 0000 (000 HEX.), то перемен­ные процесса, которые должны записываться в ОЗУ, мо­гут иметь адреса начиная с 000001000000(040 HEX).

Далее программист должен последовательно по порядку написать все команды программы управления. Программирование в машинных кодах означает, что каждая команда и адреса, по которым все команды и соответствующие им операнды будут загружены в память, должны быть указаны в бинарных кодах с присвоением абсолютных значений в ходе написания программы. Последнее, пожалуй, представляет наибольшую труд­ность, так как разработчик системы должен не только написать все 1 и 0, но и выполнить весь необходимый учет данных.

В качестве примера программирования с использова­нием абсолютной адресации рассмотрим процедуру считы­вания значений одного из параметров технологического процесса. Надо периодически считывать значение пара­метра, определять, сохранилось ли оно прежним или изменилось и, если изменилось, сообщить об этом в центральное устройство системы управления (рис. 2.11, табл. 2.4). Так как данный пример служит для демонстра­ции использования абсолютных адресов, то приведено содержание операций на естественном (разговорном) языке. Все адреса даются в шестнадцатеричном коде. По этой программе загружаются в аккумулятор данные, находящиеся во входной цепи, затем .предыдущее значе­ние параметра, сохраненное в ячейке памяти с адресом 040, вычитается из содержимого аккумулятора. Если ста­рое и новое значения одинаковы, то результат вычитания будет равен нулю, поэтому ход программы не изменится и она будет продолжаться в точке 003. Если же резуль­тат вычитания в точке 001 не будет равен нулю, т. е. значение параметра изменилось, то произойдет переход на другую ветвь программы и управление будет передано ячейке с адресом 009, где содержится подпрограмма


пересылки нового значения параметра на центральный пульт. Одним из шагов этой подпрограммы должно быть запоминание нового значения параметра в ячейке с адресом 040.

Продолжение программы с точки 003 содержит после­довательные команды, образующие цикл выдержки времени. Когда пройдет заданное время, определяемое

Таблица 2.4. Программирование с абсолютными адресами

Номер строки

Адрес команды

Операция

Адрес операнда

1

000

Ввести в аккумулятор текущее значение параметра

2

001

Вычесть предыдущее значение параметра

040

3

002

Если результат НЕ НОЛЬ ,то переход к  подпрограмме пересылки значения параметра 

009

4

003

Ввести в аккумулятор константу К1

007

5

004

Вычесть константу К2

008

6

005

Если переход НЕ НОЛЬ , то снова вычесть

004

7

006

Переход (безусловный) в начало программы

000

8

007

Константа К1=1111

-

9

008

Константа К2=0001

-

10

009

Подпрограмма пересылки значения параметра

-

на центральный пульт

11

040

Текущее значение параметра

-

5

ПЗУ4

ВРЕМЯ

числом тактов, необходимых для выполнения всех команд цикла, содержимое аккумулятора окажется равным нулю и выполнение передается ячейке 006, которая содержит команду перехода в начальную точку 000 для повторе­ния всего процесса.

Даже в таком простом примере программист сталки­вается с большими трудностями: он должен задать началь­ные точки своей программы в ОЗУ и ПЗУ, не изменяя при этом других данных; он должен помнить, где хранятся константы и все текущие значения переменных величин;

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

Машинное кодирование с абсолютной адресацией обычно применяется только для очень простых и коротких программ длиной не более 40—50 машинных . слов. Разработка программы значительно облегчается, если для кодирования всех команд использовать мнемокоды, а для операндов применить условные (символические) адреса. Иными словами, мнемокоды применяются не толь­ко для системы команд, но и для адресов. В дальнейшем мнемонические сокращения переводятся в машинные коды, чтобы получить те данные, которые можно вводить в память микропроцессора.

Условные наименования можно присваивать всем величинам в операндной зоне команды. Такое наимено­вание величины, или ее идентификатор, представляет собой произвольную последовательность букв и цифр, которая обязательно должна начинаться с буквы. При­своение условных наименований находится полностью в руках программиста. Это могут быть нейтральные символы А, В, С или X, Y, Z, но чаще выбирают наименования, указывающие на смысл идентифицируемой величины. Как правило, наименования сокращают до минимального, но все же сохраняющего первоначальный смысл значения, которое облегчает запоминание. Различные идентифика­торы могут отличаться одной буквой или цифрой, на­пример ТП1, ТП2, ТОП и т. д.

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

Условные обозначения применяются также для от­дельных частей программы. Такие обозначения назы­ваются метками, они задаются программистом, который в ходе написания программы как бы приклеивает ярлыки с названиями к различным программным модулям. В качестве меток удобно (хотя и не обязательно) ис­пользовать символические обозначения, соответствующие данным частям программы, например СТАРТ, ВРЕМЯ, ЗАДЕРЖКА и т. д. Метка ставится перед кодом операции, и после нее принято ставить двоеточие. В процессе трансляции программы (ручном или машинном) каждой метке присваивается текущее значение счетчика команд и тем самым фиксируется определенное место в программе. Поэтому когда в программе встречаются команды перехо­дов или разветвлений, то в зоне операнда можно указы­вать непосредственно метку: это является символическим адресом, на который передается дальнейшее управление программой. Таким путем можно организовать переход в нужную точку программы, многократное повторение ее отдельных частей и т. д.

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

Та же самая программа, которая была приведена в табл. 2.4, теперь может быть записана с мнемокодами вместо описания операций и с адресами не в абсолютной, а в символической форме и с присвоением каждой величине условных наименований (табл. 2.5). Строки от 1 до 7 при кодировании в символических адресах представляют собой то же самое, что и строки с 1 до 7 в табл. 2.4, но в зоне операндов теперь содержатся последо­вательности букв, образующие условные наименования. Каждому из них затем будет приписана величина,

Таблица 2.5. Программирование в мнемокодах с относительными адресами

Номер строки

Относи­тельный адрес

Метка

Операция

Операнд

Комментарий

1

ПЗУО

СТАРТ

ВВД

Ввод текущего значения

параметра

2

ПЗУ1

ВЫЧ

ТП

Вычитание преущего

значения

3

ПЗУ2

ПНЕН

ВЫХОД

Вывод нового значения

4

ПЗУЗ

МСТ АП

К1

Ввод константы

5

ПЗУ4

ВРЕМЯ

К2

Уменьшение константы

на  1 (декремент)

6

ПЗУ5

ПНЕН

ВРЕМЯ

Цикл задержки времени

7

ПЗУ6

ПЕР

СТАРТ

Повторение программы

8

ПЗУ7

К1

ПРИР

OFH

Константа 1111

9

ПЗУЗ

К2

ПРИР

1

Константа 0001

10

ПЗУ9

ВЫХОД

Текст программы вывода нового значения параметра

11

ОЗУ1

ТП

ПРИР

о

Начальное значение па­раметра

соответствующая его позиции в программе. Команды в строках 8, 9 и 11 дают указание зарезервировать в памяти три адреса для хранения данных. Первые два (007 и 008) содержат константы, используемые для обра­зования цепи выдержки времени. Адрес в строке 11 (040) первоначально содержит 0, а затем текущее значение параметра технологического процесса.

После того как все команды данной программы написаны, к ней должна быть добавлена подпрограмма, к которой есть обращение в строке 3 основной программы. Этой подпрограмме дано символическое наименование ВЫХОД. Последней командой такой подпрограммы долж­но быть БРТ (ОБРАТНО), т. е. возвращение к основной программе.

Похожие материалы

Информация о работе