Организация подпрограмм
Организация подпрограмм
Организация подпрограмм
Связь по управлению
Связь по данным
Связь по данным
Связь по данным
Связь по данным
164.00K
Категория: ПрограммированиеПрограммирование

Организация подпрограмм. Программирование на яву. Лекция 5

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

Подпрограмма-некоторый поименованный
участок кода программы синтаксически
оформленный так, что имеется возможность
его вызова из любого места программы.
Назначение подпрограмм:
1. Премирование на более высоком уровне.
2. Уменьшение размеров программы.

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

С целью создания возможности оpганизации
подпpогpамм в аpхитектуpу УМ вклюючены
специальные сpедства:
- pегистp связи L;
- команда " Пеpеход к подпpогpамме "
(jsub);
- команда " Возвpат из подпpогpаммы"
(rsub);
- посылочные команды ldl и stl.

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

Проблемы при работе с подпрограммами:
1. Связь по управлению
2. Связь по данным

4. Связь по управлению

Пример иллюстрирует организацию обращения к
подпрограмме
program Ex41;
var v: Integer;
procedure inc;
begin v:=v+1 end; { inc }
begin v:=1; inc; inc end.

5. Связь по данным

Существуют следующие основные способы
передачи данных между программными
единицами:
- передача данных через регистры (A и X);
- использование общих переменных;
- использование механизма формальных и
фактических параметров.

6. Связь по данным

H
T
T
T
T
T
T
T
Ex42
000 480019
003 000013
006 480019
009 000016
00C 480019
00F 000013
012 FF
T 013 000005
T 016 000007
T
T
T
T
T
T
T
T
T
019
01B
01E
021
024
027
029
02C
02E
AC21
048000
008000
18002F
0C8000
AC20
180032
AC02
4C
T 02F 000001
T 032 000003
E 000
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ex42
start 0
jsub
inc
word
v
;адpес v
jsub
inc
word
w
;адpес w
jsub inc
word
v
;адpес v
hlt
; данные
v
word
5
w
word
7
; подпpогpамма inc
inc
rmo
l,x ;X:="адpес адpеса паpаметpа"
ldx
0,x ;X:="адpес паpаметpа'
lda
0,x ;A:="значение паpаметpа"
add
c1
;A:=A+1
sta
0,x ;"паpаметp" := A
rmo
l,a ; Коppектиpовка
add
c3
;адpеса возвpата
program Ex42;
rmo
a,l ;на длину ТАЗ.
const v: Integer = 5;
rsub
w: Integer = 7;
; данные п/п inc
procedure inc(var i: Integer);
c1
word
1
c3
word
3
begin i:=i+1 end; { inc }
end
Ex42
begin inc(v); inc(w); inc(v) end.
Пример передачи
параметров к
подпрограмме
по адресу

7. Связь по данным

H
T
T
T
T
T
T
T
T
T
T
T
Ex43
000 00001F
003 0C0009
006 480028
009
00C 000022
00F 000022
012 0C0018
015 480028
018
01B 000025
01E FF
T 01F 00000F
T 022
T 025
T
T
T
T
T
T
T
T
028
02A
02D
030
033
035
038
03A
AC21
008000
048003
0C8000
AC20
18003B
AC02
4C
T 03B 000006
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ex43
Связь по данным
start 0
lda
u;вызов copy(u,v)
sta
p11
jsub
copy
p11
resb
3
p12
word
v
lda
v
;вызов copy(v,w)
sta
p21
jsub
copy
p21
resb
3
p22
word
w
hlt
; данные
u
word
15
v
resb
3
w
resb
3
; подпpогpамма copy
copy rmo
l,x ;X := "адрес ТАЗ"
lda
0,x ;A := p1
ldx
3,x ;X := p2
sta
0,x ;p2 := A
rmo
l,a ; Коppектиpовка
add
c6
;адpеса возвpата
rmo
a,l ;на длину ТАЗ.
rsub
; данные п/п copy
c6
word
6
Пример передачи
параметров к
подпрограмме
по адресу и по
значению
program Ex43;
const u: Integer =15;
var v,w: Integer;
procedure copy(x: Integer;
var y: Integer);
begin y:=x end; {copy}
begin copy(u,v); copy(v,w) end.

8. Связь по данным

H
T
T
T
T
T
T
T
T
T
T
T
Ex44
000 00001F
003 0C0009
006 480028
009
00C 0C0022
00F 000022
012 0C0018
015 480028
018
01B 0C0025
01E FF
T 01F 000011
T 022
T 025
T
T
T
T
T
T
T
028
02A
02C
02F
031
034
037
AC21
AC20
18003B
AC02
008000
180038
4C
T 038 000001
T 03B 000003
E 000
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ex44
start 0
lda
u
;v:=inc(u)
sta
p11
jsub
inc
p11
resb
3
sta
v
lda
v
;w:=inc(v)
sta
p21
jsub
inc
p21
resb
3
sta
w
hlt
; данные
u
word
17
v
resb
3
w
resb
3
; подпрограмма-функция inc
inc
rmo
l,x ;X:="адрес ТАЗ"
rmo
l,a ; Корректировка
add
c3
;адреса возврата
rmo
a,l ;на длину ТАЗ.
lda
0,x ;A:=p1
add
c1
rsub
; данные inc
c1
word
1
c3
word
3
end
Ex44
Связь по данным
Пример
организации
подпрограмма,
возвращающих
значение
program Ex44;
const u: Integer = 10;
var v,w: Integer;
function inc(x: Integer): Integer;
begin inc:=x+1 end; { copy }
begin v:=inc(u); w:=inc(v) end.
English     Русский Правила