• Nem Talált Eredményt

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~ 0101

mü 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

- 0100

0041

+t 10

0071 0101

0042 ül 24 0043

0037

0043

Ml,

56

0070.

0100

0044 l +,

50

0057

0045 X-

21 0073

0103

0046

\A\t

56 0072 0100

0047 Jx, 53 0074

0050

i

+ 20 0057 0100

0051 21 0073 0063

0052 M i 51

0076

0101

0053

i

«. 22

0076

0101

0054 Be 07 - 0102

0035

A *

16

0077

0102

1 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.2p

y 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+l

t+15 X, 13

< h

P

t+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