Amstrad CPC ‘ler ile büyük sayıların çarpımı.

Amstrad CPC’ ler 8 bit olan Z80 mikroişlemcisi ile çalışmaktadır. Z80 nin keni içinde donanımsal çarpma işlemi yapan birime sahip değildir. Z80 8 biraz zorlarsak 16 bit toplama çıkarma 8 bit sağa sola kaydırma işlemleri yapabilmektedir. Tüm çarpma bölme algoritması yazılımsal olarak gerçekleştirilmektedir. Amstradların kendi ROM’ undaki ve Locomotif basic’ in kullandığı çarpa işlemininde sınırları vardır. Belli büyüklükte sayıların çarpımını artık tam sayı olarak değilde üstel olarak vermektedir. Amstrad ile çok büyük sayıların çarpımı yapacak BASiC dilinde yazılmış bir program buldum ve az bir düzenlmeyle Amtradlarda çalışır hale getirdim.

Aşağıda BASiC programı gerçek bir Amtsrad’ da veya herhangi bir Amstrad emülatörde deneyebilirsiniz.

100 REM DEFDBL A-H 
110 REM
120 DIM A(1,31),B(63):H=100000000
130 CLS:
131 FOR I=0 TO 1:M=N:INPUT"* ";P$
132 L=LEN(P$):N= INT(L/8):A(I,N)=VAL(LEFT$(P$,(L MOD 8)))
140 FOR J=1 TO N:A(I,J-1)=VAL(MID$(P$,L-8*J+1,8)): NEXT J:NEXT I 
150 FOR I=0 TO M:E=A(0,I):FOR J=I TO I+N:F=B(J)+E* A(1,J-I)
160 G=INT(F/H):B(J+1)=B(J+1)+G:B(J)=F-G*H:NEXT J:NEXT I
180 PRINT:PRINT:L=M+N+(G=0):PRINT USING"**######";B(L+1);:FOR I=0 TO L 
200 PRINT SPC(-((I MOD 9)<8));RIGHT$(STR$(B(L-I)+H ),8);:NEXT I:END

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.