Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка - Лабораторные работы №1-4.DOC
Скачиваний:
28
Добавлен:
02.05.2014
Размер:
3.19 Mб
Скачать

2.1 Использование стековой памяти

Часто в основной программе одни и те же операции (умножение, деление, сортировка массива и др.) выполняются многократно с различными данными . Целесообразно также нестандартные операции оформлять в виде программ, которые в основной программе использовать в виде подпрограмм, в свою очередь , подпрограмма так же может использовать при работе другие программы выполнения некоторых операций и т.д. В результате закон (порядок) работы ЭВМ может включать несколько вложенных друг в друга программ .

Для организации вычислительного процесса с применением подпрограмм используется стековая область ОЗУ. Эта область резервируется программистом для осуществления прерываний при вызове подпрограмм. При этом "низ" стека фиксируется установкой его адреса в SP командой SPHL (в УОУ монитор устанавливает автоматически SP=83Е0) и, начиная с этого адреса, "вверх" (SP-1) размещаются промежуточные данные и коды адресов команд основных программ , которые должны выполняться вслед за выполнением подпрограмм. Для обращения к подпрограмме используется команда CALL аа и её модификации. Эти команды загружают в РС адрес аа начальной команды подпрограммы, а текущий адрес команды основной программы запоминается стековой памятью. Для возвращения вычислений из подпрограммы к следующей за CALL команде в подпрограмме используется команда RET и её модификации. Эта команда возвращает из стековой памяти в РС код адреса этой команды .

Следует отметить, что подпрограмма выполняет вычисления в процессоре с использованием набора тех же РОН, что и программа, поэтому, если данные основной программы, полученные в РОН перед выполнением подпрограммы, необходимы для вычислений после выполнения подпрограммы, их следует запомнить и восстановить,

НАЧАЛО

HL  Nя A RG... AA+RG...

X M(HL) CALL 8400 M(Nя+2)A

HL+1 RG... A RST 4*8

Y  M(HL) A  M(Nя +1)

RG... M(Nя) CALL 8400

Рисунок 3.2

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

ЯЧЕЙКА (16)

МНЕМОНИКА

КОД КОМАНДЫ (16)

8400

RAL

17

8401

JNC 840A

D2

8402

0A

8403

84

8404

CMA

2F

8405

RAR

1F

8406

INR A

3C

8407

JMP 840B

C3

8408

0B

8409

84

840A

RAR

1F

840B

RET

C9

для чего перед обращением к подпрограмме данные заносятся в стековую память командами PUSH RP, а после её выполнения восстанавливаются командами POP RP.

3. Порядок выполнения работы

3.1 Ответить на вопросы, используя вариант задания лабораторной работы №1.

3.2 Написать программу в соответствии с заданием и ГСА (рисунок 3.2). Разместить подпрограмму перевода числа в дополнительный код, начиная с ячейки 8400(16). Разместить основную программу , начиная с ячейки 8200(16).

3.3 Осуществить пошаговый процесс вычислений операции [Z]д=[X]д+[-Y]д - сложения двух чисел в дополнительных кодах : кнопкой RST с помощью монитора установить начальный адрес основной программы , переключатель "Прогон-отладка" установить в положение "отладка"; нажать клавишу REG и А , проверить содержимое аккумулятора и нажатием клавиши NEXT остальных РОН. Осуществить прогон программы кнопкой STEP с документированием состояний РОН после выполнения каждой команды .

3.4 Вновь установить начальный адрес основной программы кнопкой RST. Установить переключатель "Прогон-отладка" в положение "прогон". Нажать клавишу RUN. Сравнить конечные результаты вычислений с п.3.3.