Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНАЯ РАБОТА№19.doc
Скачиваний:
13
Добавлен:
18.03.2015
Размер:
1.1 Mб
Скачать

Организация программ

В различных случаях применения перед МП ставятся разные задачи. Например, вольтметр со встроенным МП должен измерить входное напряжение и послать данные на дисплей. Процессор должен перевести данные в вольты и автоматически поддерживать нуль шкалы. Измеритель может иметь клавиатуру /для ввода пользователем специальных запросов/. Для автоматической установки диапазона процессор может быть связан с аттенюатором. Каждая из задач, стоящих перед МП, является в основном независимой и может быть представлена относительно простой программой. Затем одна общая /основная/ программа может объединить все специализированные программы, не вдаваясь в подробности каждой задачи.

Проведем аналогию со структурой большого предприятия. Директор не может выполнить всю работу, но он может принимать все главные решения-. Ему не надо беспокоиться о том, какой метлой подметать дворни­ку, потому что это .могут решить другие люди. Существует ряд заместителей, которые отвечают за определенные направления работы. У них в подчинении находятся начальники рангом ниже, которые.в свою очередь, управляют другими служащими. На предприятии каждый имеет задачу для решения, и чем ниже вы на служебной лестнице, тем больше вы вникаете в детали. Директор имеет время принимать важные решения, потому что он может заставить других людей выполнять менее важные. Они, в свою очередь, заставляют других, которые привлекают еще людей, если это требуется, затем каждый человек докладывает своему начальнику, и наконец, директор получает ответ.

Это очень похоже на работу процессорной системы. Так как задачи могут быть очень различными и сложными, то существует много программ. Одна программа /часто называемая исполнительной/ действует как директор. Программа-исполнитель имеет другие программы, работающие на нее, и которые в свою очередь, имеют другие программы, работающие на них.

Программы, работающие на другие программы, называются подпрограммами. Подпрограммы могут иметь другие подпрограммы, работающие на них и т.д.

Пример. На рис.3, приведена простая программа, которая обеспечивает запись в ячейку памяти 8020 то нулей, то единиц. В этой программе используются подпрограммы. Одна подпрограмма используется для записи в ячейку памяти единиц, другая - для записи нулей.

Основная программа содержит только три команды: одну - для вы­зова подпрограммы "нули", другую -для вызова подпрограммы "единицы" и третью т для перехода к началу.

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

- Команда САLL заставляет МП перейти на подпрограмму. Метки "0" и "1" определяют подпрограммы и помещаются по реальному адресу, когда язык Ассемблер переводится в машинный код. Первые две команды каждой из подпрограмм уже

Рис.3. Пример использования подпрограммы

рассмотрены ранее. Последняя команда RЕТ /возврат/ определяет конец подпрограммы и возвращает МП к выполнению основной программы. В табл. 3 показана полная программа с машинными кодами. САLL состоит из кода операции С9, за которым следует адрес подпрограммы. Адрес подпрограммы хранится таким же образом, как и адрес перехода. Команда RЕТ состоит только из кода С9. Никакого адреса команда не содержит. Однако же МП "знает", куда возвращаться, когда он встречает команду возврата в конце подпрограммы. Когда выполняется команда САLL, адрес возврата, т.е. адрес команды, следующий после вызова подпрограммы, хранится в специальном месте памяти, которое

Таблица 3 Листинг программы записи в ячейку памяти нулей и единиц

Основная программа

Адрес

Содержимое

Метки

Команды

Комментарии

8000

СD

Н

САLL 0

Подпрограмма записи нулей

8001

09

8002

80

8003

СD

САLL 1

Подпрограмма записи единиц

8004

ОF

8005

80

8006

СЗ

JМР Н

Повтор

8007

00

8008

80

Подпрограмма записи нулей в ячейку памяти 8020

8009

ЗЕ

0:

MVI А, 00

Записать в А нули

800А

00

800B

32

STA 8020

Записать содержимое А в ячеку

800С

20

800D

80

800Е

С9

RET

Возврат в основную программу

Подпрограмма записи единиц в ячейку памяти 8020

800F

3E

1:

МVI А, FF

ЗаписатьВ А единицы

8010

FF

8011

32

SТА 8020

Записать содержимое А в ячейку

8012

20

8013

80

8014

С9

RЕТ

Возврат в основную программу

называется СТЕК. Когда в конце подпрограммы встречается команда RЕТ, МП получает из СТЕКА адрес возврата, программа возвращается к основной программе. Работа СТЕКА осуществляется почти полностью автоматически. Более подробно СТЕК будет описан в последующих разделах.

Проведем эксперимент по использованию программы,приведенной в табл.3.

. Введите данную программу в память "Микролаб". .

2. Поставьте тумблер режима в положение ШАГ.

3. Установите начальный адрес программы /8000/ и нажмите кнопку ПУСК. Выполняется первая команда программы /САLL О/, и происходит переход к подпрограмме /адрес 8009/.

4. Нажмите кнопку ПУСК. Выполняется следующая команда, которая является первой в подпрограмме. В аккумулятор заносятся нули.

5. Нажмите кнопку ПУСК. Содержимое аккумулятора заносится в ячейку памяти с адресом 8020. Проверьте содержимое этой ячейки. Там записаны нули.

6. Нажмите кнопку ВОЗВР. Выполнится команда RЕТ, и вы вернетесь в основную программу /адрес 8003/.

7. Нажмите кнопку ПУСК. Произойдет переход во вторую подпрограмму /адрес 800F/.

8. Нажмите два раза кнопку ПУСК. В аккумулятор запишутся единицы /FF/, и содержимое аккумулятора перепишется в ячейку памяти с адресом 8020.

9. Проверьте, имеется ли в ячейке '8020 ГГ.

10. Нажмите кнопку ВОЗВР. Выполнится команда возврата /RЕТ/, и произойдет переход к основной программе /адрес 8006/. По этому адресу будут записаны команды безусловного перехода к адресу 8000.

После этого программа начнет исполняться снова.

11. Нажмите несколько раз кнопку ПУСК, просмотрите программу еще раз.