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

B) Пример передачи параметров через общую область памяти.

В следующем примере передача параметров подпрограмме осуществляется через общую область памяти. Т.е. ячейки памяти, хранящие значения, являющиеся параметрами, известны как программе, так и подпрограмме. В данном случае подпрограмма выбирает значения I и Z непосредственно из ячеек памяти. Занесение значений параметров обеспечивает главная программа. Результат работы подпрограммы также помещается в соответствующую ячейку памяти, откуда он выбирается главной программой.

адрес

код

мнемокод

комментарий

00

40

in 0

; ввод z

01

0a

mov b,a

;

02

41

in 1

; ввод n

03

19 1c

stor b,z

; запомнить z

05

31 01

mvi b,1

;

07

19 1e

stor b,I

; i:=1

09

31 00

mvi b,0

; y:=0

0b

20

cycl: push a

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

0c

c0 1f

call power

; вызов п/п вычисления степени

0e

59 1d

adm b,Y

; Y:=Y+Z**I

10

10 1e

load a,I

; \

12

60 01

adi a,1

; > I:=I+1;

14

18 1e

stor a,I

; /

16

28

pop a

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

17

e0 0b

loop a,cycl

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

19

09

mov a,b

; в rA - Y

1a

4a

out 2

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

1b

f8

stop

1c

00

Z: .ds 1

1d

00

Y: .ds 1

1e

00

I: .ds 1

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

; вход: i - показатель степени; z - основание.

; выход: y - z**I

; параметры выбираются по абсолютному адресу

1f

21

power: push b

; сохранить в стеке текущее значение Y

20

31 01

mvi b,1

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

22

10 1e

load a,I

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

24

20

intcyc: push a

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

25

88 1c

mum a,z

; p:=p*z

27

28

pop

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

28

e0 24

loop a,intcyc

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

2a

19 1d

stor b,Y

; запомнить y:=z**I

2c

29

pop b

; восстановить из стека текущее значение суммы

2d

c8

ret

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