m, m+1 raunkarekeszek
tuk 15-re. Hátránya azonban, Hogy minden egyes cinnél kü
lön fel kell tüntetni a relativ cinezós alapját, ami meg
nehezíti a perforálást, és megkösszabbitja a bevitel ide
jét. A továbbiakban ismertetni fogunk egy másik beinditó- rutint, amely csak olyan cimezósü szubrutinok bevitelére alkalmas, ahol a relativ cineknek egy közös alapjuk van:
a szubrutin első utasításának ciné. Ez a rutin azonban az abszolút cinekkel való bevitelhez képest nem hosszabbitja meg lényegesen a bevitel idejét. Az alábbiakban közölt be- inditórutin, amelyet némileg egyszerűsített formában fo
gunk feli m i , Pekingben készült az ottani M-3 gépre.
A beinditórutin azon a tényen alapszik, hogy mig a jelenlegi M-3 gépen- egy memóriarekesz cime maximálisan 4000 lehet /nyolcas rendszerben/, a szavak első, illetve második cimrészónek hosszúsága 12-12 bit, tehát minden utasítást ábrázoló szóban cinrészenként egy-egy bit /t.i.
a hetedik, illetve tizenkilencedik bit/ feltétlenül zérus.
A relativ cineket az abszolút cinektől úgy különböz
tetjük meg, hogy ha egy utasitás első cime relativ, akkor a hetedik bit, ha a második cin relativ, akkor a tizen
kilencedik bit helyére 1-et Írunk, vagyis minden relativ cinét 4000-el növelünk. Ha a beinditórutin egy utasítás
ban 4000-nél nagyobb cinét talál, akkor ’’tudni fogja” , hogy az illető cin relativ, és 4000-n levonásával /m-nel jelöljük annak a nenóriarekesznek a cinét, amelybe a szub
rutin első utasítását akarjuk bevinni/ kialakítja a meg
felelő abszolút címet. Mindez természetesen csak az utasí
tásokra és az utasitásjellegű konstansokra vonatkozik, a számkonstansokat, amelyeket a beinditórutin használata ese
tén mindig az utasítások és utasitásjellegű konstansok cinéi után következő cinekre viszünk be, a beinditórutin minden változtatás nélkül elhelyezi a megfelelő nunkarekeszékben.
A szabványos szubrutinok szalagjának el ej ere
egy + 00 p d alakú szót kell lyukasztani, ahol d a szabvá
nyos szubrutin utasításainak és konstansainak együttes szá nát, p az utasítások és
utasítás-
jellegű konstansok együt tes számát jelöli.A
beinditórutin használata igen egyszerű. c~ 0101mü rekeszbe beirunk egy + 00 0000 m alakú szót, ahol g annür a rekesznek a cimo, amelybe a szubrutin első utasi-ását
akarjuk bevinni, a gépadóban elhelyezzük a szubrutin szalag ját, majd a 0040 cimü utasítással elkezdjük a beinditórutin végrehajtását.
A beinditórutin a következő:
/0070/ -= + 00 0000 7 7 7 7; /0071/ = * 20 0102 0 0 0 0; /
0072
/ = +00 7777 0000
; /0073/ = + 11 0102 0000»{ /
+ 5-12. /0075/ - + 00 0000 0001;/0074/ = + 00 0100 0000 = 2 , /uu/7'
' ' 7 0-19. /0077/ - + 00 4000 4000;
/
0076
/ = +00 0000 4000
=2
, /00
///-0100, 0102,
0105
nunkarelces zek.0040 Be
07
- 01000041
+t 10
0071 01010042 ül 24 0043
0037
0043
Ml,
560070.
01000044 l +,
50
0057 —0045 X-
21 00730103
0046
\A\t
56 0072 01000047 Jx, 53 0074 —
0050
i
+ 20 0057 01000051 21 0073 0063
0052 M i 51
0076
01010053
i
«. 220076
01010054 Be 07 - 0102
0035
A *
160077
01021 8 8
-0056 0057
l
X, /55 0101
/
0060 + 00 0075 OJ57
0061
i-,
51 0100—mmm
0062 0065
FU /
54 0054 0065
/
0064 + 00 0075 0065
0065 31 0105 —
0066 FU 54 0065 0067
0067 +77 0000 0000
Q. Fejezet.
*
ÉRTELMEZö ÉS KONVERZIÓS SZUBRUTINOK
• ’ -y LOGIKAI /TECHNIKAI/ LEHETŐSÉGEK PÓTLÁSÁRA;.
Az eddigiekben nőm adtunk teljes választ arra, hogyan járhatunk el akkor, ha a transzformációs módszer nem alkalmaz
ható a fixponttal kapcsolatos nehézség megkerülésére. Nem be
széltünk eddig arról sem, hogyan lehet az M—3 gépen komplex számokkal számolni.
Emiitettük azonban, hogy a transzformációs módszere
ken kívül alkalmazhatjuk még a lebegőpontos programozás mód
szerét, s arról is szó volt, hogy ez lényegében nem más, hint egy lebegőpontos gép működésének egy program segítségé
vel történő utánozása. Ugyanis a komplex számokkal való mű
veletek elvégzésére is elkészíthetünk egy programot, mond—
.hatnók úgy is, hogy beprogramozzuk egy olyan feltételezett gép működését, amely komplex számokkal is számol.
Ezeket a programokat célszerű
33
Uonitinokkent hasz—hálni, segítségükkel elérhető, hogy a fixpontos M—3 géppel elvégezhetők legyenek olyan műveletek is, amelyeket a szer
kezetileg bonyolultabb lebegőpontos /illetve a feltételezett komplox számokkal dolgozó gépek végeznek el. Ebben az érte
lemben tehát logikai /technikai/ lehetőségek programok se
gítségével történő pótlásáról van szó.
-190-9.1« Lebegőpontos számolás az M-5 Képen,
Ha egy lebegőpontos gép nüködését akarjuk utánozni, lényegében a gép két egységének, az aritmetikai egységnek és a vezérlőegységnek a nüködését kell programozni.
Nevez-i
zük az aritmetikai egységnek megfelelő programot lebegő
pontos szubrutinnak, a vezérlő egységnek megfelelőt pedig értelmező /interpretáló/ szubrutinnak. A lebegőpontos szub
rutin az alapműveleteket végzi e l , lebegőpontos normali- zált számokkal.
Emlékeztetünk arra, hogy egy x szán kettes számrend
szerbeli lebegőpontos /féllogaritmikus/ nornalizált alakján az *
x = d,2^ alakot értjük, ahol
d = * / A 12~1+...+ < ^o2”^0/ a mantissza
p.2~^°= * /, '• 12”1+...+ ^02~^0/ a kitevő 2"“^° szorosa és
1 = 1 azaz 4 ^ d A 1.
Ha -A ^ = 0, akkor x = 0, /gépi 0/
Tároljuk az igy felirt számot a memória két rekeszé
ben; megállapodásszerüen a mantisszát egy páros, a kitevőt /2~^°-as léptékfaktorral megszorozva/ a rákövetkező párat
lan cinü rekeszben, s jelöljük ezt az /a; a+1/ = x alakkal, ami tehát azt jelenti, hogy /a/ = d, /a+1/ = p.2“^°, ha x = d.2^.
Jelöljük ki a memóriában a P, P+l,
Qa
Q+l rekeszeket.Ezek töltsék be a regiszterek szerepét, mégpedig úgy, hogy
-191-Qí-Q+l feleljen meg az A regislernek, P; P+l pedig a B re- gisztérnék /azaz--níndan^müvelet eredménye maradjon meg P;
/P+l~ben/.
A lebegőpontos szubrutin a. következő részekből áll:
a. / normálizáló szubrutin,
b. / lebegőpontos szorzás szubrutinja,
c. / ” osztás ” ,
d. / M összeadás, kivonás szubrutinja.
Minden művelet után átadjuk a vezérlést a normalizáló szubrutinnak. .
a./ Normalizáló szubrutin.
Ha két normalizált számmal végzünk valamilyen arit
metikai műveletet az eredmény általában nem lesz normali- zált. El kell késziteni tehát egy normalizáló szubrutint, azaz egy olyan szubrutint, amely egy x = d,2p ; d ^ i szá-mot olyan alakra hoz, hogy 1 d
^-1
legyen.A normalizáló szubrutint úgy készítjük el, hogy min
dig a ”B regiszter” tartalmát, tehát /P; P+l/-t normalizál—
ja. ’•
A szubrutin blokkdiagramját a XVI. táblán láthatjuk.
Program:
t i - !» 51 <2~Jo) P
t+1 PU 34 t+7 t+2
t+2
!-f.
5.1 /1 \< 2 / P
t+3 PU 34 í:+4 t+7
t+4 — 01. < 2_5o5 P+l
t+5
i
02> \2 / P
t+6 U2 7 4 , t+2
t+7 /kiugrató u ta s itá s helye/
1 9 2
-£-»/ A lebegőpontos szorzás /z = xy/.
Ha /P; P+l/ = x ss a.2 p és /Q; Q+l/ s y = b.2^, akkor z = xy = a*2p b.2^ = ab*2p+q- ©2*“ ---> /p » p+1/
ahol c = ab r = p+q,
Tehát a szorzást úgy végezzük el, hogy a mantisszá
kat összeszorozzuk s a kitevőket összeadjuk:
/P/./Q/ ---- » P
/P+l/ 4■ /Q+l/ — — » P+l
/
Program:
t+10 + 00 Q+l P+l +-- p+q
t+11 X 03 Q P í-- ab
t+12 U2 74 - t normalizálás
c./ A lebegőpontos osztás /z=
Ha /P; P+l/ =
x
= a.2p és /Q; Q+l/ ==7
= b.2^, akkor _ x a.2py b.2q
a
“ b . 2p”q c 2r x /P; P+l/
" ”7
ahol c = | r = p-q.
Minthogy j ^ a é 1 és j é l ) ¿ 1 , ezért előfordul—
h a t , hogy
! § » > !
Ha viszont x = a.2p-t x = Ip2p+P = a*2p+^ alakra hozzuk, akkor nyilván
i t W -Tehát az osztást
z = | = *§f2p+1“<l --- » /Pj p+i/
alapján végezzük el, azaz
-193-\ / * f 7q7—
Program:
•* p : /P+l/ + 1 - / Q + V P+l
t+13 * 11 Qfl P+l
t+14
i>
+ 20 < 2 -3№ P+lt+15 X, 13
< h
Pt+16 / •1 . 22 Q -P
t+17 U2 74 - t normalizálás
d./ Lebegőpontos összeadás és kivonás.
Legyen /P; P+l/ a x = a,2p és /Q; Q+l/ = y = b,2q . Ekkor az összeadást /illetve a kivonást/ a
z = x - y = a.2p - b.2^- = c.2]
*
/Ps P+l/képlet alapján célszerű elvégezni, ahol r = max /p»q/ + 1 és
í§ “ ^ ka P > q> ahol h ’ = h.2 ^p ^
C
jy ha p < q, ahol a ’ = a.2*"^^“^
A mantisszák felezésére, s ennek megfelelően a kö
zös kitevő eggyel -'aló növelésére a túlcsordulás elkerülése végett van szükség, hiszen, jy £ a <í 1 és k "b 1 miatt
ja + h ( > l is előfordulhat.
Tehát az összeadást /illetve a kivonást/ úgy végez
zük el, hogy a két számot az r = mák /q;p/ + 1 közös kitevő
re hozzuk, majd a felezett mantisszákat összeadjuk, /illet
ve kivonjuk/ s az eredmény kitevője a közös kitevő lesz.
Ha valamelyik összeadandó 0 /azaz mantisszája gépi 0/ akkor az összeadást nem végezzük el, az eredmény a