Un petit programme sur C-128 qui simule une multiplication binaire par décalage sur 16 bits. Un peu comme peuvent le faire les instructions assembleurs ASL/LSR.
L'output du programme montre les 16 bits, l'équivalent décimal et hexa
Code : Tout sélectionner
00000000 00011101 N= 29 001D
"+" sert à décaler vers la gauche
"-" sert à décaler vers la droite
"1" positionne le 1e bit à 1
Code : Tout sélectionner
10 FAST:DIM A(2,8):T$="0123456789ABCDEF"
20 GOTO 170
30 GET A$:IF A$="" THEN 30
40 IF A$="+" THEN 80
50 IF A$="-" THEN 120
60 IF A$="1" THEN 160
70 GOTO 30
80 C=A(2,1)
90 FOR J=2 TO 1 STEP -1:FOR I=2 TO 8:A(J,I-1)=A(J,I):NEXT I,J:A(2,8)=0
100 A(1,8)=C
110 GOTO 170
120 C=A(1,8)
130 FOR J=1 TO 2:FOR I=8 TO 2 STEP -1:A(J,I)=A(J,I-1):NEXT I,J:A(1,1)=0
140 A(2,1)=C
150 GOTO 170
160 A(2,8)=1
170 SCNCLR:N=0:M=8
180 FOR J=1 TO 2:FOR I=1 TO 8:PRINT RIGHT$(STR$(A(J,I)),1);:IF A(J,I)=1 TH
EN N=N+2^(8-I+M)
190 NEXT I:M=0:PRINT " ";:NEXT J:PRINT " N=";N;" ";
200 N=0
210 FOR J=1 TO 2
220 FOR I=1 TO 4
230 IF A(J,I)=1 THEN N=N+2^(4-I)
240 NEXT I
250 N$=MID$(T$,N+1,1)
260 PRINT N$;:N=0
270 FOR I=5 TO 8:IF A(J,I)=1 THEN N=N+2^(8-I)
280 NEXT I
290 N$=MID$(T$,N+1,1)
300 PRINT N$;:N=0
310 NEXT J
320 GOTO 30