Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНЫЙ ПРАКТИКУМ 2012.docx
Скачиваний:
24
Добавлен:
16.08.2019
Размер:
1.27 Mб
Скачать

Тема: Организация подпрограмм и внутренние механизмы передачи параметров

Цель лабораторной работы:

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

Задание к лабораторной работе:

- изучить соответствующий теоретический материал, используя конспекты и литературу;

- на примере функциональной модели ЭВМ-2 (приложение 2) ознакомиться с командами передачи управления подпрограмме и возврата из подпрограммы;

- для предложенного варианта задания реализовать четыре варианта программ, обеспечивающих передачу параметров различными способами;

- оформить отчет по лабораторной работе.

Для выполнения данного лабораторного практикума необходимо дополнить свои знания изучением следующих команд.

Переход к подпрограмме CALL A или CALL D(B). Адрес следующей за CALL командой заносится в вершину стека, в программный счетчик заносится адрес подпрограммы.

Возврат из подпрограммы: RET. Из вершины стека извлекается адрес возврата и записывается в программный счетчик.

Пример реализации программ по лабораторной работе

Ниже рассматривается четыре варианта программ с различными способами передачи параметров: через регистры общего назначения, через память, через стек и с использованием списка адресов параметров

А) Передача параметров через регистры

В нижеприведенном примере проиллюстрирован прием передачи параметров через регистры общего назначения процессора. Подпрограмма power обеспечивает вычисление целой степени некоторого числа. Подпрограмма имеет три параметра - два входных и один выходной. Входными параметрами являются показатель степени и число, возводимое в степень. Выходным параметром является результат возведения числа в степень. Параметры передаются подпрограмме в регистрах A и B. Результат работы подпрограммы возвращается в регистре B.

адрес

код

мнемокод

комментарий

00

40

in 0

; ввод z

01

0a

mov b,a

;

02

41

in 1

; ввод n

03

19 25

stor b,z

; запомнить z

05

31 00

mvi b,0

; обнулить b

07

19 26

stor b,Y

; Y:=0

09

31 01

mvi b,1

;

0b

19 27

stor b,I

; i:=1

0d

20

cycl: push a

; сохранить счетчик цикла

0e

10 27

load a,I

; в rA - I

10

11 25

load b,Z

; в rB - Z

12

c0 28

call power

; вызов п/п вычисления степени, рез-т возвр. ч/з rB

14

59 26

adm b,Y

; Y:=Y+ZI

16

19 26

stor b,Y

; запомнить новое Y

18

11 27

load b,I

; \

1a

61 01

adi b,1

; I:=I+1;

1c

19 27

stor b,I

; /

1e

28

pop a

; восстановить счетчик цикла

1f

e0 0d

loop a,cycl

; замкнуть цикл

21

10 26

load a,Y

; в rA - Y

23

4a

out 2

; вывести результат в канал 2

24

f8

stop

25

00

Z: .ds 1

26

00

Y: .ds 1

27

00

I: .ds 1

; подпрограмма вычисления степени числа

; вход: (rA) - показатель степени; (rB) - основание ;

; выход: (rB) - zi

28

19 33

power: stor b,zp

; запомнить исх. число во временной переменной

2a

31 01

mvi b,1

; p:=1 - результат изначально равен 1

2c

20

intcyc: push a

; сохранить счетчик цикла

2d

88 33

mum a,zp

; p:=p*z

2f

28

pop a

; восстановить из стека счетчик цикла

30

e0 2c

loop a,intcyc

; замкнуть цикл

32

c8

ret

; возврат в вызывающую программу

33

00

zp: .ds 1

; ячейка для временного хранения z